88 lines
2.7 KiB
Swift
88 lines
2.7 KiB
Swift
//
|
||
// 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
|
||
class ReportTests {
|
||
|
||
let existingVehicleNumber = "А123АА761"
|
||
let nonExistingVehicleNumber = "А999АА761"
|
||
let testColor = "testColor"
|
||
|
||
var storageServiceMock: MockStorageServiceProtocol
|
||
var settingsServiceMock: MockSettingsServiceProtocol
|
||
|
||
var viewModel: ReportViewModel
|
||
|
||
init() {
|
||
storageServiceMock = MockStorageServiceProtocol()
|
||
settingsServiceMock = MockSettingsServiceProtocol()
|
||
|
||
ServiceContainer.shared.register(StorageServiceProtocol.self, instance: storageServiceMock)
|
||
ServiceContainer.shared.register(SettingsServiceProtocol.self, instance: settingsServiceMock)
|
||
viewModel = ReportViewModel(vehicle: VehicleDto(), isPersistent: true)
|
||
}
|
||
|
||
@Test("Load vehicle detail")
|
||
func loadVehicleDetail() async throws {
|
||
|
||
let incompleteVehicleModel = VehicleDto(number: existingVehicleNumber)
|
||
let fullVehicleModel = VehicleDto(number: existingVehicleNumber, color: testColor)
|
||
|
||
viewModel = ReportViewModel(vehicle: incompleteVehicleModel, isPersistent: true)
|
||
|
||
#expect(viewModel.vehicle.color == nil)
|
||
|
||
given(storageServiceMock)
|
||
.loadVehicle(number: .value(existingVehicleNumber))
|
||
.willReturn(fullVehicleModel)
|
||
|
||
await viewModel.onAppear()
|
||
|
||
verify(storageServiceMock)
|
||
.loadVehicle(number: .value(existingVehicleNumber))
|
||
.called(.once)
|
||
|
||
#expect(viewModel.vehicle.color == testColor)
|
||
#expect(viewModel.hud == nil)
|
||
}
|
||
|
||
@Test("Load vehicle error")
|
||
func loadVehicleError() async throws {
|
||
|
||
viewModel = ReportViewModel(vehicle: VehicleDto(), isPersistent: true)
|
||
|
||
given(storageServiceMock)
|
||
.loadVehicle(number: .any)
|
||
.willThrow(StorageError.vehicleNotFound)
|
||
|
||
await viewModel.onAppear()
|
||
|
||
verify(storageServiceMock)
|
||
.loadVehicle(number: .any)
|
||
.called(.once)
|
||
|
||
#expect(viewModel.hud == .error(StorageError.vehicleNotFound))
|
||
}
|
||
|
||
@Test("Show debug info", arguments: [true, false])
|
||
func showDebugInfo(value: Bool) async throws {
|
||
|
||
viewModel = ReportViewModel(vehicle: VehicleDto(), isPersistent: false)
|
||
|
||
given(settingsServiceMock)
|
||
.showDebugInfo.willReturn(value)
|
||
|
||
#expect(viewModel.showDebugInfo == value)
|
||
}
|
||
}
|