feat(career): add factual evidence bank

This commit is contained in:
cesnimda
2026-08-31 17:03:09 +02:00
parent 5337ba3a5e
commit 78ad0c66f9
16 changed files with 362 additions and 5 deletions
@@ -0,0 +1,23 @@
import React from "react";
import "@testing-library/jest-dom";
import { fireEvent, render, screen, waitFor } from "@testing-library/react";
import CareerEvidenceBank from "./views/career/CareerEvidenceBank";
import { I18nProvider } from "./i18n/I18nProvider";
import { api } from "./api";
jest.mock("./api", () => ({ api: { get: jest.fn(), post: jest.fn(), delete: jest.fn() }, getApiErrorMessage: (_e: unknown, fallback: string) => fallback }));
jest.mock("./confirm", () => ({ useConfirm: () => ({ confirm: jest.fn().mockResolvedValue(true) }) }));
const mocked = api as jest.Mocked<typeof api>;
test("saves factual evidence with provenance and tags", async () => {
mocked.get.mockResolvedValue({ data: [] } as any);
mocked.post.mockResolvedValue({ data: { id: 1, category: "achievement", title: "Reduced incidents", statement: "Added rollback checks", tags: ["reliability"], sourceReference: "retrospective" } } as any);
render(<I18nProvider><CareerEvidenceBank /></I18nProvider>);
fireEvent.change(await screen.findByLabelText("Short title"), { target: { value: "Reduced incidents" } });
fireEvent.change(screen.getByLabelText("Evidence statement"), { target: { value: "Added rollback checks" } });
fireEvent.change(screen.getByLabelText("Skills and keywords"), { target: { value: "reliability" } });
fireEvent.change(screen.getByLabelText("Source or provenance"), { target: { value: "retrospective" } });
fireEvent.click(screen.getByRole("button", { name: "Save evidence" }));
await waitFor(() => expect(mocked.post).toHaveBeenCalledWith("/career/evidence", expect.objectContaining({ title: "Reduced incidents", isVerified: true, sourceType: "manual" })));
expect(await screen.findByText("Added rollback checks")).toBeInTheDocument();
});