Adding few test for report screen
This commit is contained in:
parent
22e5ca764e
commit
c125f9ffab
@ -58,8 +58,17 @@ struct ReportScreen: View {
|
|||||||
.navigationLink(onTap: viewModel.openOsago)
|
.navigationLink(onTap: viewModel.openOsago)
|
||||||
LabeledContent("Owners", value: String(viewModel.vehicle.ownershipPeriods.count))
|
LabeledContent("Owners", value: String(viewModel.vehicle.ownershipPeriods.count))
|
||||||
.navigationLink(onTap: viewModel.openOwners)
|
.navigationLink(onTap: viewModel.openOwners)
|
||||||
|
LabeledContent("Photos", value: String(viewModel.vehicle.photos.count))
|
||||||
|
.navigationLink(onTap: viewModel.openPhotoGallery)
|
||||||
|
LabeledContent("Ads", value: String(viewModel.vehicle.ads.count))
|
||||||
|
.navigationLink(onTap: viewModel.openAds)
|
||||||
|
LabeledContent("Notes", value: String(viewModel.vehicle.notes.count))
|
||||||
|
.navigationLink(onTap: viewModel.openNotes)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.onAppear {
|
||||||
|
Task { await viewModel.loadVehicle() }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -43,19 +43,15 @@ class ReportViewModel: ACHudContainer {
|
|||||||
|
|
||||||
init(vehicle: VehicleDto) {
|
init(vehicle: VehicleDto) {
|
||||||
self.vehicle = vehicle
|
self.vehicle = vehicle
|
||||||
self.loadVehicle()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func loadVehicle() {
|
func loadVehicle() async {
|
||||||
|
|
||||||
Task {
|
|
||||||
do {
|
do {
|
||||||
vehicle = try await storageService.loadVehicle(number: vehicle.getNumber())
|
vehicle = try await storageService.loadVehicle(number: vehicle.getNumber())
|
||||||
} catch {
|
} catch {
|
||||||
hud = .error(error)
|
hud = .error(error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
func openEvents() {
|
func openEvents() {
|
||||||
coordinator?.openEvents(vehicle: vehicle)
|
coordinator?.openEvents(vehicle: vehicle)
|
||||||
@ -68,4 +64,16 @@ class ReportViewModel: ACHudContainer {
|
|||||||
func openOwners() {
|
func openOwners() {
|
||||||
coordinator?.openOwners(ownerships: vehicle.ownershipPeriods)
|
coordinator?.openOwners(ownerships: vehicle.ownershipPeriods)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func openPhotoGallery() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func openNotes() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func openAds() {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -155,6 +155,12 @@ extension VehicleDto: Exportable {
|
|||||||
|
|
||||||
extension VehicleDto {
|
extension VehicleDto {
|
||||||
|
|
||||||
|
// For testing
|
||||||
|
public init(number: String, color: String? = nil) {
|
||||||
|
self.number = number
|
||||||
|
self.color = color
|
||||||
|
}
|
||||||
|
|
||||||
public func getNumber() -> String {
|
public func getNumber() -> String {
|
||||||
return self.number
|
return self.number
|
||||||
}
|
}
|
||||||
|
|||||||
63
AutoCatTests/ReportTests.swift
Normal file
63
AutoCatTests/ReportTests.swift
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
//
|
||||||
|
// 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))
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user