From 38244b8e94819e1dbd421b100391a99d0a042c82 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Tue, 13 Jan 2026 05:10:09 +0000 Subject: [PATCH] test: cover cron delete-after-run in macos --- .../CronJobEditorSmokeTests.swift | 21 +++++++++++++++++ .../ClawdbotIPCTests/CronModelsTests.swift | 23 +++++++++++++++++++ .../SettingsViewSmokeTests.swift | 2 ++ 3 files changed, 46 insertions(+) diff --git a/apps/macos/Tests/ClawdbotIPCTests/CronJobEditorSmokeTests.swift b/apps/macos/Tests/ClawdbotIPCTests/CronJobEditorSmokeTests.swift index 75b646d3a..b5c9034e5 100644 --- a/apps/macos/Tests/ClawdbotIPCTests/CronJobEditorSmokeTests.swift +++ b/apps/macos/Tests/ClawdbotIPCTests/CronJobEditorSmokeTests.swift @@ -27,6 +27,7 @@ struct CronJobEditorSmokeTests { name: "Daily summary", description: nil, enabled: true, + deleteAfterRun: nil, createdAtMs: 1_700_000_000_000, updatedAtMs: 1_700_000_000_000, schedule: .every(everyMs: 3_600_000, anchorMs: 1_700_000_000_000), @@ -67,4 +68,24 @@ struct CronJobEditorSmokeTests { onSave: { _ in }) view.exerciseForTesting() } + + @Test func cronJobEditorIncludesDeleteAfterRunForAtSchedule() throws { + var view = CronJobEditor( + job: nil, + isSaving: .constant(false), + error: .constant(nil), + onCancel: {}, + onSave: { _ in }) + view.name = "One-shot" + view.sessionTarget = .main + view.payloadKind = .systemEvent + view.systemEventText = "hello" + view.scheduleKind = .at + view.atDate = Date(timeIntervalSince1970: 1_700_000_000) + view.deleteAfterRun = true + + let payload = try view.buildPayload() + let raw = payload["deleteAfterRun"]?.value as? Bool + #expect(raw == true) + } } diff --git a/apps/macos/Tests/ClawdbotIPCTests/CronModelsTests.swift b/apps/macos/Tests/ClawdbotIPCTests/CronModelsTests.swift index 197861570..4862c28b2 100644 --- a/apps/macos/Tests/ClawdbotIPCTests/CronModelsTests.swift +++ b/apps/macos/Tests/ClawdbotIPCTests/CronModelsTests.swift @@ -39,6 +39,27 @@ struct CronModelsTests { #expect(decoded == payload) } + @Test func jobEncodesAndDecodesDeleteAfterRun() throws { + let job = CronJob( + id: "job-1", + agentId: nil, + name: "One-shot", + description: nil, + enabled: true, + deleteAfterRun: true, + createdAtMs: 0, + updatedAtMs: 0, + schedule: .at(atMs: 1_700_000_000_000), + sessionTarget: .main, + wakeMode: .now, + payload: .systemEvent(text: "ping"), + isolation: nil, + state: CronJobState()) + let data = try JSONEncoder().encode(job) + let decoded = try JSONDecoder().decode(CronJob.self, from: data) + #expect(decoded.deleteAfterRun == true) + } + @Test func scheduleDecodeRejectsUnknownKind() { let json = """ {"kind":"wat","atMs":1} @@ -64,6 +85,7 @@ struct CronModelsTests { name: " hello ", description: nil, enabled: true, + deleteAfterRun: nil, createdAtMs: 0, updatedAtMs: 0, schedule: .at(atMs: 0), @@ -86,6 +108,7 @@ struct CronModelsTests { name: "t", description: nil, enabled: true, + deleteAfterRun: nil, createdAtMs: 0, updatedAtMs: 0, schedule: .at(atMs: 0), diff --git a/apps/macos/Tests/ClawdbotIPCTests/SettingsViewSmokeTests.swift b/apps/macos/Tests/ClawdbotIPCTests/SettingsViewSmokeTests.swift index 42a2411f9..11747111d 100644 --- a/apps/macos/Tests/ClawdbotIPCTests/SettingsViewSmokeTests.swift +++ b/apps/macos/Tests/ClawdbotIPCTests/SettingsViewSmokeTests.swift @@ -16,6 +16,7 @@ struct SettingsViewSmokeTests { name: " Morning Check-in ", description: nil, enabled: true, + deleteAfterRun: nil, createdAtMs: 1_700_000_000_000, updatedAtMs: 1_700_000_100_000, schedule: .cron(expr: "0 8 * * *", tz: "UTC"), @@ -37,6 +38,7 @@ struct SettingsViewSmokeTests { name: "", description: nil, enabled: false, + deleteAfterRun: nil, createdAtMs: 1_700_000_000_000, updatedAtMs: 1_700_000_100_000, schedule: .every(everyMs: 30000, anchorMs: nil),