Add upstream HeadlessUI Label tests
This commit is contained in:
66
src/lib/components/label/label.test.ts
vendored
Normal file
66
src/lib/components/label/label.test.ts
vendored
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
import { render } from "@testing-library/svelte";
|
||||||
|
import Label from "./Label.svelte";
|
||||||
|
import LabelProvider from "./LabelProvider.svelte";
|
||||||
|
import svelte from "svelte-inline-compile";
|
||||||
|
|
||||||
|
let mockId = 0;
|
||||||
|
jest.mock("../../hooks/use-id", () => {
|
||||||
|
return {
|
||||||
|
useId: jest.fn(() => ++mockId),
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
beforeEach(() => (mockId = 0));
|
||||||
|
afterAll(() => jest.restoreAllMocks());
|
||||||
|
|
||||||
|
it("should be possible to use a LabelProvider without using a Label", async () => {
|
||||||
|
let { container } = render(svelte`
|
||||||
|
<LabelProvider let:labelledby>
|
||||||
|
<div aria-labelledby={labelledby}>
|
||||||
|
No label
|
||||||
|
</div>
|
||||||
|
</LabelProvider>
|
||||||
|
`);
|
||||||
|
expect(container.firstChild?.firstChild).toMatchInlineSnapshot(`
|
||||||
|
<div>
|
||||||
|
No label
|
||||||
|
</div>
|
||||||
|
`);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should be possible to use a LabelProvider and a single Label, and have them linked", async () => {
|
||||||
|
let { container } = render(svelte`
|
||||||
|
<LabelProvider let:labelledby>
|
||||||
|
<Label>I am a label</Label>
|
||||||
|
<div aria-labelledby={labelledby}>
|
||||||
|
<span>Contents</span>
|
||||||
|
</div>
|
||||||
|
</LabelProvider>
|
||||||
|
`);
|
||||||
|
expect(container.firstChild?.firstChild).toMatchInlineSnapshot(`
|
||||||
|
<label
|
||||||
|
id="headlessui-label-1"
|
||||||
|
>
|
||||||
|
I am a label
|
||||||
|
</label>
|
||||||
|
`);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should be possible to use a LabelProvider and multiple Label components, and have them linked", async () => {
|
||||||
|
let { container } = render(svelte`
|
||||||
|
<LabelProvider let:labelledby>
|
||||||
|
<Label>I am a label</Label>
|
||||||
|
<div aria-labelledby={labelledby}>
|
||||||
|
<span>Contents</span>
|
||||||
|
</div>
|
||||||
|
<Label>I am also a label</Label>
|
||||||
|
</LabelProvider>
|
||||||
|
`);
|
||||||
|
expect(container.firstChild?.firstChild).toMatchInlineSnapshot(`
|
||||||
|
<label
|
||||||
|
id="headlessui-label-1"
|
||||||
|
>
|
||||||
|
I am a label
|
||||||
|
</label>
|
||||||
|
`);
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user