Files
Termind/TFMTests/MetricsActivityObserverTests.swift

65 lines
1.7 KiB
Swift

// SPDX-FileCopyrightText: 2026 Kaede Akino
// SPDX-License-Identifier: GPL-3.0-only
import TermindApplication
import TermindDomain
import Testing
@testable import Termind
@Suite
@MainActor
struct MetricsActivityObserverTests {
@Test
func wakeWaitsForTheLoginSessionBeforeResumingMetrics() {
let model = makeModel()
let observer = MetricsActivityObserver()
observer.start(model)
defer {
observer.stop()
model.shutdown()
}
observer.receive(.sessionDidResignActive)
#expect(model.sleeping)
observer.receive(.systemWillSleep)
observer.receive(.systemDidWake)
#expect(model.sleeping)
observer.receive(.sessionDidBecomeActive)
#expect(!model.sleeping)
}
@Test
func systemSleepStillResumesWithoutASessionTransition() {
let model = makeModel()
let observer = MetricsActivityObserver()
observer.start(model)
defer {
observer.stop()
model.shutdown()
}
observer.receive(.systemWillSleep)
#expect(model.sleeping)
observer.receive(.systemDidWake)
#expect(!model.sleeping)
}
private func makeModel() -> ServerMetricsModel {
let model = ServerMetricsModel(
hosts: HostLibraryModel(), preferences: ActivityObserverPreferences(),
makeSampler: { preconditionFailure("No monitor is configured") }
)
model.start()
return model
}
}
@MainActor
private final class ActivityObserverPreferences: MetricsConfigurationStoring {
func load() -> [MetricsSelection] { [] }
func save(_ selections: [MetricsSelection]) {}
}