Simpl-Resultat/src/hooks/useIsPremium.test.ts
le king fu 98f68f7a1f
All checks were successful
PR Check / rust (push) Successful in 26m18s
PR Check / frontend (push) Successful in 2m37s
PR Check / rust (pull_request) Successful in 25m0s
PR Check / frontend (pull_request) Successful in 2m41s
feat(prices): useIsPremium hook from license.edition
- Reads useLicense().state.edition === 'premium'
- Ergonomic only — server enforces independently (ADR 0011)
- 3 vitest tests (premium, base, free)
- CLAUDE.md hook count 12 -> 13

Closes #157
2026-04-27 08:11:23 -04:00

42 lines
1.2 KiB
TypeScript

import { describe, it, expect, vi } from "vitest";
import { useIsPremium } from "./useIsPremium";
vi.mock("./useLicense", () => ({
useLicense: vi.fn(),
}));
import { useLicense } from "./useLicense";
const mockUseLicense = vi.mocked(useLicense);
describe("useIsPremium", () => {
it('returns true when edition is "premium"', () => {
mockUseLicense.mockReturnValue({
state: { status: "ready", edition: "premium", info: null, error: null },
refresh: vi.fn(),
submitKey: vi.fn(),
checkEntitlement: vi.fn(),
});
expect(useIsPremium()).toBe(true);
});
it('returns false when edition is "base"', () => {
mockUseLicense.mockReturnValue({
state: { status: "ready", edition: "base", info: null, error: null },
refresh: vi.fn(),
submitKey: vi.fn(),
checkEntitlement: vi.fn(),
});
expect(useIsPremium()).toBe(false);
});
it('returns false when edition is "free"', () => {
mockUseLicense.mockReturnValue({
state: { status: "ready", edition: "free", info: null, error: null },
refresh: vi.fn(),
submitKey: vi.fn(),
checkEntitlement: vi.fn(),
});
expect(useIsPremium()).toBe(false);
});
});