136 lines
3.2 KiB
Swift
136 lines
3.2 KiB
Swift
//
|
|
// EnforceModeServiceTests.swift
|
|
// GazeTests
|
|
//
|
|
// Unit tests for EnforceModeService.
|
|
//
|
|
|
|
import XCTest
|
|
@testable import Gaze
|
|
|
|
@MainActor
|
|
final class EnforceModeServiceTests: XCTestCase {
|
|
|
|
var service: EnforceModeService!
|
|
|
|
override func setUp() async throws {
|
|
service = EnforceModeService.shared
|
|
}
|
|
|
|
override func tearDown() async throws {
|
|
service.disableEnforceMode()
|
|
service = nil
|
|
}
|
|
|
|
// MARK: - Initialization Tests
|
|
|
|
func testServiceInitialization() {
|
|
XCTAssertNotNil(service)
|
|
}
|
|
|
|
func testInitialState() {
|
|
XCTAssertFalse(service.isEnforceModeEnabled)
|
|
XCTAssertFalse(service.isCameraActive)
|
|
XCTAssertFalse(service.userCompliedWithBreak)
|
|
}
|
|
|
|
// MARK: - Enable/Disable Tests
|
|
|
|
func testEnableEnforceMode() async {
|
|
await service.enableEnforceMode()
|
|
|
|
// May or may not be enabled depending on camera permissions
|
|
// Just verify the method doesn't crash
|
|
XCTAssertNotNil(service)
|
|
}
|
|
|
|
func testDisableEnforceMode() {
|
|
service.disableEnforceMode()
|
|
|
|
XCTAssertFalse(service.isEnforceModeEnabled)
|
|
XCTAssertFalse(service.isCameraActive)
|
|
}
|
|
|
|
func testEnableDisableCycle() async {
|
|
await service.enableEnforceMode()
|
|
service.disableEnforceMode()
|
|
|
|
XCTAssertFalse(service.isEnforceModeEnabled)
|
|
}
|
|
|
|
// MARK: - Timer Engine Integration Tests
|
|
|
|
func testSetTimerEngine() {
|
|
let testEnv = TestEnvironment()
|
|
let timerEngine = testEnv.container.timerEngine
|
|
|
|
service.setTimerEngine(timerEngine)
|
|
|
|
// Should not crash
|
|
XCTAssertNotNil(service)
|
|
}
|
|
|
|
// MARK: - Should Enforce Break Tests
|
|
|
|
func testShouldEnforceBreakWhenDisabled() {
|
|
service.disableEnforceMode()
|
|
|
|
let shouldEnforce = service.shouldEnforceBreak(for: .builtIn(.lookAway))
|
|
XCTAssertFalse(shouldEnforce)
|
|
}
|
|
|
|
// MARK: - Camera Tests
|
|
|
|
func testStopCamera() {
|
|
service.stopCamera()
|
|
|
|
XCTAssertFalse(service.isCameraActive)
|
|
}
|
|
|
|
// MARK: - Compliance Tests
|
|
|
|
func testCheckUserCompliance() {
|
|
service.checkUserCompliance()
|
|
|
|
// Should not crash
|
|
XCTAssertNotNil(service)
|
|
}
|
|
|
|
func testHandleReminderDismissed() {
|
|
service.handleReminderDismissed()
|
|
|
|
// Should not crash
|
|
XCTAssertNotNil(service)
|
|
}
|
|
|
|
// MARK: - Test Mode Tests
|
|
|
|
func testStartTestMode() async {
|
|
await service.startTestMode()
|
|
|
|
XCTAssertTrue(service.isTestMode)
|
|
}
|
|
|
|
func testStopTestMode() {
|
|
service.stopTestMode()
|
|
|
|
XCTAssertFalse(service.isTestMode)
|
|
}
|
|
|
|
func testTestModeCycle() async {
|
|
await service.startTestMode()
|
|
XCTAssertTrue(service.isTestMode)
|
|
|
|
service.stopTestMode()
|
|
XCTAssertFalse(service.isTestMode)
|
|
}
|
|
|
|
// MARK: - Protocol Conformance Tests
|
|
|
|
func testConformsToEnforceModeProviding() {
|
|
let providing: EnforceModeProviding = service
|
|
XCTAssertNotNil(providing)
|
|
XCTAssertFalse(providing.isEnforceModeEnabled)
|
|
}
|
|
}
|