diff --git a/AutoCat/Screens/EventsScreen/EventsViewModel.swift b/AutoCat/Screens/EventsScreen/EventsViewModel.swift index 9b2c928..d5d7335 100644 --- a/AutoCat/Screens/EventsScreen/EventsViewModel.swift +++ b/AutoCat/Screens/EventsScreen/EventsViewModel.swift @@ -90,7 +90,7 @@ class EventsViewModel: ACHudContainer { func deleteEvent(_ event: EventModel) async { await eventOperation { - try await self.storageService.deleteNote(id: event.id, for: self.vehicle.getNumber()) + try await self.storageService.remove(event: event.id, from: self.vehicle.getNumber()) } apiOperation: { try await self.apiService.remove(event: event.id) } diff --git a/AutoCatCoreTests/Storage/StorageServiceTests.swift b/AutoCatCoreTests/Storage/StorageServiceTests.swift index c81bf0f..fe115af 100644 --- a/AutoCatCoreTests/Storage/StorageServiceTests.swift +++ b/AutoCatCoreTests/Storage/StorageServiceTests.swift @@ -21,7 +21,7 @@ struct StorageServiceTests { let testLat: Double = 42 let testLon: Double = 24 - let settingsServiceMock = MockSettingsServiceProtocol() + let settingsServiceMock: MockSettingsServiceProtocol let storageService: StorageService init() async throws { @@ -29,6 +29,7 @@ struct StorageServiceTests { var config: Realm.Configuration = .defaultConfiguration config.inMemoryIdentifier = UUID().uuidString + settingsServiceMock = MockSettingsServiceProtocol() await ServiceContainer.shared.register(SettingsServiceProtocol.self, instance: settingsServiceMock) self.storageService = try await StorageService(config: config) diff --git a/AutoCatTests/EventsTests.swift b/AutoCatTests/EventsTests.swift index 6e98cf9..3d65178 100644 --- a/AutoCatTests/EventsTests.swift +++ b/AutoCatTests/EventsTests.swift @@ -77,4 +77,42 @@ struct EventsTests { #expect(viewModel.events.first?.id == VehicleEventDto.validId) #expect(viewModel.hud == nil) } + + @Test("Delete event", arguments: [true, false]) + mutating func deleteEvent(isUnrecognized: Bool) async throws { + + let vehicleWithEvent: VehicleDto = isUnrecognized ? unrecognizedVehicleWithEvent : vehicleWithEvent + let vehicle: VehicleDto = isUnrecognized ? .unrecognized : .normal + + given(apiServiceMock) + .remove(event: .value(VehicleEventDto.validId)) + .willReturn(.normal) + + given(storageServiceMock) + .updateVehicleIfExists(dto: .value(vehicle)) + .willReturn() + + given(storageServiceMock) + .remove(event: .value(VehicleEventDto.validId), from: .value(VehicleDto.validNumber)) + .willReturn(.unrecognized) + + viewModel = EventsViewModel(vehicle: vehicleWithEvent) + await viewModel.deleteEvent(VehicleEventDto.valid.viewModel) + + verify(apiServiceMock) + .remove(event: .any) + .called(isUnrecognized ? .never : .once) + + verify(storageServiceMock) + .updateVehicleIfExists(dto: .any) + .called(isUnrecognized ? .never : .once) + + verify(storageServiceMock) + .remove(event: .any, from: .any) + .called(isUnrecognized ? .once : .never) + + #expect(viewModel.vehicle.events.isEmpty) + #expect(viewModel.events.isEmpty) + #expect(viewModel.hud == nil) + } }