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)
|
||||
LabeledContent("Owners", value: String(viewModel.vehicle.ownershipPeriods.count))
|
||||
.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,17 +43,13 @@ class ReportViewModel: ACHudContainer {
|
||||
|
||||
init(vehicle: VehicleDto) {
|
||||
self.vehicle = vehicle
|
||||
self.loadVehicle()
|
||||
}
|
||||
|
||||
func loadVehicle() {
|
||||
|
||||
Task {
|
||||
do {
|
||||
vehicle = try await storageService.loadVehicle(number: vehicle.getNumber())
|
||||
} catch {
|
||||
hud = .error(error)
|
||||
}
|
||||
func loadVehicle() async {
|
||||
do {
|
||||
vehicle = try await storageService.loadVehicle(number: vehicle.getNumber())
|
||||
} catch {
|
||||
hud = .error(error)
|
||||
}
|
||||
}
|
||||
|
||||
@ -68,4 +64,16 @@ class ReportViewModel: ACHudContainer {
|
||||
func openOwners() {
|
||||
coordinator?.openOwners(ownerships: vehicle.ownershipPeriods)
|
||||
}
|
||||
|
||||
func openPhotoGallery() {
|
||||
|
||||
}
|
||||
|
||||
func openNotes() {
|
||||
|
||||
}
|
||||
|
||||
func openAds() {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -155,6 +155,12 @@ extension VehicleDto: Exportable {
|
||||
|
||||
extension VehicleDto {
|
||||
|
||||
// For testing
|
||||
public init(number: String, color: String? = nil) {
|
||||
self.number = number
|
||||
self.color = color
|
||||
}
|
||||
|
||||
public func getNumber() -> String {
|
||||
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