From 80abc1acc84a4b1e04a4ea5878d8b5456a3645dc Mon Sep 17 00:00:00 2001 From: BrunoQuaresma Date: Tue, 20 Jun 2023 13:19:41 +0000 Subject: [PATCH] fix(site): Fix build logs route --- .../WorkspaceBuildPage.test.tsx | 24 ++++++++++++++++++- .../WorkspaceBuildPage/WorkspaceBuildPage.tsx | 9 ++++++- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPage.test.tsx b/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPage.test.tsx index 47011b6266779..42554fc513b00 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 ff81b47fffc81..3cffeeff8456b 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() }, })