테스트 인프라: - Jest 30 + jest-environment-jsdom + RTL + jest-dom matchers - next/jest로 SWC/Next.js 자동 통합 - jest.config.ts (setupFilesAfterEnv) + jest.setup.ts - npm scripts: test, test:watch - 샘플 테스트 3개, 13/13 통과: - i18n/config: isLocale + detectBrowserLocale (5 케이스) - Stars 컴포넌트: 별점/aria/clamp/showNumber (5 케이스) - admin-utils: getAdminToken + authHeaders (4 케이스) ARIA Tabs (MyReviewsList): - role=tablist + tab + aria-selected + aria-controls + tabIndex - panel에 role=tabpanel + aria-labelledby next/image: - next.config.ts remotePatterns: lh3.googleusercontent.com / i.ytimg.com / yt3.ggpht.com - ReviewSection의 user_avatar_url에 명시적 eslint-disable + 사유 후속(별도): 전체 컴포넌트 테스트 점진 추가, 백엔드 JUnit 인프라, E2E (Playwright), CI 통합 설계서: docs/design/343-frontend-test-infra/README.md Refs: #343
29 lines
757 B
TypeScript
29 lines
757 B
TypeScript
/**
|
|
* #343 — admin-utils 순수 함수 단위 테스트.
|
|
*/
|
|
import { getAdminToken, authHeaders } from "@/lib/admin-utils";
|
|
|
|
describe("admin-utils", () => {
|
|
beforeEach(() => {
|
|
localStorage.clear();
|
|
});
|
|
|
|
it("getAdminToken returns null when not set", () => {
|
|
expect(getAdminToken()).toBeNull();
|
|
});
|
|
|
|
it("getAdminToken returns stored token", () => {
|
|
localStorage.setItem("tasteby_token", "abc123");
|
|
expect(getAdminToken()).toBe("abc123");
|
|
});
|
|
|
|
it("authHeaders is empty when no token", () => {
|
|
expect(authHeaders()).toEqual({});
|
|
});
|
|
|
|
it("authHeaders includes Bearer when token set", () => {
|
|
localStorage.setItem("tasteby_token", "xyz");
|
|
expect(authHeaders()).toEqual({ Authorization: "Bearer xyz" });
|
|
});
|
|
});
|