diff --git a/internal/database/events_test.go b/internal/database/events_test.go index cf66088..0b64f26 100644 --- a/internal/database/events_test.go +++ b/internal/database/events_test.go @@ -1,6 +1,7 @@ package database import ( + "path/filepath" "testing" "time" @@ -17,7 +18,7 @@ const day = 24 * time.Hour func newEventDatabase(t *testing.T) *gorm.DB { t.Helper() - gormdb, err := NewDatabase("file:" + t.Name() + "?mode=memory&cache=shared") + gormdb, err := NewDatabase("file:" + filepath.Join(t.TempDir(), "events.db") + "?_busy_timeout=5000") require.NoError(t, err) return gormdb @@ -93,6 +94,25 @@ func TestStartEventPurgeDeletesOnStartup(t *testing.T) { }, time.Second, 10*time.Millisecond) } +func TestStartEventPurgeStopsAfterShutdown(t *testing.T) { + gormdb := newEventDatabase(t) + + initial := createEvent(t, gormdb, 40*day) + stop := StartEventPurge(gormdb, 30*day, 100*time.Millisecond) + t.Cleanup(stop) + + require.Eventually(t, func() bool { + return !eventExists(t, gormdb, initial) + }, time.Second, 10*time.Millisecond) + + stop() + afterStop := createEvent(t, gormdb, 40*day) + + assert.Never(t, func() bool { + return !eventExists(t, gormdb, afterStop) + }, 300*time.Millisecond, 10*time.Millisecond) +} + func TestStartEventPurgeKeepsEveryEventWithoutRetention(t *testing.T) { gormdb := newEventDatabase(t)