Adding tests for deleting events

This commit is contained in:
Selim Mustafaev 2024-12-23 18:29:49 +03:00
parent 883df92484
commit 96ebf45dcc
3 changed files with 41 additions and 2 deletions

View File

@ -90,7 +90,7 @@ class EventsViewModel: ACHudContainer {
func deleteEvent(_ event: EventModel) async { func deleteEvent(_ event: EventModel) async {
await eventOperation { 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: { } apiOperation: {
try await self.apiService.remove(event: event.id) try await self.apiService.remove(event: event.id)
} }

View File

@ -21,7 +21,7 @@ struct StorageServiceTests {
let testLat: Double = 42 let testLat: Double = 42
let testLon: Double = 24 let testLon: Double = 24
let settingsServiceMock = MockSettingsServiceProtocol() let settingsServiceMock: MockSettingsServiceProtocol
let storageService: StorageService let storageService: StorageService
init() async throws { init() async throws {
@ -29,6 +29,7 @@ struct StorageServiceTests {
var config: Realm.Configuration = .defaultConfiguration var config: Realm.Configuration = .defaultConfiguration
config.inMemoryIdentifier = UUID().uuidString config.inMemoryIdentifier = UUID().uuidString
settingsServiceMock = MockSettingsServiceProtocol()
await ServiceContainer.shared.register(SettingsServiceProtocol.self, instance: settingsServiceMock) await ServiceContainer.shared.register(SettingsServiceProtocol.self, instance: settingsServiceMock)
self.storageService = try await StorageService(config: config) self.storageService = try await StorageService(config: config)

View File

@ -77,4 +77,42 @@ struct EventsTests {
#expect(viewModel.events.first?.id == VehicleEventDto.validId) #expect(viewModel.events.first?.id == VehicleEventDto.validId)
#expect(viewModel.hud == nil) #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)
}
} }