Skip to content

Commit ecaa48d

Browse files
committed
test: add unit tests for custom slots
1 parent bfc61f6 commit ecaa48d

25 files changed

+221
-0
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<script lang="ts">
2+
import { ComboBox } from "carbon-components-svelte";
3+
import type { ComboBoxItem } from "carbon-components-svelte/ComboBox/ComboBox.svelte";
4+
5+
const items: ComboBoxItem[] = [
6+
{ id: "0", text: "Option 1" },
7+
{ id: "1", text: "Option 2" },
8+
];
9+
</script>
10+
11+
<ComboBox {items} labelText="Default label">
12+
<span slot="labelText">Custom label content</span>
13+
</ComboBox>

tests/ComboBox/ComboBox.test.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import type ComboBoxComponent from "carbon-components-svelte/ComboBox/ComboBox.s
33
import type { ComponentEvents, ComponentProps } from "svelte";
44
import { tick } from "svelte";
55
import { isSvelte5, user } from "../setup-tests";
6+
import ComboBoxSlot from "./ComboBox.slot.test.svelte";
67
import ComboBox from "./ComboBox.test.svelte";
78
import ComboBoxCustom from "./ComboBoxCustom.test.svelte";
89
import ComboBoxGenerics from "./ComboBoxGenerics.test.svelte";
@@ -984,4 +985,11 @@ describe("ComboBox", () => {
984985
expectTypeOf<SelectedItem>().toHaveProperty("text");
985986
});
986987
});
988+
989+
it("supports custom label slot", () => {
990+
render(ComboBoxSlot);
991+
992+
const customLabel = screen.getByText("Custom label content");
993+
expect(customLabel).toBeInTheDocument();
994+
});
987995
});

tests/ContextMenu/ContextMenu.test.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { render, screen } from "@testing-library/svelte";
22
import { user } from "../setup-tests";
33
import ContextMenu from "./ContextMenu.test.svelte";
4+
import ContextMenuOptionSlot from "./ContextMenuOption.slot.test.svelte";
45

56
describe("ContextMenu", () => {
67
beforeEach(() => {
@@ -274,4 +275,11 @@ describe("ContextMenu", () => {
274275
// Submenu should be positioned at or near 0 (left edge of viewport).
275276
expect(submenuX).toBeGreaterThanOrEqual(0);
276277
});
278+
279+
it("supports custom label slot for ContextMenuOption", () => {
280+
render(ContextMenuOptionSlot);
281+
282+
const customLabel = screen.getByText("Custom label content");
283+
expect(customLabel).toBeInTheDocument();
284+
});
277285
});
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<script lang="ts">
2+
import { ContextMenu, ContextMenuOption } from "carbon-components-svelte";
3+
</script>
4+
5+
<ContextMenu open={true} x={0} y={0}>
6+
<ContextMenuOption labelText="Default label">
7+
<span slot="labelText">Custom label content</span>
8+
</ContextMenuOption>
9+
</ContextMenu>

tests/DatePicker/DatePicker.test.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { render, screen } from "@testing-library/svelte";
22
import { tick } from "svelte";
33
import { user } from "../setup-tests";
44
import DatePicker from "./DatePicker.test.svelte";
5+
import DatePickerInputSlot from "./DatePickerInput.slot.test.svelte";
56
import DatePickerRange from "./DatePickerRange.test.svelte";
67

78
describe("DatePicker", () => {
@@ -192,4 +193,11 @@ describe("DatePicker", () => {
192193
expect(inputStart).toHaveValue("");
193194
expect(inputEnd).toHaveValue("");
194195
});
196+
197+
it("supports custom label slot for DatePickerInput", () => {
198+
render(DatePickerInputSlot);
199+
200+
const customLabel = screen.getByText("Custom label content");
201+
expect(customLabel).toBeInTheDocument();
202+
});
195203
});
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<script lang="ts">
2+
import { DatePicker, DatePickerInput } from "carbon-components-svelte";
3+
</script>
4+
5+
<DatePicker datePickerType="simple">
6+
<DatePickerInput labelText="Default label">
7+
<span slot="labelText">Custom label content</span>
8+
</DatePickerInput>
9+
</DatePicker>

tests/FileUploader/FileUploader.test.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { render, screen } from "@testing-library/svelte";
22
import { user } from "../setup-tests";
33
import FileUploader from "./FileUploader.test.svelte";
4+
import FileUploaderButtonSlot from "./FileUploaderButton.slot.test.svelte";
5+
import FileUploaderDropContainerSlot from "./FileUploaderDropContainer.slot.test.svelte";
46

57
describe("FileUploader", () => {
68
beforeEach(() => {
@@ -180,4 +182,18 @@ describe("FileUploader", () => {
180182
expect(event.detail[0].name).toBe("file1.txt");
181183
expect(event.detail[1].name).toBe("file2.txt");
182184
});
185+
186+
it("supports custom label slot for FileUploaderButton", () => {
187+
render(FileUploaderButtonSlot);
188+
189+
const customLabel = screen.getByText("Custom label content");
190+
expect(customLabel).toBeInTheDocument();
191+
});
192+
193+
it("supports custom label slot for FileUploaderDropContainer", () => {
194+
render(FileUploaderDropContainerSlot);
195+
196+
const customLabel = screen.getByText("Custom label content");
197+
expect(customLabel).toBeInTheDocument();
198+
});
183199
});
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<script lang="ts">
2+
import { FileUploaderButton } from "carbon-components-svelte";
3+
</script>
4+
5+
<FileUploaderButton labelText="Default label">
6+
<span slot="labelText">Custom label content</span>
7+
</FileUploaderButton>
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<script lang="ts">
2+
import { FileUploaderDropContainer } from "carbon-components-svelte";
3+
</script>
4+
5+
<FileUploaderDropContainer labelText="Default label">
6+
<span slot="labelText">Custom label content</span>
7+
</FileUploaderDropContainer>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<script lang="ts">
2+
import { MultiSelect } from "carbon-components-svelte";
3+
import type { MultiSelectItem } from "carbon-components-svelte/MultiSelect/MultiSelect.svelte";
4+
5+
const items: MultiSelectItem[] = [
6+
{ id: "0", text: "Option 1" },
7+
{ id: "1", text: "Option 2" },
8+
];
9+
</script>
10+
11+
<MultiSelect {items} labelText="Default label">
12+
<span slot="labelText">Custom label content</span>
13+
</MultiSelect>

0 commit comments

Comments
 (0)