diff --git a/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPage.test.tsx b/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPage.test.tsx index 47011b6266..42554fc513 100644 --- a/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPage.test.tsx +++ b/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPage.test.tsx @@ -1,10 +1,32 @@ -import { screen } from "@testing-library/react" +import { screen, waitFor } from "@testing-library/react" import WS from "jest-websocket-mock" import { renderWithAuth } from "../../testHelpers/renderHelpers" import { WorkspaceBuildPage } from "./WorkspaceBuildPage" import { MockWorkspace, MockWorkspaceBuild } from "testHelpers/entities" +import * as API from "api/api" + +afterEach(() => { + WS.clean() +}) describe("WorkspaceBuildPage", () => { + test("gets the right workspace build", async () => { + const getWorkspaceBuildSpy = jest + .spyOn(API, "getWorkspaceBuildByNumber") + .mockResolvedValue(MockWorkspaceBuild) + renderWithAuth(, { + route: `/@${MockWorkspace.owner_name}/${MockWorkspace.name}/builds/${MockWorkspace.latest_build.build_number}`, + path: "/:username/:workspace/builds/:buildNumber", + }) + await waitFor(() => + expect(getWorkspaceBuildSpy).toBeCalledWith( + MockWorkspace.owner_name, + MockWorkspace.name, + `${MockWorkspaceBuild.build_number}`, + ), + ) + }) + test("the mock server seamlessly handles JSON protocols", async () => { const server = new WS("ws://localhost:1234", { jsonProtocol: true }) const client = new WebSocket("ws://localhost:1234") diff --git a/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPage.tsx b/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPage.tsx index ff81b47fff..3cffeeff84 100644 --- a/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPage.tsx +++ b/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPage.tsx @@ -7,7 +7,14 @@ import { workspaceBuildMachine } from "../../xServices/workspaceBuild/workspaceB import { WorkspaceBuildPageView } from "./WorkspaceBuildPageView" export const WorkspaceBuildPage: FC = () => { - const { username, workspace: workspaceName, buildNumber } = useParams() + const params = useParams() as { + username: string + workspace: string + buildNumber: string + } + const workspaceName = params.workspace + const buildNumber = params.buildNumber + const username = params.username.replace("@", "") const [buildState] = useMachine(workspaceBuildMachine, { context: { username, workspaceName, buildNumber, timeCursor: new Date() }, })