AutoCat/AutoCatCoreTests/SwiftData/SwiftDataStorageServiceTests+Notes.swift

91 lines
3.0 KiB
Swift

//
// SwiftDataStorageServiceTests+Notes.swift
// AutoCatCoreTests
//
// Created by Selim Mustafaev on 13.06.2025.
// Copyright © 2025 Selim Mustafaev. All rights reserved.
//
import Testing
import AutoCatCore
extension SwiftDataStorageServiceTests {
@Test("Add note to vehicle")
func addNote() async throws {
let vehicle = try await storageService.addNote(text: noteText, to: VehicleDto.validNumber)
#expect(vehicle.number == VehicleDto.validNumber)
#expect(vehicle.notes.contains { $0.text == noteText })
}
@Test("Adding note to non-existent vehicle")
func addNoteError() async throws {
await #expect(throws: StorageError.vehicleNotFound) {
_ = try await storageService.addNote(text: noteText, to: "")
}
}
@Test("Edit note")
func editNote() async throws {
let newNoteText = "New test text"
var vehicle = try await storageService.addNote(text: noteText, to: VehicleDto.validNumber)
let note = try #require(vehicle.notes.first { $0.text == noteText })
_ = try await storageService.editNote(id: note.id, text: newNoteText, for: VehicleDto.validNumber)
vehicle = try await storageService.loadVehicle(number: VehicleDto.validNumber)
#expect(vehicle.number == VehicleDto.validNumber)
#expect(vehicle.notes.contains { $0.text == newNoteText })
#expect(!vehicle.notes.contains { $0.text == noteText })
}
@Test("Edit note of non-existent vehicle")
func addNoteNonExistentVehicle() async throws {
await #expect(throws: StorageError.vehicleNotFound) {
_ = try await storageService.editNote(id: "", text: "", for: "")
}
}
@Test("Edit non-existent note")
func editNonExistentNote() async throws {
await #expect(throws: StorageError.noteNotFound) {
_ = try await storageService.editNote(id: "", text: "", for: VehicleDto.validNumber)
}
}
@Test("Delete note")
func deleteNote() async throws {
var vehicle = try await storageService.addNote(text: noteText, to: VehicleDto.validNumber)
let note = try #require(vehicle.notes.first { $0.text == noteText })
vehicle = try await storageService.deleteNote(id: note.id, for: VehicleDto.validNumber)
#expect(vehicle.number == VehicleDto.validNumber)
#expect(!vehicle.notes.contains { $0.text == noteText })
}
@Test("Delete note from non-existent vehicle")
func deleteNoteNonExistentVehicle() async throws {
await #expect(throws: StorageError.vehicleNotFound) {
_ = try await storageService.deleteNote(id: "", for: "")
}
}
@Test("Delete non-existent note")
func deleteNonExistentNote() async throws {
await #expect(throws: StorageError.noteNotFound) {
_ = try await storageService.deleteNote(id: "", for: VehicleDto.validNumber)
}
}
}