test: cover quicklaunch + service widget helpers

This commit is contained in:
shamoon
2026-02-04 08:34:46 -08:00
parent 4c58833ec3
commit c576fbeb54
6 changed files with 198 additions and 3 deletions

View File

@@ -0,0 +1,45 @@
// @vitest-environment jsdom
import { render, screen } from "@testing-library/react";
import { describe, expect, it } from "vitest";
import Error from "./error";
describe("components/services/widget/error", () => {
it("normalizes string errors to an object with a message", () => {
render(<Error error="boom" />);
expect(screen.getByText((_, el) => el?.textContent === "widget.api_error:")).toBeInTheDocument();
expect(screen.getByText(/boom/)).toBeInTheDocument();
});
it("normalizes numeric errors to an object with a message", () => {
render(<Error error={500} />);
expect(screen.getByText(/Error 500/)).toBeInTheDocument();
});
it("unwraps nested response errors and renders raw/data sections", () => {
render(
<Error
error={{
message: "outer",
data: {
error: {
message: "inner",
url: "https://example.com",
rawError: ["oops", { code: 1 }],
data: { type: "Buffer", data: [97, 98] },
},
},
}}
/>,
);
expect(screen.getByText(/inner/)).toBeInTheDocument();
expect(screen.getByText("https://example.com")).toBeInTheDocument();
expect(screen.getByText(/\"code\": 1/)).toBeInTheDocument();
// Buffer.from({type:"Buffer",data:[97,98]}).toString() === "ab"
expect(screen.getByText(/ab/)).toBeInTheDocument();
});
});

View File

@@ -0,0 +1,29 @@
// @vitest-environment jsdom
import { render, screen } from "@testing-library/react";
import { describe, expect, it } from "vitest";
import { useContext } from "react";
import { BlockHighlightContext } from "./highlight-context";
function Reader() {
const value = useContext(BlockHighlightContext);
return <div data-testid="value">{value === null ? "null" : value}</div>;
}
describe("components/services/widget/highlight-context", () => {
it("defaults to null", () => {
render(<Reader />);
expect(screen.getByTestId("value")).toHaveTextContent("null");
});
it("provides a value to consumers", () => {
render(
<BlockHighlightContext.Provider value="on">
<Reader />
</BlockHighlightContext.Provider>,
);
expect(screen.getByTestId("value")).toHaveTextContent("on");
});
});