Skip to content

Commit 77d2cea

Browse files
committed
chore: add test for multi-select
1 parent 72d218a commit 77d2cea

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
@@ -3236,6 +3236,50 @@ export const mockSliderParameter: TypesGen.PreviewParameter = {
32363236
order: 2,
32373237
};
32383238

3239+
export const mockMultiSelectParameter: TypesGen.PreviewParameter = {
3240+
name: "ides",
3241+
display_name: "IDEs",
3242+
description: "Enabled IDEs",
3243+
type: "list(string)",
3244+
form_type: "multi-select",
3245+
mutable: true,
3246+
ephemeral: false,
3247+
required: false,
3248+
value: { value: "[]", valid: true },
3249+
default_value: { value: "[]", valid: true },
3250+
options: [
3251+
{
3252+
name: "vscode",
3253+
description: "Visual Studio Code",
3254+
value: { value: "vscode", valid: true },
3255+
icon: "",
3256+
},
3257+
{
3258+
name: "cursor",
3259+
description: "Cursor",
3260+
value: { value: "cursor", valid: true },
3261+
icon: "",
3262+
},
3263+
{
3264+
name: "goland",
3265+
description: "Goland",
3266+
value: { value: "goland", valid: true },
3267+
icon: "",
3268+
},
3269+
{
3270+
name: "windsurf",
3271+
description: "Windsurf",
3272+
value: { value: "windsurf", valid: true },
3273+
icon: "",
3274+
},
3275+
],
3276+
validations: [],
3277+
diagnostics: [],
3278+
icon: "",
3279+
styling: {},
3280+
order: 5,
3281+
};
3282+
32393283
export const validationParameter: TypesGen.PreviewParameter = {
32403284
name: "invalid_number",
32413285
display_name: "Invalid Parameter",

0 commit comments

Comments
 (0)