Files
clawdbot/apps/macos/Tests/ClawdbotIPCTests/SettingsViewSmokeTests.swift
2026-01-08 05:57:27 +00:00

162 lines
4.8 KiB
Swift

import SwiftUI
import Testing
@testable import Clawdbot
@Suite(.serialized)
@MainActor
struct SettingsViewSmokeTests {
@Test func cronSettingsBuildsBody() {
let store = CronJobsStore(isPreview: true)
store.schedulerEnabled = false
store.schedulerStorePath = "/tmp/clawdbot-cron-store.json"
let job1 = CronJob(
id: "job-1",
name: " Morning Check-in ",
description: nil,
enabled: true,
createdAtMs: 1_700_000_000_000,
updatedAtMs: 1_700_000_100_000,
schedule: .cron(expr: "0 8 * * *", tz: "UTC"),
sessionTarget: .main,
wakeMode: .now,
payload: .systemEvent(text: "ping"),
isolation: nil,
state: CronJobState(
nextRunAtMs: 1_700_000_200_000,
runningAtMs: nil,
lastRunAtMs: 1_700_000_050_000,
lastStatus: "ok",
lastError: nil,
lastDurationMs: 123))
let job2 = CronJob(
id: "job-2",
name: "",
description: nil,
enabled: false,
createdAtMs: 1_700_000_000_000,
updatedAtMs: 1_700_000_100_000,
schedule: .every(everyMs: 30000, anchorMs: nil),
sessionTarget: .isolated,
wakeMode: .nextHeartbeat,
payload: .agentTurn(
message: "hello",
thinking: "low",
timeoutSeconds: 30,
deliver: true,
provider: "sms",
to: "+15551234567",
bestEffortDeliver: true),
isolation: CronIsolation(postToMainPrefix: "[cron] "),
state: CronJobState(
nextRunAtMs: nil,
runningAtMs: nil,
lastRunAtMs: nil,
lastStatus: nil,
lastError: nil,
lastDurationMs: nil))
store.jobs = [job1, job2]
store.selectedJobId = job1.id
store.runEntries = [
CronRunLogEntry(
ts: 1_700_000_050_000,
jobId: job1.id,
action: "finished",
status: "ok",
error: nil,
summary: "ok",
runAtMs: 1_700_000_050_000,
durationMs: 123,
nextRunAtMs: 1_700_000_200_000),
]
let view = CronSettings(store: store)
_ = view.body
}
@Test func cronSettingsExercisesPrivateViews() {
CronSettings.exerciseForTesting()
}
@Test func configSettingsBuildsBody() {
let view = ConfigSettings()
_ = view.body
}
@Test func debugSettingsBuildsBody() {
let view = DebugSettings()
_ = view.body
}
@Test func generalSettingsBuildsBody() {
let state = AppState(preview: true)
let view = GeneralSettings(state: state)
_ = view.body
}
@Test func generalSettingsExercisesBranches() {
GeneralSettings.exerciseForTesting()
}
@Test func sessionsSettingsBuildsBody() {
let view = SessionsSettings(rows: SessionRow.previewRows, isPreview: true)
_ = view.body
}
@Test func instancesSettingsBuildsBody() {
let store = InstancesStore(isPreview: true)
store.instances = [
InstanceInfo(
id: "local",
host: "this-mac",
ip: "127.0.0.1",
version: "1.0",
platform: "macos 15.0",
deviceFamily: "Mac",
modelIdentifier: "MacPreview",
lastInputSeconds: 12,
mode: "local",
reason: "test",
text: "test instance",
ts: Date().timeIntervalSince1970 * 1000),
]
let view = InstancesSettings(store: store)
_ = view.body
}
@Test func permissionsSettingsBuildsBody() {
let view = PermissionsSettings(
status: [
.notifications: true,
.screenRecording: false,
],
refresh: {},
showOnboarding: {})
_ = view.body
}
@Test func settingsRootViewBuildsBody() {
let state = AppState(preview: true)
let view = SettingsRootView(state: state, updater: nil, initialTab: .general)
_ = view.body
}
@Test func aboutSettingsBuildsBody() {
let view = AboutSettings(updater: nil)
_ = view.body
}
@Test func voiceWakeSettingsBuildsBody() {
let state = AppState(preview: true)
let view = VoiceWakeSettings(state: state, isActive: false)
_ = view.body
}
@Test func skillsSettingsBuildsBody() {
let view = SkillsSettings(state: .preview)
_ = view.body
}
}