8000 refactor(site): Show immutable parameters in the settings by BrunoQuaresma · Pull Request #7383 · coder/coder · GitHub
[go: up one dir, main page]

Skip to content

refactor(site): Show immutable parameters in the settings #7383

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
May 3, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Refactor tests
  • Loading branch information
BrunoQuaresma committed May 2, 2023
commit 5b9823e1f89c78160c14165ae22211af190e6665
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
import userEvent from "@testing-library/user-event"
import {
renderWithWorkspaceSettingsLayout,
waitForLoaderToBeRemoved,
} from "testHelpers/renderHelpers"
import WorkspaceParametersPage from "./WorkspaceParametersPage"
import { screen, waitFor, within } from "@testing-library/react"
import * as api from "api/api"
import {
MockWorkspace,
MockTemplateVersionParameter1,
MockTemplateVersionParameter2,
MockWorkspaceBuildParameter1,
MockWorkspaceBuildParameter2,
MockWorkspaceBuild,
} from "testHelpers/entities"

test("Submit the workspace settings page successfully", async () => {
// Mock the API calls that loads data
jest
.spyOn(api, "getWorkspaceByOwnerAndName")
.mockResolvedValueOnce(MockWorkspace)
jest
.spyOn(api, "getTempl 8000 ateVersionRichParameters")
.mockResolvedValueOnce([
MockTemplateVersionParameter1,
MockTemplateVersionParameter2,
])
jest
.spyOn(api, "getWorkspaceBuildParameters")
.mockResolvedValueOnce([
MockWorkspaceBuildParameter1,
MockWorkspaceBuildParameter2,
])
// Mock the API calls that submit data
const postWorkspaceBuildSpy = jest
.spyOn(api, "postWorkspaceBuild")
.mockResolvedValue(MockWorkspaceBuild)
// Setup event and rendering
const user = userEvent.setup()
renderWithWorkspaceSettingsLayout(<WorkspaceParametersPage />, {
route: "/@test-user/test-workspace/settings",
path: "/@:username/:workspace/settings",
// Need this because after submit the user is redirected
extraRoutes: [{ path: "/@:username/:workspace", element: <div /> }],
})
await waitForLoaderToBeRemoved()
// Fill the form and submit
const form = screen.getByTestId("form")
const parameter1 = within(form).getByLabelText(
MockWorkspaceBuildParameter1.name,
{ exact: false },
)
await user.clear(parameter1)
await user.type(parameter1, "new-value")
const parameter2 = within(form).getByLabelText(
MockWorkspaceBuildParameter2.name,
{ exact: false },
)
await user.clear(parameter2)
await user.type(parameter2, "1")
await user.click(within(form).getByRole("button", { name: "Submit" }))
// Assert that the API calls were made with the correct data
await waitFor(() => {
expect(postWorkspaceBuildSpy).toHaveBeenCalledWith(MockWorkspace.id, {
transition: "start",
rich_parameter_values: [
{ name: MockTemplateVersionParameter1.name, value: "new-value" },
{ name: MockTemplateVersionParameter2.name, value: "1" },
],
})
})
})
Original file line number Diff line number Diff line change
Expand Up @@ -6,39 +6,17 @@ import {
import WorkspaceSettingsPage from "./WorkspaceSettingsPage"
import { screen, waitFor, within } from "@testing-library/react"
import * as api from "api/api"
import {
MockWorkspace,
MockTemplateVersionParameter1,
MockTemplateVersionParameter2,
MockWorkspaceBuildParameter1,
MockWorkspaceBuildParameter2,
MockWorkspaceBuild,
} from "testHelpers/entities"
import { MockWorkspace } from "testHelpers/entities"

test("Submit the workspace settings page successfully", async () => {
// Mock the API calls that loads data
jest
.spyOn(api, "getWorkspaceByOwnerAndName")
.mockResolvedValueOnce(MockWorkspace)
jest
.spyOn(api, "getTemplateVersionRichParameters")
.mockResolvedValueOnce([
MockTemplateVersionParameter1,
MockTemplateVersionParameter2,
])
jest
.spyOn(api, "getWorkspaceBuildParameters")
.mockResolvedValueOnce([
MockWorkspaceBuildParameter1,
MockWorkspaceBuildParameter2,
])
// Mock the API calls that submit data
const patchWorkspaceSpy = jest
.spyOn(api, "patchWorkspace")
.mockResolvedValue()
const postWorkspaceBuildSpy = jest
.spyOn(api, "postWorkspa 9216 ceBuild")
.mockResolvedValue(MockWorkspaceBuild)
// Setup event and rendering
const user = userEvent.setup()
renderWithWorkspaceSettingsLayout(<WorkspaceSettingsPage />, {
Expand All @@ -53,30 +31,11 @@ test("Submit the workspace settings page successfully", async () => {
const name = within(form).getByLabelText("Name")
await user.clear(name)
await user.type(within(form).getByLabelText("Name"), "new-name")
const parameter1 = within(form).getByLabelText(
MockWorkspaceBuildParameter1.name,
{ exact: false },
)
await user.clear(parameter1)
await user.type(parameter1, "new-value")
const parameter2 = within(form).getByLabelText(
MockWorkspaceBuildParameter2.name,
{ exact: false },
)
await user.clear(parameter2)
await user.type(parameter2, "1")
await user.click(within(form).getByRole("button", { name: "Submit" }))
// Assert that the API calls were made with the correct data
await waitFor(() => {
expect(patchWorkspaceSpy).toHaveBeenCalledWith(MockWorkspace.id, {
name: "new-name",
})
})
expect(postWorkspaceBuildSpy).toHaveBeenCalledWith(MockWorkspace.id, {
transition: "start",
rich_parameter_values: [
{ name: MockTemplateVersionParameter1.name, value: "new-value" },
{ name: MockTemplateVersionParameter2.name, value: "1" },
],
})
})
0