import { describe, expect, it, vi } from "vitest"; import { render, renderHook } from "@testing-library/react"; import { RecordingAnalytics } from "@repo/core-testing"; import { AnalyticsContextError, AnalyticsProvider, useAnalytics, } from "@/react/index"; function Tracker() { const analytics = useAnalytics(); analytics.track("test.event"); return null; } describe("AnalyticsProvider", () => { it("makes analytics available through context and track flows through", () => { const recording = new RecordingAnalytics(); render( , ); expect(recording.tracked).toContainEqual({ event: "test.event" }); }); }); describe("useAnalytics", () => { it("throws AnalyticsContextError when called outside a provider", () => { const spy = vi.spyOn(console, "error").mockImplementation(() => {}); try { expect(() => renderHook(() => useAnalytics())).toThrow( AnalyticsContextError, ); } finally { spy.mockRestore(); } }); });