From e96b0b370bcdd55ad2d5b20187e4bbae78785ff2 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Tue, 3 Mar 2026 23:10:26 +0200 Subject: Task 352: integrate timer and worktime login sync --- internal/cli/timer_test.go | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'internal/cli/timer_test.go') diff --git a/internal/cli/timer_test.go b/internal/cli/timer_test.go index dead994..25f9618 100644 --- a/internal/cli/timer_test.go +++ b/internal/cli/timer_test.go @@ -7,6 +7,7 @@ import ( "testing" timrTimer "codeberg.org/snonux/timr/internal/timer" + "codeberg.org/snonux/timr/internal/worktime" ) func TestTimerStartAndStopCommands(t *testing.T) { @@ -73,6 +74,45 @@ func TestTimerStatusFlagConflict(t *testing.T) { } } +func TestTimerAutoWorktimeSync(t *testing.T) { + setupTimerState(t) + + dbDir := t.TempDir() + cfgPath := writeWorkConfigWithAuto(t, dbDir, "host-auto", true) + + out, err := runRootCommand("--config", cfgPath, "timer", "start") + if err != nil { + t.Fatalf("timer start error = %v (output: %q)", err, out) + } + out, err = runRootCommand("--config", cfgPath, "timer", "stop") + if err != nil { + t.Fatalf("timer stop error = %v (output: %q)", err, out) + } + + entries, err := worktime.LoadAll(dbDir) + if err != nil { + t.Fatalf("LoadAll() error = %v", err) + } + + var hasLogin bool + var hasLogout bool + for _, entry := range entries { + if entry.What != "work" { + continue + } + if entry.Action == "login" { + hasLogin = true + } + if entry.Action == "logout" { + hasLogout = true + } + } + + if !hasLogin || !hasLogout { + t.Fatalf("auto worktime sync missing login/logout entries: %+v", entries) + } +} + func setupTimerState(t *testing.T) { t.Helper() -- cgit v1.2.3