Files
swift-estimated-pressures-core/Tests/PressureEstimationsFeatureTests/EquipmentMeasurementFormTests.swift
2024-07-08 11:57:12 -04:00

139 lines
3.8 KiB
Swift

import ComposableArchitecture
@testable import PressureEstimationsFeature
import SharedModels
import Testing
import XCTest
struct EquipmentMeasurementFormStateTests {
@Test(
"Validatons",
.tags(.equipmentMeasurementForm)
)
func validations() async throws {
var state = EquipmentMeasurementForm.State(
sharedSettings: Shared(SharedPressureEstimationState())
)
#expect(state.isValid == false)
state.measurements.airflow = 1200
state.measurements.returnPlenumPressure = 0.2
state.measurements.supplyPlenumPressure = 0.3
#expect(state.isValid == true)
state.equipmentType = .furnaceAndCoil
#expect(state.isValid == false)
state.measurements.postFilterPressure = 0.5
state.measurements.coilPressure = 0.3
#expect(state.isValid == true)
}
@Test(
"Measurement initialization with EquipmentMeasurement",
.tags(.equipmentMeasurementForm),
arguments: [
EquipmentMeasurement.mock(type: .airHandler),
EquipmentMeasurement.mock(type: .furnaceAndCoil),
]
)
func measurementConversions(equipmentMeasurement: EquipmentMeasurement) {
let measurement = EquipmentMeasurementForm.State.Measurements(
equipmentMeasurement: equipmentMeasurement
)
#expect(measurement.equipmentMeasurement(type: equipmentMeasurement.equipmentType) == equipmentMeasurement)
}
@Test(
"Measurement to EquipmentMeasurement",
.tags(.equipmentMeasurementForm)
)
func measurementToEquipmentMeasurement() {
let measurement = EquipmentMeasurementForm.State.Measurements()
var equipmentMeasurement = EquipmentMeasurement.airHandler(
EquipmentMeasurement.AirHandler(
airflow: 0,
manufacturersIncludedFilterPressureDrop: 0.1,
returnPlenumPressure: 0,
postFilterPressure: 0,
postCoilPressure: 0,
supplyPlenumPressure: 0
)
)
#expect(measurement.equipmentMeasurement(type: .airHandler) == equipmentMeasurement)
equipmentMeasurement = .furnaceAndCoil(
EquipmentMeasurement.FurnaceAndCoil(
airflow: 0.0,
manufacturersIncludedFilterPressureDrop: 0,
returnPlenumPressure: 0,
postFilterPressure: 0,
preCoilPressure: 0,
supplyPlenumPressure: 0
)
)
#expect(measurement.equipmentMeasurement(type: .furnaceAndCoil) == equipmentMeasurement)
}
// @Test()
// func promptAndLabel() {
// let store = Store(
// initialState: EquipmentMeasurementForm.State(
// sharedSettings: Shared(SharedPressureEstimationState())
// ),
// reducer: EquipmentMeasurementForm.init
// )
//
// }
}
final class EquipmentMeasurementFormReducerTests: XCTestCase {
@MainActor
func testReducer() async throws {
let store = TestStore(
initialState: EquipmentMeasurementForm.State(
sharedSettings: Shared(SharedPressureEstimationState(
equipmentMeasurement: .mock(type: .airHandler)
))
),
reducer: EquipmentMeasurementForm.init
)
await store.send(.view(.onAppear)) {
$0.measurements = .init(equipmentMeasurement: .mock(type: .airHandler))
}
await store.send(.binding(.set(\.focusedField, .airflow))) {
$0.focusedField = .airflow
}
await store.send(.view(.nextButtonTapped)) {
$0.destination = .flaggedMeasurementsList(.init(
sharedSettings: Shared(SharedPressureEstimationState(
equipmentMeasurement: .mock(type: .airHandler)
))
))
}
await store.send(.destination(.dismiss)) {
$0.destination = nil
}
await store.send(.view(.resetButtonTapped)) {
$0.measurements = .init()
}
store.exhaustivity = .off
await store.send(.view(.infoButtonTapped))
await store.finish()
}
}
extension Tag {
@Tag static var equipmentMeasurementForm: Self
}