Files
diff-tools/tests/components/workbench.test.tsx
T
zemion 46fc10f745
Verify / verify (push) Canceled after 0s
Release Diff Tools 0.2.0
2026-09-02 04:43:16 +02:00

55 lines
2.3 KiB
TypeScript

import { fireEvent, render, screen, waitFor } from "@testing-library/react";
import userEvent from "@testing-library/user-event";
import { describe, expect, it } from "vitest";
import { Workbench } from "../../src/components/Workbench";
describe("Diff Tools workbench", () => {
it("renders exact newline metadata and both result layouts", async () => {
const user = userEvent.setup();
render(<Workbench />);
expect(screen.getByText("Browser-local")).toBeVisible();
expect(await screen.findByText(/substantive change row/u)).toBeVisible();
expect(screen.getAllByText("CRLF").length).toBeGreaterThan(0);
await user.click(screen.getByRole("button", { name: "Side by side" }));
expect(
screen.getByRole("table", { name: "Side-by-side differences" }),
).toBeVisible();
});
it("keeps exact large numbers in the RFC 6902 artifact", async () => {
const user = userEvent.setup();
render(<Workbench />);
await user.click(screen.getByRole("button", { name: /JSON Semantic/u }));
fireEvent.change(screen.getByTestId("left-editor"), {
target: { value: '{"n":1}' },
});
fireEvent.change(screen.getByTestId("right-editor"), {
target: { value: '{"n":9007199254740993123456789}' },
});
await user.click(screen.getByRole("button", { name: "Compare now" }));
await waitFor(() =>
expect(screen.getByText(/1 substantive change row/u)).toBeVisible(),
);
await user.click(screen.getByRole("button", { name: "Patches" }));
expect(
(screen.getByTestId("json-patch") as HTMLTextAreaElement).value,
).toContain("9007199254740993123456789");
});
it("keeps the last successful XML result visible beside an error", async () => {
const user = userEvent.setup();
render(<Workbench />);
await user.click(
screen.getByRole("button", { name: /XML Namespace-aware/u }),
);
expect(await screen.findByText(/substantive change row/u)).toBeVisible();
const verdict = screen.getByText("Different", { exact: true });
fireEvent.change(screen.getByTestId("left-editor"), {
target: { value: "<!DOCTYPE x><x/>" },
});
await user.click(screen.getByRole("button", { name: "Compare now" }));
expect(await screen.findByText("xml.doctype-rejected")).toBeVisible();
expect(verdict).toBeVisible();
});
});