Merge pull request #47 from xmindlab-heicode/test/telemetry-retention-purge-coverage

test(telemetry): cover retention purge deletion (#43)
This commit is contained in:
Fasthei
2026-06-10 12:06:13 +08:00
committed by GitHub
2 changed files with 39 additions and 0 deletions
+1
View File
@@ -43,6 +43,7 @@ func TestMain(m *testing.M) {
&SubscriptionPlan{},
&SubscriptionOrder{},
&UserSubscription{},
&TelemetryEvent{},
); err != nil {
panic("failed to migrate: " + err.Error())
}
+38
View File
@@ -0,0 +1,38 @@
package model
import (
"testing"
"github.com/stretchr/testify/require"
)
// #43: the retention purge must delete telemetry rows received before the
// cutoff and leave newer rows intact. TelemetryEvent is migrated by the package
// TestMain; LOG_DB == DB in tests.
func TestDeleteTelemetryEventsBefore(t *testing.T) {
// Isolate from any other test's rows.
require.NoError(t, LOG_DB.Where("1 = 1").Delete(&TelemetryEvent{}).Error)
mk := func(receivedAt int64, client string) {
require.NoError(t, LOG_DB.Create(&TelemetryEvent{
ReceivedAt: receivedAt, UserId: 1, ClientId: client, SchemaVersion: 1,
}).Error)
}
mk(1000, "old-1") // before cutoff -> deleted
mk(2999, "old-2") // before cutoff -> deleted
mk(3000, "keep-1") // == cutoff -> kept (strict <)
mk(5000, "keep-2") // after cutoff -> kept
deleted, err := DeleteTelemetryEventsBefore(3000)
require.NoError(t, err)
require.EqualValues(t, 2, deleted, "rows with received_at < cutoff are purged")
var remaining int64
require.NoError(t, LOG_DB.Model(&TelemetryEvent{}).Count(&remaining).Error)
require.EqualValues(t, 2, remaining, "rows at/after cutoff are retained")
// Idempotent: a second pass with the same cutoff deletes nothing.
again, err := DeleteTelemetryEventsBefore(3000)
require.NoError(t, err)
require.EqualValues(t, 0, again)
}