// // EventsTests.swift // AutoCatTests // // Created by Selim Mustafaev on 18.12.2024. // Copyright © 2024 Selim Mustafaev. All rights reserved. // import Testing import Mockable import AutoCatCore @testable import AutoCat @MainActor struct EventsTests { var settingsServiceMock: MockSettingsServiceProtocol var storageServiceMock: MockStorageServiceProtocol var apiServiceMock: MockApiServiceProtocol var viewModel: EventsViewModel lazy var vehicleWithEvent: VehicleDto = .normal.addEvent(.valid) init() { settingsServiceMock = MockSettingsServiceProtocol() storageServiceMock = MockStorageServiceProtocol() apiServiceMock = MockApiServiceProtocol() ServiceContainer.shared.register(SettingsServiceProtocol.self, instance: settingsServiceMock) ServiceContainer.shared.register(StorageServiceProtocol.self, instance: storageServiceMock) ServiceContainer.shared.register(ApiServiceProtocol.self, instance: apiServiceMock) viewModel = EventsViewModel(vehicle: VehicleDto()) given(settingsServiceMock) .user.willReturn(User()) } @Test("Add event") mutating func addEvent() async throws { given(apiServiceMock) .add(event: .value(.valid), to: .value(VehicleDto.validNumber)) .willReturn(vehicleWithEvent) given(storageServiceMock) .updateVehicleIfExists(dto: .value(vehicleWithEvent)) .willReturn() viewModel = EventsViewModel(vehicle: .normal) await viewModel.addEvent(.valid) verify(apiServiceMock) .add(event: .any, to: .any).called(.once) verify(storageServiceMock) .updateVehicleIfExists(dto: .any).called(.once) #expect(viewModel.vehicle.events.count == 1) #expect(viewModel.vehicle.events.first?.id == VehicleEventDto.validId) #expect(viewModel.events.count == 1) #expect(viewModel.events.first?.id == VehicleEventDto.validId) #expect(viewModel.hud == nil) } }