feat(ui): migrate Career Profile structured editor

This commit is contained in:
cesnimda
2026-10-12 13:32:55 +02:00
parent 704637ab37
commit f7f6b774b9
17 changed files with 8314 additions and 158 deletions
@@ -212,22 +212,16 @@ test("the parent exposes failed import-read retry without canonical saves or his
expect(mockedApi.put).not.toHaveBeenCalled();
});
test("overview retry cannot overwrite a dirty canonical draft after a failed source refresh", async () => {
test("changing language in overview cannot refetch or overwrite a dirty canonical draft", async () => {
renderCareer();
await screen.findByText("70%");
fireEvent.click(screen.getByRole("tab", { name: translations.en.careerWorkspaceProfileTab }));
fireEvent.change(screen.getByLabelText("Full name"), { target: { value: "Unsaved canonical name" } });
fireEvent.click(screen.getByRole("tab", { name: translations.en.careerWorkspaceOverviewTab }));
const originalGet = mockedApi.get.getMockImplementation()!;
mockedApi.get.mockImplementation((url: string) => url === "/career/profile"
? Promise.reject(new Error("Source refresh unavailable")) : originalGet(url));
const reads = mockedApi.get.mock.calls.length;
act(() => window.dispatchEvent(new StorageEvent("storage", { key: "uiLanguage", newValue: "nb" })));
const region = await screen.findByRole("region", { name: translations.nb.careerOverviewProfileStatus });
expect(await within(region).findByRole("alert")).toHaveTextContent(translations.nb.careerOverviewRetryDraftHint);
const reads = mockedApi.get.mock.calls.length;
const retry = within(region).getByRole("button", { name: translations.nb.retry });
expect(retry).toBeDisabled();
fireEvent.click(retry);
expect(within(region).queryByRole("alert")).not.toBeInTheDocument();
expect(mockedApi.get).toHaveBeenCalledTimes(reads);
fireEvent.click(screen.getByRole("tab", { name: translations.nb.careerWorkspaceProfileTab }));
expect(screen.getByLabelText("Fullt navn")).toHaveValue("Unsaved canonical name");