diff --git a/Sources/PressureEstimationsFeature/EquipmentSettingsForm.swift b/Sources/PressureEstimationsFeature/EquipmentSettingsForm.swift index 10ef2aa..458e01e 100644 --- a/Sources/PressureEstimationsFeature/EquipmentSettingsForm.swift +++ b/Sources/PressureEstimationsFeature/EquipmentSettingsForm.swift @@ -91,15 +91,15 @@ public struct EquipmentSettingsForm { switch action { case .binding(\.maxStaticPressure): - handleStaticPressure(\.maximum, \.maxStaticPressure, &state) + state.sharedSettings.handleStaticPressure(\.maximum, state.maxStaticPressure) return .none case .binding(\.minStaticPressure): - handleStaticPressure(\.minimum, \.minStaticPressure, &state) + state.sharedSettings.handleStaticPressure(\.maximum, state.minStaticPressure) return .none case .binding(\.ratedStaticPressure): - handleStaticPressure(\.rated, \.ratedStaticPressure, &state) + state.sharedSettings.handleStaticPressure(\.rated, state.ratedStaticPressure) return .none case .binding: @@ -132,19 +132,18 @@ public struct EquipmentSettingsForm { } .ifLet(\.$destination, action: \.destination) } - - private func handleStaticPressure( - _ staticKeyPath: WritableKeyPath, - _ stateKeyPath: KeyPath, - _ state: inout State - ) { - let value = state[keyPath: stateKeyPath] - state.sharedSettings.equipmentMetadata.ratedStaticPressures[keyPath: staticKeyPath] = value ?? 0 - - } } +extension SharedPressureEstimationState { + mutating func handleStaticPressure( + _ keyPath: WritableKeyPath, + _ value: Double? + ) { + equipmentMetadata.ratedStaticPressures[keyPath: keyPath] = value ?? 0 + } +} + @ViewAction(for: EquipmentSettingsForm.self) public struct EquipmentSettingsFormView: View { @@ -256,12 +255,6 @@ public struct EquipmentSettingsFormView: View { Section { VStack(alignment: .leading) { -// HStack { -// TextLabel("Includes Filter Drop") -// Spacer() -// Toggle("Includes Filter Drop", isOn: $store.includesFilterDrop) -// } -// if store.includesFilterDrop { HStack { TextLabel("Filter Drop") Spacer() @@ -273,7 +266,6 @@ public struct EquipmentSettingsFormView: View { .decimalPad() .padding(.leading, 40) } -// } } } header: { header(infoView: .manufacturersIncludedFilterPressureDrop) { diff --git a/Tests/PressureEstimationsFeatureTests/EquipmentSettingsFormTests.swift b/Tests/PressureEstimationsFeatureTests/EquipmentSettingsFormTests.swift new file mode 100644 index 0000000..5f6b33f --- /dev/null +++ b/Tests/PressureEstimationsFeatureTests/EquipmentSettingsFormTests.swift @@ -0,0 +1,39 @@ +import ComposableArchitecture +@testable import PressureEstimationsFeature +import Testing +import XCTest + +struct EquipmentSettingsFormStateTests { + + @Test( + "Ensure setting static pressure", + .tags(.equipmentSettingsForm), + arguments: [Optional(42), nil] + ) + func setStaticPressure(staticPressure: Double?) { + var sharedSettings = SharedPressureEstimationState() + + sharedSettings.handleStaticPressure(\.maximum, staticPressure) + sharedSettings.handleStaticPressure(\.minimum, staticPressure) + sharedSettings.handleStaticPressure(\.rated, staticPressure) + + if let staticPressure { + #expect(sharedSettings.equipmentMetadata.ratedStaticPressures.maximum == staticPressure) + #expect(sharedSettings.equipmentMetadata.ratedStaticPressures.minimum == staticPressure) + #expect(sharedSettings.equipmentMetadata.ratedStaticPressures.rated == staticPressure) + } else { + #expect(sharedSettings.equipmentMetadata.ratedStaticPressures.maximum == 0) + #expect(sharedSettings.equipmentMetadata.ratedStaticPressures.minimum == 0) + #expect(sharedSettings.equipmentMetadata.ratedStaticPressures.rated == 0) + } + } +} + +final class EquipmentSettingsFormTests: XCTestCase { + + +} + +extension Tag { + @Tag static var equipmentSettingsForm: Self +}