// // StorageServiceTests+Notes.swift // AutoCatCoreTests // // Created by Selim Mustafaev on 13.12.2024. // Copyright © 2024 Selim Mustafaev. All rights reserved. // import Testing import AutoCatCore extension StorageServiceTests { @Test("Add note to vehicle") func addNote() async throws { let vehicle = try await storageService.addNote(text: noteText, to: existingVehicleNumber) #expect(vehicle.number == existingVehicleNumber) #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: nonExistingVehicleNumber) } } @Test("Edit note") func editNote() async throws { let newNoteText = "New test text" var vehicle = try await storageService.addNote(text: noteText, to: existingVehicleNumber) let note = try #require(vehicle.notes.first { $0.text == noteText }) vehicle = try await storageService.editNote(id: note.id, text: newNoteText, for: existingVehicleNumber) #expect(vehicle.number == existingVehicleNumber) #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: nonExistingVehicleNumber) } } @Test("Edit non-existent note") func editNonExistentNote() async throws { await #expect(throws: StorageError.noteNotFound) { _ = try await storageService.editNote(id: "", text: "", for: existingVehicleNumber) } } @Test("Delete note") func deleteNote() async throws { var vehicle = try await storageService.addNote(text: noteText, to: existingVehicleNumber) let note = try #require(vehicle.notes.first { $0.text == noteText }) vehicle = try await storageService.deleteNote(id: note.id, for: existingVehicleNumber) #expect(vehicle.number == existingVehicleNumber) #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: nonExistingVehicleNumber) } } @Test("Delete non-existent note") func deleteNonExistentNote() async throws { await #expect(throws: StorageError.noteNotFound) { _ = try await storageService.deleteNote(id: "", for: existingVehicleNumber) } } }