TDD,E2E 개선, 미적용 스타일 개선
CI / test (push) Failing after 2m54s
CI / e2e (push) Has been skipped
CI / pr_and_merge (push) Has been skipped

This commit is contained in:
2025-12-07 09:52:42 +09:00
parent e726f43f7c
commit a5b432fb7b
167 changed files with 7397 additions and 663 deletions
+45
View File
@@ -100,4 +100,49 @@ describe("PreviewPage - 자동 복원", () => {
expect(mockState.updateProjectConfig).toHaveBeenCalledTimes(1);
expect(mockState.updateProjectConfig).toHaveBeenCalledWith(savedConfig as ProjectConfig);
});
it("URL 쿼리의 slug 가 projectConfig.slug 와 달라도 URL slug 기준 autosave 를 복원해야 한다", () => {
const savedBlocks: Block[] = [
{
id: "saved_query_1",
type: "text",
props: {
text: "쿼리 슬러그 기반 프리뷰 블록",
align: "center",
size: "lg",
},
} as any,
];
const savedConfig: ProjectConfig = {
title: "쿼리 슬러그 프리뷰 프로젝트",
slug: "preview-autosave-from-query",
canvasPreset: "full",
} as ProjectConfig;
const payload = {
blocks: savedBlocks,
projectConfig: savedConfig,
};
// projectConfig.slug 는 다른 값으로 시작하지만,
// /preview?slug=preview-autosave-from-query URL 기준으로 autosave 를 복원해야 한다.
(mockState.projectConfig as ProjectConfig).slug = "other-slug" as any;
window.localStorage.setItem(
"pb:autosave:preview-autosave-from-query",
JSON.stringify(payload),
);
// jsdom 환경에서 URL 쿼리 슬러그를 시뮬레이션한다.
window.history.pushState({}, "", "/preview?slug=preview-autosave-from-query");
render(<PreviewPage />);
expect(mockState.replaceBlocks).toHaveBeenCalledTimes(1);
expect(mockState.replaceBlocks).toHaveBeenCalledWith(savedBlocks as any);
expect(mockState.updateProjectConfig).toHaveBeenCalledTimes(1);
expect(mockState.updateProjectConfig).toHaveBeenCalledWith(savedConfig as ProjectConfig);
});
});