Skip to content

Commit f55dac2

Browse files
authored
LOOP-4769 Premeal Storage (#698)
* Store premeal activations in overrides storage * Remove test of old behavior, and cleanup unused code
1 parent 4775711 commit f55dac2

File tree

2 files changed

+11
-39
lines changed

2 files changed

+11
-39
lines changed

Loop/Managers/TemporaryPresetsManager.swift

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,10 @@ class TemporaryPresetsManager {
3636

3737
scheduleOverride = overrideHistory.activeOverride(at: Date())
3838

39-
// TODO: Pre-meal is not stored in overrideHistory yet. https://tidepool.atlassian.net/browse/LOOP-4759
40-
//preMealOverride = overrideHistory.preMealOverride
39+
if scheduleOverride?.context == .preMeal {
40+
preMealOverride = scheduleOverride
41+
scheduleOverride = nil
42+
}
4143

4244
overrideIntentObserver = UserDefaults.appGroup?.observe(
4345
\.intentExtensionOverrideToSet,
@@ -79,6 +81,10 @@ class TemporaryPresetsManager {
7981
return
8082
}
8183

84+
if scheduleOverride != nil {
85+
preMealOverride = nil
86+
}
87+
8288
if let newValue = scheduleOverride, newValue.context == .preMeal {
8389
preconditionFailure("The `scheduleOverride` field should not be used for a pre-meal target range override; use `preMealOverride` instead")
8490
}
@@ -98,10 +104,6 @@ class TemporaryPresetsManager {
98104
}
99105
}
100106

101-
if scheduleOverride?.context == .legacyWorkout {
102-
preMealOverride = nil
103-
}
104-
105107
notify(forChange: .preferences)
106108
}
107109
}
@@ -116,10 +118,12 @@ class TemporaryPresetsManager {
116118
preconditionFailure("The `preMealOverride` field should be used only for a pre-meal target range override")
117119
}
118120

119-
if preMealOverride != nil, scheduleOverride?.context == .legacyWorkout {
121+
if preMealOverride != nil {
120122
scheduleOverride = nil
121123
}
122124

125+
overrideHistory.recordOverride(preMealOverride)
126+
123127
notify(forChange: .preferences)
124128
}
125129
}

LoopTests/Managers/TemporaryPresetsManagerTests.swift

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -34,23 +34,20 @@ class TemporaryPresetsManagerTests: XCTestCase {
3434
}
3535

3636
func testPreMealOverride() {
37-
var settings = self.settings
3837
let preMealStart = Date()
3938
manager.enablePreMealOverride(at: preMealStart, for: 1 /* hour */ * 60 * 60)
4039
let actualPreMealRange = manager.effectiveGlucoseTargetRangeSchedule()?.quantityRange(at: preMealStart.addingTimeInterval(30 /* minutes */ * 60))
4140
XCTAssertEqual(preMealRange, actualPreMealRange)
4241
}
4342

4443
func testPreMealOverrideWithPotentialCarbEntry() {
45-
var settings = self.settings
4644
let preMealStart = Date()
4745
manager.enablePreMealOverride(at: preMealStart, for: 1 /* hour */ * 60 * 60)
4846
let actualRange = manager.effectiveGlucoseTargetRangeSchedule(presumingMealEntry: true)?.value(at: preMealStart.addingTimeInterval(30 /* minutes */ * 60))
4947
XCTAssertEqual(targetRange, actualRange)
5048
}
5149

5250
func testScheduleOverride() {
53-
var settings = self.settings
5451
let overrideStart = Date()
5552
let overrideTargetRange = DoubleRange(minValue: 130, maxValue: 150)
5653
let override = TemporaryScheduleOverride(
@@ -69,36 +66,7 @@ class TemporaryPresetsManagerTests: XCTestCase {
6966
XCTAssertEqual(actualOverrideRange, overrideTargetRange)
7067
}
7168

72-
func testBothPreMealAndScheduleOverride() {
73-
var settings = self.settings
74-
let preMealStart = Date()
75-
manager.enablePreMealOverride(at: preMealStart, for: 1 /* hour */ * 60 * 60)
76-
77-
let overrideStart = Date()
78-
let overrideTargetRange = DoubleRange(minValue: 130, maxValue: 150)
79-
let override = TemporaryScheduleOverride(
80-
context: .custom,
81-
settings: TemporaryScheduleOverrideSettings(
82-
unit: .milligramsPerDeciliter,
83-
targetRange: overrideTargetRange
84-
),
85-
startDate: overrideStart,
86-
duration: .finite(3 /* hours */ * 60 * 60),
87-
enactTrigger: .local,
88-
syncIdentifier: UUID()
89-
)
90-
manager.scheduleOverride = override
91-
92-
let actualPreMealRange = manager.effectiveGlucoseTargetRangeSchedule()?.quantityRange(at: preMealStart.addingTimeInterval(30 /* minutes */ * 60))
93-
XCTAssertEqual(actualPreMealRange, preMealRange)
94-
95-
// The pre-meal range should be projected into the future, despite the simultaneous schedule override
96-
let preMealRangeDuringOverride = manager.effectiveGlucoseTargetRangeSchedule()?.quantityRange(at: preMealStart.addingTimeInterval(2 /* hours */ * 60 * 60))
97-
XCTAssertEqual(preMealRangeDuringOverride, preMealRange)
98-
}
99-
10069
func testScheduleOverrideWithExpiredPreMealOverride() {
101-
var settings = self.settings
10270
manager.preMealOverride = TemporaryScheduleOverride(
10371
context: .preMeal,
10472
settings: TemporaryScheduleOverrideSettings(targetRange: preMealRange),

0 commit comments

Comments
 (0)