mirror of
https://github.com/coder/coder.git
synced 2025-07-12 00:14:10 +00:00
feat: allow admins to create workspaces for other users in UI (#4247)
* added permission for creating a workspace on behalf of a user * committing stashed files * hooked up autocomplete for users * added label * added translations * wrote test * added inputMargin prop * fixed permissions * added inputSTyle prop * ran prettier * fix lint
This commit is contained in:
@ -1,12 +1,16 @@
|
||||
/* eslint-disable @typescript-eslint/no-floating-promises */
|
||||
import { screen } from "@testing-library/react"
|
||||
import { fireEvent, screen, waitFor } from "@testing-library/react"
|
||||
import userEvent from "@testing-library/user-event"
|
||||
import * as API from "api/api"
|
||||
import { Language as FooterLanguage } from "../../components/FormFooter/FormFooter"
|
||||
import { MockTemplate, MockWorkspace } from "../../testHelpers/entities"
|
||||
import { renderWithAuth } from "../../testHelpers/renderHelpers"
|
||||
import { Language as FooterLanguage } from "components/FormFooter/FormFooter"
|
||||
import i18next from "i18next"
|
||||
import { MockTemplate, MockUser, MockWorkspace, MockWorkspaceRequest } from "testHelpers/entities"
|
||||
import { renderWithAuth } from "testHelpers/renderHelpers"
|
||||
import CreateWorkspacePage from "./CreateWorkspacePage"
|
||||
import { Language } from "./CreateWorkspacePageView"
|
||||
|
||||
const { t } = i18next
|
||||
|
||||
const nameLabelText = t("nameLabel", { ns: "createWorkspacePage" })
|
||||
|
||||
const renderCreateWorkspacePage = () => {
|
||||
return renderWithAuth(<CreateWorkspacePage />, {
|
||||
@ -22,14 +26,26 @@ describe("CreateWorkspacePage", () => {
|
||||
expect(element).toBeDefined()
|
||||
})
|
||||
|
||||
it("succeeds", async () => {
|
||||
it("succeeds with default owner", async () => {
|
||||
jest.spyOn(API, "getUsers").mockResolvedValueOnce([MockUser])
|
||||
jest.spyOn(API, "createWorkspace").mockResolvedValueOnce(MockWorkspace)
|
||||
|
||||
renderCreateWorkspacePage()
|
||||
|
||||
const nameField = await screen.findByLabelText(Language.nameLabel)
|
||||
userEvent.type(nameField, "test")
|
||||
const nameField = await screen.findByLabelText(nameLabelText)
|
||||
|
||||
// have to use fireEvent b/c userEvent isn't cleaning up properly between tests
|
||||
fireEvent.change(nameField, {
|
||||
target: { value: "test" },
|
||||
})
|
||||
|
||||
const submitButton = screen.getByText(FooterLanguage.defaultSubmitLabel)
|
||||
userEvent.click(submitButton)
|
||||
|
||||
await waitFor(() =>
|
||||
expect(API.createWorkspace).toBeCalledWith(MockUser.organization_ids[0], MockUser.id, {
|
||||
...MockWorkspaceRequest,
|
||||
}),
|
||||
)
|
||||
})
|
||||
})
|
||||
|
Reference in New Issue
Block a user