import { analyticsEventRegistry, validateAnalyticsEvent } from '@/lib/analytics/events'; import { describe, expect, it } from 'vitest'; const context = { routeId: 'home', locale: 'en', direction: 'ltr', resolvedTheme: 'light', source: 'hero', } as const; describe('analytics contract', () => { it('accepts allowlisted non-personal demo events', () => { expect(validateAnalyticsEvent('demo_open', context)).toEqual({ name: 'demo_open', context }); }); it('rejects unknown events and payload properties', () => { expect(validateAnalyticsEvent('lead_created', context)).toBeNull(); expect( validateAnalyticsEvent('demo_open', { ...context, email: 'person@example.test' }), ).toBeNull(); }); it('marks every registry entry as non-personal and consent-gated', () => { expect(analyticsEventRegistry.every((event) => !event.personalData)).toBe(true); expect(analyticsEventRegistry.every((event) => event.consentCategory === 'analytics')).toBe( true, ); }); });