import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { AnalyticsEvent, track, trackPageView } from './analytics' describe('analytics.track', () => { beforeEach(() => { window.gtag = vi.fn() }) afterEach(() => { delete window.gtag }) it('calls gtag with event name and params', () => { track(AnalyticsEvent.HomeCtaPortrait) expect(window.gtag).toHaveBeenCalledWith('event', 'home_cta_portrait', {}) }) it('omits undefined params', () => { track(AnalyticsEvent.PortraitCompleted, { source: 'query', report_id: undefined }) expect(window.gtag).toHaveBeenCalledWith('event', 'portrait_completed', { source: 'query' }) }) it('does not throw when gtag missing', () => { delete window.gtag expect(() => track(AnalyticsEvent.RelationCompleted)).not.toThrow() }) it('trackPageView sends page_path', () => { trackPageView('/portrait', '个人画像') expect(window.gtag).toHaveBeenCalledWith('event', 'page_view', { page_path: '/portrait', page_title: '个人画像', }) }) })