// // ReportTests.swift // AutoCatTests // // Created by Selim Mustafaev on 02.12.2024. // Copyright © 2024 Selim Mustafaev. All rights reserved. // import Testing import Mockable import AutoCatCore @testable import AutoCat @MainActor struct ReportTests { let existingVehicleNumber = "А123АА761" let nonExistingVehicleNumber = "А999АА761" let testColor = "testColor" var storageServiceMock: MockStorageServiceProtocol var viewModel: ReportViewModel init() { storageServiceMock = MockStorageServiceProtocol() ServiceContainer.shared.register(StorageServiceProtocol.self, instance: storageServiceMock) viewModel = ReportViewModel(vehicle: VehicleDto()) } @Test("Load vehicle detail") func loadVehicleDetail() async throws { let incompleteVehicleModel = VehicleDto(number: existingVehicleNumber) let fullVehicleModel = VehicleDto(number: existingVehicleNumber, color: testColor) viewModel.vehicle = incompleteVehicleModel #expect(viewModel.vehicle.color == nil) given(storageServiceMock) .loadVehicle(number: .value(existingVehicleNumber)) .willReturn(fullVehicleModel) await viewModel.loadVehicle() #expect(viewModel.vehicle.color == testColor) #expect(viewModel.hud == nil) } @Test("Load vehicle error") func loadVehicleError() async throws { given(storageServiceMock) .loadVehicle(number: .any) .willThrow(StorageError.vehicleNotFound) await viewModel.loadVehicle() #expect(viewModel.hud == .error(StorageError.vehicleNotFound)) } }