AutoCat/AutoCatTests/EventsTests.swift

70 lines
2.1 KiB
Swift

//
// 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)
}
}