package models import ( "encoding/json" "strings" "testing" "time" ) func TestSessionSyncIndexItemOmitsConcreteContent(t *testing.T) { clientID := "client-1" updatedAt := time.Date(2026, 7, 26, 12, 30, 0, 123000000, time.UTC) session := CelestiaSession{ ID: "session-1", ClientID: &clientID, Title: "现场记录", StartTime: updatedAt.Add(-time.Hour), DurationMs: 3_600_000, PhotoCount: 2, NoteCount: 3, Revision: 7, UpdatedAt: updatedAt, Events: []TimelineEvent{{ID: "event-1"}}, Assets: []MediaAsset{{ID: "asset-1"}}, } data, err := json.Marshal(session.SyncIndexItem()) if err != nil { t.Fatalf("marshal sync index item: %v", err) } payload := string(data) if strings.Contains(payload, `"events"`) || strings.Contains(payload, `"assets"`) { t.Fatalf("sync index leaked concrete content: %s", payload) } if !strings.Contains(payload, `"updatedAt":"2026-07-26T12:30:00.123Z"`) { t.Fatalf("sync index missing precise updatedAt: %s", payload) } if !strings.Contains(payload, `"revision":7`) { t.Fatalf("sync index missing revision guard: %s", payload) } }