test(macos): cover settings + activity models

This commit is contained in:
Peter Steinberger
2025-12-14 03:06:12 +00:00
parent d7165b4720
commit 745eefe0be
4 changed files with 182 additions and 2 deletions

View File

@@ -0,0 +1,68 @@
import Foundation
import Testing
@testable import Clawdis
@Suite
@MainActor
struct WorkActivityStoreTests {
@Test func mainSessionJobPreemptsOther() {
let store = WorkActivityStore()
store.handleJob(sessionKey: "group:1", state: "started")
#expect(store.iconState == .workingOther(.job))
#expect(store.current?.sessionKey == "group:1")
store.handleJob(sessionKey: "main", state: "started")
#expect(store.iconState == .workingMain(.job))
#expect(store.current?.sessionKey == "main")
store.handleJob(sessionKey: "main", state: "finished")
#expect(store.iconState == .workingOther(.job))
#expect(store.current?.sessionKey == "group:1")
store.handleJob(sessionKey: "group:1", state: "finished")
#expect(store.iconState == .idle)
#expect(store.current == nil)
}
@Test func toolLabelExtractsFirstLineAndShortensHome() {
let store = WorkActivityStore()
let home = NSHomeDirectory()
store.handleTool(
sessionKey: "main",
phase: "start",
name: "bash",
meta: nil,
args: [
"command": AnyCodable("echo hi\necho bye"),
"path": AnyCodable("\(home)/Projects/clawdis"),
])
#expect(store.current?.label == "bash: echo hi")
#expect(store.iconState == .workingMain(.tool(.bash)))
store.handleTool(
sessionKey: "main",
phase: "start",
name: "read",
meta: nil,
args: ["path": AnyCodable("\(home)/secret.txt")])
#expect(store.current?.label == "read: ~/secret.txt")
#expect(store.iconState == .workingMain(.tool(.read)))
}
@Test func resolveIconStateHonorsOverrideSelection() {
let store = WorkActivityStore()
store.handleJob(sessionKey: "main", state: "started")
#expect(store.iconState == .workingMain(.job))
store.resolveIconState(override: .idle)
#expect(store.iconState == .idle)
store.resolveIconState(override: .otherEdit)
#expect(store.iconState == .overridden(.tool(.edit)))
}
}