X-Git-Url: https://git.giacomolli.uk/onechat/blobdiff_plain/d008b46cbfc6348255e9b9a1fc009f0e4bd6aa2a..77f29e78734dc16cfcea5f41b8e0185f8b33534a:/schedule_test.go diff --git a/schedule_test.go b/schedule_test.go index f83c2e4..3048d75 100644 --- a/schedule_test.go +++ b/schedule_test.go @@ -128,7 +128,7 @@ func TestSchedulesSurviveARestart(t *testing.T) { require.NoError(t, err) require.Equal(t, os.FileMode(0o600), info.Mode().Perm()) - reopened, err := openSchedules(path, schedules.clock) + reopened, err := openSchedules(path, schedules.clock, discardLog()) require.NoError(t, err) require.Equal(t, "2 | Monday 2026-11-09 08:00 -03:00 | 0 8 * * 1-5 | Tell the user the news.", reopened.List()) @@ -171,6 +171,7 @@ func TestSchedulesDone(t *testing.T) { now := start.Add(3*time.Hour + 30*time.Minute) due := schedules.Due(now) require.Len(t, due, 2) + for _, schedule := range due { require.NoError(t, schedules.Done(schedule, now)) } @@ -230,7 +231,7 @@ func TestOpenSchedulesRefusesABadCron(t *testing.T) { path := filepath.Join(t.TempDir(), scheduleFileName) require.NoError(t, os.WriteFile(path, []byte(`{"next":1,"schedules":[{"id":1,"text":"x","cron":"* * * * *","due":"2026-11-09T09:00:00-03:00"}]}`), 0o600)) - _, err := openSchedules(path, time.Now) + _, err := openSchedules(path, time.Now, discardLog()) require.ErrorContains(t, err, "schedule 1: the runs of") } @@ -239,7 +240,8 @@ func TestSchedulesRunStartsATurnWhenDue(t *testing.T) { now: time.Date(2026, time.November, 8, 20, 0, 0, 0, time.FixedZone("", -3*60*60)), } - schedules, err := openSchedules(filepath.Join(t.TempDir(), scheduleFileName), clock.Now) + logs := &SyncBuffer{} + schedules, err := openSchedules(filepath.Join(t.TempDir(), scheduleFileName), clock.Now, daemonTestLogger(logs)) require.NoError(t, err) server := newModelFake(t) @@ -256,6 +258,7 @@ func TestSchedulesRunStartsATurnWhenDue(t *testing.T) { require.Equal(t, "[Schedule 1] Sunday 2026-11-08 20:05 -03:00, once\nRemind the user to drink water.\n"+scheduleEmptyReply, texts[len(texts)-1]) require.Equal(t, scheduleSource, test.events.LastEvent("work").Source) require.Equal(t, "No schedules.", schedules.List()) + require.Equal(t, "<6>schedule ran id=1\n", logs.String()) } func TestSchedulesRunMissedSchedulesOnceAtTheStart(t *testing.T) { @@ -266,7 +269,8 @@ func TestSchedulesRunMissedSchedulesOnceAtTheStart(t *testing.T) { now: time.Date(2026, time.November, 8, 20, 30, 0, 0, time.FixedZone("", -3*60*60)), } - schedules, err := openSchedules(path, clock.Now) + logs := &SyncBuffer{} + schedules, err := openSchedules(path, clock.Now, daemonTestLogger(logs)) require.NoError(t, err) server := newModelFake(t) @@ -280,6 +284,7 @@ func TestSchedulesRunMissedSchedulesOnceAtTheStart(t *testing.T) { "[Schedule 2] Sunday 2026-11-08 10:00 -03:00, repeats 0 * * * *\nTell the user the time.\n" + scheduleLateLine + "\n" + scheduleEmptyReply, }, texts[len(texts)-2:]) require.Equal(t, "2 | Sunday 2026-11-08 21:00 -03:00 | 0 * * * * | Tell the user the time.", schedules.List()) + require.Equal(t, "<6>schedule ran id=1 late=11h30m0s\n<6>schedule ran id=2 late=10h30m0s\n", logs.String()) } func TestDaemonRunsADueSchedule(t *testing.T) { @@ -287,7 +292,7 @@ func TestDaemonRunsADueSchedule(t *testing.T) { now: time.Date(2026, time.November, 8, 20, 0, 0, 0, time.FixedZone("", -3*60*60)), } - schedules, err := openSchedules(filepath.Join(t.TempDir(), scheduleFileName), clock.Now) + schedules, err := openSchedules(filepath.Join(t.TempDir(), scheduleFileName), clock.Now, discardLog()) require.NoError(t, err) schedules.check = time.Millisecond @@ -354,7 +359,7 @@ func scheduleTestOpen(t *testing.T) (*Schedules, string) { now: time.Date(2026, time.November, 8, 20, 0, 0, 0, time.FixedZone("", -3*60*60)), } - schedules, err := openSchedules(path, clock.Now) + schedules, err := openSchedules(path, clock.Now, discardLog()) require.NoError(t, err) return schedules, path