pass 1
This commit is contained in:
65
GazeTests/Helpers/TestServiceContainer.swift
Normal file
65
GazeTests/Helpers/TestServiceContainer.swift
Normal file
@@ -0,0 +1,65 @@
|
||||
//
|
||||
// TestServiceContainer.swift
|
||||
// GazeTests
|
||||
//
|
||||
// Test-specific dependency injection container.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
@testable import Gaze
|
||||
|
||||
/// A dependency injection container configured for testing.
|
||||
/// Provides injectable dependencies and test-specific utilities.
|
||||
@MainActor
|
||||
final class TestServiceContainer {
|
||||
/// The settings manager instance
|
||||
private(set) var settingsManager: any SettingsProviding
|
||||
|
||||
/// The timer engine instance
|
||||
private var _timerEngine: TimerEngine?
|
||||
|
||||
/// Time provider for deterministic testing
|
||||
let timeProvider: TimeProviding
|
||||
|
||||
/// Creates a test container with default mock settings
|
||||
convenience init() {
|
||||
self.init(settings: AppSettings())
|
||||
}
|
||||
|
||||
/// Creates a test container with custom settings
|
||||
init(settings: AppSettings) {
|
||||
self.settingsManager = EnhancedMockSettingsManager(settings: settings)
|
||||
self.timeProvider = MockTimeProvider()
|
||||
}
|
||||
|
||||
/// Creates a test container with a custom settings manager
|
||||
init(settingsManager: any SettingsProviding) {
|
||||
self.settingsManager = settingsManager
|
||||
self.timeProvider = MockTimeProvider()
|
||||
}
|
||||
|
||||
/// Gets or creates the timer engine for testing
|
||||
var timerEngine: TimerEngine {
|
||||
if let engine = _timerEngine {
|
||||
return engine
|
||||
}
|
||||
let engine = TimerEngine(
|
||||
settingsManager: settingsManager,
|
||||
enforceModeService: nil,
|
||||
timeProvider: timeProvider
|
||||
)
|
||||
_timerEngine = engine
|
||||
return engine
|
||||
}
|
||||
|
||||
/// Sets a custom timer engine
|
||||
func setTimerEngine(_ engine: TimerEngine) {
|
||||
_timerEngine = engine
|
||||
}
|
||||
|
||||
/// Resets the container for test isolation
|
||||
func reset() {
|
||||
_timerEngine?.stop()
|
||||
_timerEngine = nil
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user