Skip to content

Commit 3d3ccc3

Browse files
committed
chore: add test for multi-select
1 parent d1c06a7 commit 3d3ccc3

File tree

2 files changed

+79
-0
lines changed

2 files changed

+79
-0
lines changed

site/src/pages/CreateWorkspacePage/CreateWorkspacePageExperimental.test.tsx

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
mockSwitchParameter,
1616
mockSliderParameter,
1717
validationParameter,
18+
mockMultiSelectParameter,
1819
} from "testHelpers/entities";
1920
import {
2021
renderWithAuth,
@@ -183,6 +184,7 @@ const mockDynamicParametersResponse: DynamicParametersResponse = {
183184
mockSliderParameter,
184185
mockSwitchParameter,
185186
mockTagSelectParameter,
187+
mockMultiSelectParameter,
186188
],
187189
diagnostics: [],
188190
};
@@ -508,6 +510,38 @@ describe("CreateWorkspacePageExperimental", () => {
508510
});
509511
});
510512

513+
it("renders multi-select parameter", async () => {
514+
renderCreateWorkspacePageExperimental();
515+
await waitForLoaderToBeRemoved();
516+
517+
await waitFor(() => {
518+
expect(screen.getByText("IDEs")).toBeInTheDocument();
519+
});
520+
521+
const multiSelect = screen.getByTestId("multiselect-ides");
522+
expect(multiSelect).toBeInTheDocument();
523+
524+
const select = multiSelect.querySelector('[role="combobox"]');
525+
expect(select).toBeInTheDocument();
526+
527+
await waitFor(async () => {
528+
await userEvent.click(select!);
529+
});
530+
531+
expect(
532+
screen.getByRole("option", { name: /vscode/i }),
533+
).toBeInTheDocument();
534+
expect(
535+
screen.getByRole("option", { name: /cursor/i }),
536+
).toBeInTheDocument();
537+
expect(
538+
screen.getByRole("option", { name: /goland/i }),
539+
).toBeInTheDocument();
540+
expect(
541+
screen.getByRole("option", { name: /windsurf/i }),
542+
).toBeInTheDocument();
543+
});
544+
511545
it("displays parameter validation errors", async () => {
512546
jest
513547
.spyOn(API, "templateVersionDynamicParameters")
@@ -815,6 +849,7 @@ describe("CreateWorkspacePageExperimental", () => {
815849
value: "true",
816850
}),
817851
expect.objectContaining({ name: "tags", value: "[]" }),
852+
expect.objectContaining({ name: "ides", value: "[]" }),
818853
],
819854
}),
820855
);

site/src/testHelpers/entities.ts

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3136,6 +3136,50 @@ export const mockSliderParameter: TypesGen.PreviewParameter = {
31363136
order: 2,
31373137
};
31383138

3139+
export const mockMultiSelectParameter: TypesGen.PreviewParameter = {
3140+
name: "ides",
3141+
display_name: "IDEs",
3142+
description: "Enabled IDEs",
3143+
type: "list(string)",
3144+
form_type: "multi-select",
3145+
mutable: true,
3146+
ephemeral: false,
3147+
required: false,
3148+
value: { value: "[]", valid: true },
3149+
default_value: { value: "[]", valid: true },
3150+
options: [
3151+
{
3152+
name: "vscode",
3153+
description: "Visual Studio Code",
3154+
value: { value: "vscode", valid: true },
3155+
icon: "",
3156+
},
3157+
{
3158+
name: "cursor",
3159+
description: "Cursor",
3160+
value: { value: "cursor", valid: true },
3161+
icon: "",
3162+
},
3163+
{
3164+
name: "goland",
3165+
description: "Goland",
3166+
value: { value: "goland", valid: true },
3167+
icon: "",
3168+
},
3169+
{
3170+
name: "windsurf",
3171+
description: "Windsurf",
3172+
value: { value: "windsurf", valid: true },
3173+
icon: "",
3174+
},
3175+
],
3176+
validations: [],
3177+
diagnostics: [],
3178+
icon: "",
3179+
styling: {},
3180+
order: 5,
3181+
};
3182+
31393183
export const validationParameter: TypesGen.PreviewParameter = {
31403184
name: "invalid_number",
31413185
display_name: "Invalid Parameter",

0 commit comments

Comments
 (0)