Skip to content

Commit 5338147

Browse files
authored
test: add workspace rename use case (#169)
1 parent c9e8715 commit 5338147

File tree

3 files changed

+39
-5
lines changed

3 files changed

+39
-5
lines changed

src/features/workspace/components/__tests__/archive-workspace.test.tsx

+4-3
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ const mockToast = vi.fn();
88
vi.mock("react-router-dom", async () => {
99
const original =
1010
await vi.importActual<typeof import("react-router-dom")>(
11-
"react-router-dom"
11+
"react-router-dom",
1212
);
1313
return {
1414
...original,
@@ -19,7 +19,7 @@ vi.mock("react-router-dom", async () => {
1919
vi.mock("@stacklok/ui-kit", async () => {
2020
const original =
2121
await vi.importActual<typeof import("@stacklok/ui-kit")>(
22-
"@stacklok/ui-kit"
22+
"@stacklok/ui-kit",
2323
);
2424
return {
2525
...original,
@@ -31,5 +31,6 @@ test("archive workspace", async () => {
3131
render(<ArchiveWorkspace isArchived={false} workspaceName="foo" />);
3232

3333
await userEvent.click(screen.getByRole("button", { name: /archive/i }));
34-
await waitFor(() => expect(mockNavigate).toBeCalled());
34+
await waitFor(() => expect(mockNavigate).toHaveBeenCalledTimes(1));
35+
expect(mockNavigate).toHaveBeenCalledWith("/workspaces");
3536
});

src/features/workspace/components/workspace-name.tsx

+4-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,10 @@ export function WorkspaceName({
3939

4040
return (
4141
<Form onSubmit={handleSubmit} validationBehavior="aria">
42-
<Card className={twMerge(className, "shrink-0")}>
42+
<Card
43+
className={twMerge(className, "shrink-0")}
44+
data-testid="workspace-name"
45+
>
4346
<CardBody>
4447
<TextField
4548
aria-label="Workspace name"

src/routes/__tests__/route-workspace.test.tsx

+31-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
import { render, waitFor, within } from "@/lib/test-utils";
2-
import { test, expect } from "vitest";
2+
import { test, expect, vi } from "vitest";
3+
import userEvent from "@testing-library/user-event";
34
import { RouteWorkspace } from "../route-workspace";
45

6+
const mockNavigate = vi.fn();
7+
58
const renderComponent = () =>
69
render(<RouteWorkspace />, {
710
routeConfig: {
@@ -24,6 +27,17 @@ vi.mock("@monaco-editor/react", () => {
2427
return { default: FakeEditor };
2528
});
2629

30+
vi.mock("react-router-dom", async () => {
31+
const original =
32+
await vi.importActual<typeof import("react-router-dom")>(
33+
"react-router-dom",
34+
);
35+
return {
36+
...original,
37+
useNavigate: () => mockNavigate,
38+
};
39+
});
40+
2741
test("renders title", () => {
2842
const { getByRole } = renderComponent();
2943

@@ -59,3 +73,19 @@ test("has breadcrumbs", () => {
5973
).toHaveAttribute("href", "/workspaces");
6074
expect(within(breadcrumbs).getByText(/workspace settings/i)).toBeVisible();
6175
});
76+
77+
test("rename workspace", async () => {
78+
const { getByRole, getByTestId } = renderComponent();
79+
80+
const workspaceName = getByRole("textbox", {
81+
name: /workspace name/i,
82+
});
83+
await userEvent.type(workspaceName, "_renamed");
84+
85+
const saveBtn = within(getByTestId("workspace-name")).getByRole("button", {
86+
name: /save/i,
87+
});
88+
await userEvent.click(saveBtn);
89+
await waitFor(() => expect(mockNavigate).toHaveBeenCalledTimes(1));
90+
expect(mockNavigate).toHaveBeenCalledWith("/workspace/foo_renamed");
91+
});

0 commit comments

Comments
 (0)