diff options
Diffstat (limited to 'internal/cli/timer_test.go')
| -rw-r--r-- | internal/cli/timer_test.go | 40 |
1 files changed, 40 insertions, 0 deletions
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() |
