|
|
@@ -0,0 +1,54 @@
|
|
|
+import CGMBLEKit
|
|
|
+import Foundation
|
|
|
+import G7SensorKit
|
|
|
+import LibreTransmitter
|
|
|
+import LoopKit
|
|
|
+import Testing
|
|
|
+
|
|
|
+@testable import Trio
|
|
|
+
|
|
|
+@Suite("Trio Alerts: CGMManagerAlertOwnership") struct CGMManagerAlertOwnershipTests {
|
|
|
+ @Test("nil manager + .none source → no owner") func noneSourceNoManager() {
|
|
|
+ #expect(CGMManagerAlertOwnership.owningApp(manager: nil, sourceType: .none) == nil)
|
|
|
+ #expect(!CGMManagerAlertOwnership.providesOwnGlucoseAlerts(manager: nil, sourceType: .none))
|
|
|
+ }
|
|
|
+
|
|
|
+ /// Pins the xDrip4iOS case that was missed before: .xdrip runs through
|
|
|
+ /// AppGroupSource without a CGMManager instance, so the ownership check
|
|
|
+ /// must trigger off the source type alone.
|
|
|
+ @Test(".xdrip source → xDrip4iOS owner + xdripswift:// deep link") func xdripSourceWinsWithNilManager() {
|
|
|
+ let app = CGMManagerAlertOwnership.owningApp(manager: nil, sourceType: .xdrip)
|
|
|
+ #expect(app?.name == "xDrip4iOS")
|
|
|
+ #expect(app?.deepLink == URL(string: "xdripswift://"))
|
|
|
+ #expect(CGMManagerAlertOwnership.providesOwnGlucoseAlerts(manager: nil, sourceType: .xdrip))
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test("nightscout / simulator / enlite sources → no owner") func nonOwnerSources() {
|
|
|
+ for source in [CGMType.nightscout, .simulator, .enlite] {
|
|
|
+ #expect(CGMManagerAlertOwnership.owningApp(manager: nil, sourceType: source) == nil)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /// Each known manager type maps to a fixed (name, deepLink) pair. Pinning
|
|
|
+ /// the strings here means a rename in CGMManagerAlertOwnership.swift
|
|
|
+ /// surfaces as a failing test rather than a silent UI copy change.
|
|
|
+ @Test("G6CGMManager → Dexcom G6 / One + dexcomg6://") func g6Mapping() {
|
|
|
+ let manager = G6CGMManager(state: TransmitterManagerState(transmitterID: "TEST6A"))
|
|
|
+ let app = CGMManagerAlertOwnership.owningApp(manager: manager, sourceType: .plugin)
|
|
|
+ #expect(app?.name == "Dexcom G6 / One")
|
|
|
+ #expect(app?.deepLink == URL(string: "dexcomg6://"))
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test("G7CGMManager → Dexcom G7 / One+ + dexcomg7://") func g7Mapping() {
|
|
|
+ let app = CGMManagerAlertOwnership.owningApp(manager: G7CGMManager(), sourceType: .plugin)
|
|
|
+ #expect(app?.name == "Dexcom G7 / One+")
|
|
|
+ #expect(app?.deepLink == URL(string: "dexcomg7://"))
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test("G5CGMManager → Dexcom G5, no known deep link") func g5Mapping() {
|
|
|
+ let manager = G5CGMManager(state: TransmitterManagerState(transmitterID: "TEST5A"))
|
|
|
+ let app = CGMManagerAlertOwnership.owningApp(manager: manager, sourceType: .plugin)
|
|
|
+ #expect(app?.name == "Dexcom G5")
|
|
|
+ #expect(app?.deepLink == nil)
|
|
|
+ }
|
|
|
+}
|