Show seven cards on the four method decks and open each as a routing overlay of its parts, so groups write from empty fields with Generate draft, search the full deck, and see unselected scope chips with enough contrast.

This commit is contained in:
adilallo committed 2026-11-05 22:43:30 -07:00
1 parent dea7dd7fbd
commit 46656f52d3
28 files changed
+1349 -318

No files matched your search

+60
View File
@@ -155,6 +155,66 @@ describe("CardStack Component", () => {
expect(screen.getAllByText("SELECTED").length).toBeGreaterThanOrEqual(1);
});
test("compact single-stack shows seven recommended cards and hides the tag", () => {
const cards = Array.from({ length: 8 }, (_, index) => ({
id: String(index),
label: `Card ${index}`,
supportText: `Desc ${index}`,
recommended: true,
}));
render(
<CardStack cards={cards} layout="singleStack" expanded={false} />,
);
expect(
screen.getAllByRole("button", { name: /Card \d: Desc \d/ }),
).toHaveLength(7);
expect(screen.queryByText("RECOMMENDED")).not.toBeInTheDocument();
});
test("See all search filters the expanded single-stack", () => {
render(
<CardStack
cards={SAMPLE_CARDS}
layout="singleStack"
expanded={true}
searchPlaceholder="Search this deck"
/>,
);
const search = screen.getByRole("searchbox", { name: "Search this deck" });
fireEvent.change(search, { target: { value: "Option B" } });
expect(
screen.getByRole("button", { name: "Option B: Description B" }),
).toBeInTheDocument();
expect(
screen.queryByRole("button", { name: "Option A: Description A" }),
).not.toBeInTheDocument();
});
test("compact alternative row opens the named card", () => {
const onAlternativeSelect = vi.fn();
render(
<CardStack
cards={[
{
id: "1",
label: "Option A",
supportText: "Description A",
recommended: true,
alternative: { id: "2", label: "Option B" },
},
]}
layout="singleStack"
alternativePrefix="Another way communities do this:"
onAlternativeSelect={onAlternativeSelect}
/>,
);
fireEvent.click(screen.getByRole("button", { name: "Option B" }));
expect(onAlternativeSelect).toHaveBeenCalledWith("2");
});
test("calls onCardSelect when re-clicking an already selected card", () => {
const onCardSelect = vi.fn();
render(