general: test redux
This commit is contained in:
76
GazeTests/Views/BlinkSetupViewTests.swift
Normal file
76
GazeTests/Views/BlinkSetupViewTests.swift
Normal file
@@ -0,0 +1,76 @@
|
||||
//
|
||||
// BlinkSetupViewTests.swift
|
||||
// GazeTests
|
||||
//
|
||||
// Tests for BlinkSetupView component.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
import XCTest
|
||||
@testable import Gaze
|
||||
|
||||
@MainActor
|
||||
final class BlinkSetupViewTests: XCTestCase {
|
||||
|
||||
var testEnv: TestEnvironment!
|
||||
|
||||
override func setUp() async throws {
|
||||
testEnv = TestEnvironment()
|
||||
}
|
||||
|
||||
override func tearDown() async throws {
|
||||
testEnv = nil
|
||||
}
|
||||
|
||||
func testBlinkSetupInitialization() {
|
||||
let view = BlinkSetupView(
|
||||
settingsManager: testEnv.settingsManager as! SettingsManager
|
||||
)
|
||||
XCTAssertNotNil(view)
|
||||
}
|
||||
|
||||
func testBlinkTimerConfigurationChanges() {
|
||||
let initial = testEnv.settingsManager.timerConfiguration(for: .blink)
|
||||
|
||||
var modified = initial
|
||||
modified.enabled = true
|
||||
modified.intervalSeconds = 300
|
||||
testEnv.settingsManager.updateTimerConfiguration(for: .blink, configuration: modified)
|
||||
|
||||
let updated = testEnv.settingsManager.timerConfiguration(for: .blink)
|
||||
XCTAssertTrue(updated.enabled)
|
||||
XCTAssertEqual(updated.intervalSeconds, 300)
|
||||
}
|
||||
|
||||
func testBlinkTimerEnableDisable() {
|
||||
var config = testEnv.settingsManager.timerConfiguration(for: .blink)
|
||||
|
||||
config.enabled = true
|
||||
testEnv.settingsManager.updateTimerConfiguration(for: .blink, configuration: config)
|
||||
XCTAssertTrue(testEnv.settingsManager.timerConfiguration(for: .blink).enabled)
|
||||
|
||||
config.enabled = false
|
||||
testEnv.settingsManager.updateTimerConfiguration(for: .blink, configuration: config)
|
||||
XCTAssertFalse(testEnv.settingsManager.timerConfiguration(for: .blink).enabled)
|
||||
}
|
||||
|
||||
func testBlinkIntervalValidation() {
|
||||
var config = testEnv.settingsManager.timerConfiguration(for: .blink)
|
||||
|
||||
let intervals = [180, 240, 300, 360, 600]
|
||||
for interval in intervals {
|
||||
config.intervalSeconds = interval
|
||||
testEnv.settingsManager.updateTimerConfiguration(for: .blink, configuration: config)
|
||||
|
||||
let retrieved = testEnv.settingsManager.timerConfiguration(for: .blink)
|
||||
XCTAssertEqual(retrieved.intervalSeconds, interval)
|
||||
}
|
||||
}
|
||||
|
||||
func testBlinkAccessibilityIdentifier() {
|
||||
XCTAssertEqual(
|
||||
AccessibilityIdentifiers.Onboarding.blinkPage,
|
||||
"onboarding.page.blink"
|
||||
)
|
||||
}
|
||||
}
|
||||
26
GazeTests/Views/CompletionViewTests.swift
Normal file
26
GazeTests/Views/CompletionViewTests.swift
Normal file
@@ -0,0 +1,26 @@
|
||||
//
|
||||
// CompletionViewTests.swift
|
||||
// GazeTests
|
||||
//
|
||||
// Tests for CompletionView component.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
import XCTest
|
||||
@testable import Gaze
|
||||
|
||||
@MainActor
|
||||
final class CompletionViewTests: XCTestCase {
|
||||
|
||||
func testCompletionViewInitialization() {
|
||||
let view = CompletionView()
|
||||
XCTAssertNotNil(view)
|
||||
}
|
||||
|
||||
func testCompletionAccessibilityIdentifier() {
|
||||
XCTAssertEqual(
|
||||
AccessibilityIdentifiers.Onboarding.completionPage,
|
||||
"onboarding.page.completion"
|
||||
)
|
||||
}
|
||||
}
|
||||
74
GazeTests/Views/GeneralSetupViewTests.swift
Normal file
74
GazeTests/Views/GeneralSetupViewTests.swift
Normal file
@@ -0,0 +1,74 @@
|
||||
//
|
||||
// GeneralSetupViewTests.swift
|
||||
// GazeTests
|
||||
//
|
||||
// Tests for GeneralSetupView component.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
import XCTest
|
||||
@testable import Gaze
|
||||
|
||||
@MainActor
|
||||
final class GeneralSetupViewTests: XCTestCase {
|
||||
|
||||
var testEnv: TestEnvironment!
|
||||
|
||||
override func setUp() async throws {
|
||||
testEnv = TestEnvironment()
|
||||
}
|
||||
|
||||
override func tearDown() async throws {
|
||||
testEnv = nil
|
||||
}
|
||||
|
||||
func testGeneralSetupInitialization() {
|
||||
let view = GeneralSetupView(
|
||||
settingsManager: testEnv.settingsManager as! SettingsManager,
|
||||
isOnboarding: true
|
||||
)
|
||||
XCTAssertNotNil(view)
|
||||
}
|
||||
|
||||
func testPlaySoundsToggle() {
|
||||
// Initial state
|
||||
let initial = testEnv.settingsManager.settings.playSounds
|
||||
|
||||
// Toggle on
|
||||
testEnv.settingsManager.settings.playSounds = true
|
||||
XCTAssertTrue(testEnv.settingsManager.settings.playSounds)
|
||||
|
||||
// Toggle off
|
||||
testEnv.settingsManager.settings.playSounds = false
|
||||
XCTAssertFalse(testEnv.settingsManager.settings.playSounds)
|
||||
}
|
||||
|
||||
func testLaunchAtLoginToggle() {
|
||||
// Toggle on
|
||||
testEnv.settingsManager.settings.launchAtLogin = true
|
||||
XCTAssertTrue(testEnv.settingsManager.settings.launchAtLogin)
|
||||
|
||||
// Toggle off
|
||||
testEnv.settingsManager.settings.launchAtLogin = false
|
||||
XCTAssertFalse(testEnv.settingsManager.settings.launchAtLogin)
|
||||
}
|
||||
|
||||
func testMultipleSettingsConfiguration() {
|
||||
testEnv.settingsManager.settings.playSounds = true
|
||||
testEnv.settingsManager.settings.launchAtLogin = true
|
||||
|
||||
XCTAssertTrue(testEnv.settingsManager.settings.playSounds)
|
||||
XCTAssertTrue(testEnv.settingsManager.settings.launchAtLogin)
|
||||
|
||||
testEnv.settingsManager.settings.playSounds = false
|
||||
XCTAssertFalse(testEnv.settingsManager.settings.playSounds)
|
||||
XCTAssertTrue(testEnv.settingsManager.settings.launchAtLogin)
|
||||
}
|
||||
|
||||
func testGeneralAccessibilityIdentifier() {
|
||||
XCTAssertEqual(
|
||||
AccessibilityIdentifiers.Onboarding.generalPage,
|
||||
"onboarding.page.general"
|
||||
)
|
||||
}
|
||||
}
|
||||
82
GazeTests/Views/LookAwaySetupViewTests.swift
Normal file
82
GazeTests/Views/LookAwaySetupViewTests.swift
Normal file
@@ -0,0 +1,82 @@
|
||||
//
|
||||
// LookAwaySetupViewTests.swift
|
||||
// GazeTests
|
||||
//
|
||||
// Tests for LookAwaySetupView component.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
import XCTest
|
||||
@testable import Gaze
|
||||
|
||||
@MainActor
|
||||
final class LookAwaySetupViewTests: XCTestCase {
|
||||
|
||||
var testEnv: TestEnvironment!
|
||||
|
||||
override func setUp() async throws {
|
||||
testEnv = TestEnvironment()
|
||||
}
|
||||
|
||||
override func tearDown() async throws {
|
||||
testEnv = nil
|
||||
}
|
||||
|
||||
func testLookAwaySetupInitialization() {
|
||||
let view = LookAwaySetupView(
|
||||
settingsManager: testEnv.settingsManager as! SettingsManager
|
||||
)
|
||||
XCTAssertNotNil(view)
|
||||
}
|
||||
|
||||
func testLookAwayTimerConfigurationChanges() {
|
||||
// Start with default
|
||||
let initial = testEnv.settingsManager.timerConfiguration(for: .lookAway)
|
||||
|
||||
// Modify configuration
|
||||
var modified = initial
|
||||
modified.enabled = true
|
||||
modified.intervalSeconds = 1500
|
||||
testEnv.settingsManager.updateTimerConfiguration(for: .lookAway, configuration: modified)
|
||||
|
||||
// Verify changes
|
||||
let updated = testEnv.settingsManager.timerConfiguration(for: .lookAway)
|
||||
XCTAssertTrue(updated.enabled)
|
||||
XCTAssertEqual(updated.intervalSeconds, 1500)
|
||||
}
|
||||
|
||||
func testLookAwayTimerEnableDisable() {
|
||||
var config = testEnv.settingsManager.timerConfiguration(for: .lookAway)
|
||||
|
||||
// Enable
|
||||
config.enabled = true
|
||||
testEnv.settingsManager.updateTimerConfiguration(for: .lookAway, configuration: config)
|
||||
XCTAssertTrue(testEnv.settingsManager.timerConfiguration(for: .lookAway).enabled)
|
||||
|
||||
// Disable
|
||||
config.enabled = false
|
||||
testEnv.settingsManager.updateTimerConfiguration(for: .lookAway, configuration: config)
|
||||
XCTAssertFalse(testEnv.settingsManager.timerConfiguration(for: .lookAway).enabled)
|
||||
}
|
||||
|
||||
func testLookAwayIntervalValidation() {
|
||||
var config = testEnv.settingsManager.timerConfiguration(for: .lookAway)
|
||||
|
||||
// Test various intervals
|
||||
let intervals = [300, 600, 1200, 1800, 3600]
|
||||
for interval in intervals {
|
||||
config.intervalSeconds = interval
|
||||
testEnv.settingsManager.updateTimerConfiguration(for: .lookAway, configuration: config)
|
||||
|
||||
let retrieved = testEnv.settingsManager.timerConfiguration(for: .lookAway)
|
||||
XCTAssertEqual(retrieved.intervalSeconds, interval)
|
||||
}
|
||||
}
|
||||
|
||||
func testLookAwayAccessibilityIdentifier() {
|
||||
XCTAssertEqual(
|
||||
AccessibilityIdentifiers.Onboarding.lookAwayPage,
|
||||
"onboarding.page.lookAway"
|
||||
)
|
||||
}
|
||||
}
|
||||
76
GazeTests/Views/PostureSetupViewTests.swift
Normal file
76
GazeTests/Views/PostureSetupViewTests.swift
Normal file
@@ -0,0 +1,76 @@
|
||||
//
|
||||
// PostureSetupViewTests.swift
|
||||
// GazeTests
|
||||
//
|
||||
// Tests for PostureSetupView component.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
import XCTest
|
||||
@testable import Gaze
|
||||
|
||||
@MainActor
|
||||
final class PostureSetupViewTests: XCTestCase {
|
||||
|
||||
var testEnv: TestEnvironment!
|
||||
|
||||
override func setUp() async throws {
|
||||
testEnv = TestEnvironment()
|
||||
}
|
||||
|
||||
override func tearDown() async throws {
|
||||
testEnv = nil
|
||||
}
|
||||
|
||||
func testPostureSetupInitialization() {
|
||||
let view = PostureSetupView(
|
||||
settingsManager: testEnv.settingsManager as! SettingsManager
|
||||
)
|
||||
XCTAssertNotNil(view)
|
||||
}
|
||||
|
||||
func testPostureTimerConfigurationChanges() {
|
||||
let initial = testEnv.settingsManager.timerConfiguration(for: .posture)
|
||||
|
||||
var modified = initial
|
||||
modified.enabled = true
|
||||
modified.intervalSeconds = 1800
|
||||
testEnv.settingsManager.updateTimerConfiguration(for: .posture, configuration: modified)
|
||||
|
||||
let updated = testEnv.settingsManager.timerConfiguration(for: .posture)
|
||||
XCTAssertTrue(updated.enabled)
|
||||
XCTAssertEqual(updated.intervalSeconds, 1800)
|
||||
}
|
||||
|
||||
func testPostureTimerEnableDisable() {
|
||||
var config = testEnv.settingsManager.timerConfiguration(for: .posture)
|
||||
|
||||
config.enabled = true
|
||||
testEnv.settingsManager.updateTimerConfiguration(for: .posture, configuration: config)
|
||||
XCTAssertTrue(testEnv.settingsManager.timerConfiguration(for: .posture).enabled)
|
||||
|
||||
config.enabled = false
|
||||
testEnv.settingsManager.updateTimerConfiguration(for: .posture, configuration: config)
|
||||
XCTAssertFalse(testEnv.settingsManager.timerConfiguration(for: .posture).enabled)
|
||||
}
|
||||
|
||||
func testPostureIntervalValidation() {
|
||||
var config = testEnv.settingsManager.timerConfiguration(for: .posture)
|
||||
|
||||
let intervals = [900, 1200, 1800, 2400, 3600]
|
||||
for interval in intervals {
|
||||
config.intervalSeconds = interval
|
||||
testEnv.settingsManager.updateTimerConfiguration(for: .posture, configuration: config)
|
||||
|
||||
let retrieved = testEnv.settingsManager.timerConfiguration(for: .posture)
|
||||
XCTAssertEqual(retrieved.intervalSeconds, interval)
|
||||
}
|
||||
}
|
||||
|
||||
func testPostureAccessibilityIdentifier() {
|
||||
XCTAssertEqual(
|
||||
AccessibilityIdentifiers.Onboarding.posturePage,
|
||||
"onboarding.page.posture"
|
||||
)
|
||||
}
|
||||
}
|
||||
28
GazeTests/Views/WelcomeViewTests.swift
Normal file
28
GazeTests/Views/WelcomeViewTests.swift
Normal file
@@ -0,0 +1,28 @@
|
||||
//
|
||||
// WelcomeViewTests.swift
|
||||
// GazeTests
|
||||
//
|
||||
// Tests for WelcomeView component.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
import XCTest
|
||||
@testable import Gaze
|
||||
|
||||
@MainActor
|
||||
final class WelcomeViewTests: XCTestCase {
|
||||
|
||||
func testWelcomeViewInitialization() {
|
||||
let view = WelcomeView()
|
||||
XCTAssertNotNil(view)
|
||||
}
|
||||
|
||||
func testWelcomeViewHasAccessibilityIdentifier() {
|
||||
// Welcome view should have proper accessibility identifier
|
||||
// This is a structural test - in real app, verify the view has the identifier
|
||||
XCTAssertEqual(
|
||||
AccessibilityIdentifiers.Onboarding.welcomePage,
|
||||
"onboarding.page.welcome"
|
||||
)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user