// // SwiftDataStorageServiceTests+Events.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 event") func addEvent() async throws { let event = VehicleEventDto(lat: testLat, lon: testLon, addedBy: nil) let vehicle = try await storageService.add(event: event, to: VehicleDto.validNumber) #expect(vehicle.events.count == 1) #expect(vehicle.events.first?.latitude == testLat) #expect(vehicle.events.first?.longitude == testLon) #expect(vehicle.updatedDate != 0) } @Test("Add event to non-existent vehicle") func addEventToNonExistentVehicle() async throws { let event = VehicleEventDto(lat: testLat, lon: testLon, addedBy: nil) await #expect(throws: StorageError.vehicleNotFound) { _ = try await storageService.add(event: event, to: "") } } @Test("Remove event") func removeEvent() async throws { let event = VehicleEventDto(lat: testLat, lon: testLon, addedBy: nil) var vehicle = try await storageService.add(event: event, to: VehicleDto.validNumber) let id = try #require(vehicle.events.first { $0.latitude == testLat && $0.longitude == testLon }?.id) vehicle = try await storageService.remove(event: id, from: VehicleDto.validNumber) #expect(vehicle.events.isEmpty) #expect(vehicle.updatedDate != 0) } @Test("Remove event from non-existent vehicle") func removeEventFromNonExistentVehicle() async throws { await #expect(throws: StorageError.vehicleNotFound) { _ = try await storageService.remove(event: "", from: "") } } @Test("Remove non-existent event") func removeNonExistentEvent() async throws { await #expect(throws: StorageError.eventNotFound) { _ = try await storageService.remove(event: "", from: VehicleDto.validNumber) } } @Test("Edit event") func editEvent() async throws { let event = VehicleEventDto(lat: 0, lon: 0, addedBy: nil) var vehicle = try await storageService.add(event: event, to: VehicleDto.validNumber) var editedEvent = VehicleEventDto(lat: testLat, lon: testLon, addedBy: nil) editedEvent.id = try #require(vehicle.events.first?.id) _ = try await storageService.edit(event: editedEvent, for: VehicleDto.validNumber) vehicle = try await storageService.loadVehicle(number: VehicleDto.validNumber) let resultEvent = try #require(vehicle.events.first { $0.id == editedEvent.id }) #expect(resultEvent.latitude == testLat && resultEvent.longitude == testLon) #expect(vehicle.events.count == 1) #expect(vehicle.updatedDate != 0) } @Test("Edit non-existent event") func editNonExistentEvent() async throws { let event = VehicleEventDto(lat: 0, lon: 0, addedBy: nil) await #expect(throws: StorageError.eventNotFound) { _ = try await storageService.edit(event: event, for: VehicleDto.validNumber) } } @Test("Edit event in non-existent vehicle") func editEventInNonExistentVehicle() async throws { let event = VehicleEventDto(lat: 0, lon: 0, addedBy: nil) await #expect(throws: StorageError.vehicleNotFound) { _ = try await storageService.edit(event: event, for: "") } } }