chore: improve variable names of mocked users (#17701)

Many times I got confused when using MockUser and MockUser2 so I just
decided to better naming them to MockUserOwner and MockUserMember.
This commit is contained in:
Bruno Quaresma
2025-05-08 09:32:32 -03:00
committed by GitHub
parent c66e80e862
commit 2695f4e950
43 changed files with 189 additions and 192 deletions

2
.gitignore vendored
View File

@ -82,3 +82,5 @@ result
# dlv debug binaries for go tests
__debug_bin*
**/.claude/settings.local.json

View File

@ -131,7 +131,7 @@ export const WithQuota: Story = {
parameters: {
queries: [
{
key: getWorkspaceQuotaQueryKey(MockUser.username),
key: getWorkspaceQuotaQueryKey(MockUserOwner.username),
data: {
credits_consumed: 2,
budget: 40,

View File

@ -4,7 +4,7 @@ import { userEvent, within } from "@storybook/test";
import {
MockOrganization,
MockOrganization2,
MockUser,
MockUserOwner,
} from "testHelpers/entities";
import { OrganizationAutocomplete } from "./OrganizationAutocomplete";
@ -22,7 +22,7 @@ type Story = StoryObj<typeof OrganizationAutocomplete>;
export const ManyOrgs: Story = {
parameters: {
showOrganizations: true,
user: MockUser,
user: MockUserOwner,
features: ["multiple_organizations"],
permissions: { viewDeploymentConfig: true },
queries: [
@ -42,7 +42,7 @@ export const ManyOrgs: Story = {
export const OneOrg: Story = {
parameters: {
showOrganizations: true,
user: MockUser,
user: MockUserOwner,
features: ["multiple_organizations"],
permissions: { viewDeploymentConfig: true },
queries: [

View File

@ -1,5 +1,5 @@
import type { Meta, StoryObj } from "@storybook/react";
import { MockUser } from "testHelpers/entities";
import { MockUserOwner } from "testHelpers/entities";
import { UserAutocomplete } from "./UserAutocomplete";
const meta: Meta<typeof UserAutocomplete> = {
@ -12,13 +12,13 @@ type Story = StoryObj<typeof UserAutocomplete>;
export const WithLabel: Story = {
args: {
value: MockUser,
value: MockUserOwner,
label: "User",
},
};
export const NoLabel: Story = {
args: {
value: MockUser,
value: MockUserOwner,
},
};

View File

@ -3,7 +3,7 @@ import { useAuthenticated } from "hooks";
import { http, HttpResponse } from "msw";
import type { FC, PropsWithChildren } from "react";
import { QueryClientProvider } from "react-query";
import { MockPermissions, MockUser } from "testHelpers/entities";
import { MockPermissions, MockUserOwner } from "testHelpers/entities";
import {
createTestQueryClient,
renderWithAuth,
@ -82,7 +82,7 @@ describe("useAuthenticated", () => {
expect(() => {
renderHook(() => useAuthenticated(), {
wrapper: createAuthWrapper({ user: MockUser }),
wrapper: createAuthWrapper({ user: MockUserOwner }),
});
}).toThrow("Permissions are not available.");
@ -93,7 +93,7 @@ describe("useAuthenticated", () => {
expect(() => {
renderHook(() => useAuthenticated(), {
wrapper: createAuthWrapper({
user: MockUser,
user: MockUserOwner,
permissions: MockPermissions,
}),
});

View File

@ -5,8 +5,8 @@ import {
MockBuildInfo,
MockEntitlements,
MockExperiments,
MockUser,
MockUserAppearanceSettings,
MockUserOwner,
} from "testHelpers/entities";
import {
DEFAULT_METADATA_KEY,
@ -38,7 +38,7 @@ const mockDataForTags = {
"build-info": MockBuildInfo,
entitlements: MockEntitlements,
experiments: MockExperiments,
user: MockUser,
user: MockUserOwner,
userAppearance: MockUserAppearanceSettings,
regions: MockRegions,
} as const satisfies Record<MetadataKey, MetadataValue>;
@ -97,7 +97,7 @@ const populatedMetadata: RuntimeHtmlMetadata = {
},
user: {
available: true,
value: MockUser,
value: MockUserOwner,
},
userAppearance: {
available: true,

View File

@ -6,8 +6,8 @@ import {
MockPrimaryWorkspaceProxy,
MockProxyLatencies,
MockSupportLinks,
MockUser,
MockUser2,
MockUserMember,
MockUserOwner,
MockWorkspaceProxies,
} from "testHelpers/entities";
import { MobileMenu } from "./MobileMenu";
@ -36,7 +36,7 @@ const meta: Meta<typeof MobileMenu> = {
proxyLatencies: MockProxyLatencies,
proxies: MockWorkspaceProxies,
},
user: MockUser,
user: MockUserOwner,
supportLinks: MockSupportLinks,
onSignOut: fn(),
isDefaultOpen: true,
@ -63,7 +63,7 @@ export const Admin: Story = {
export const Auditor: Story = {
args: {
user: MockUser2,
user: MockUserMember,
canViewAuditLog: true,
canViewDeployment: false,
canViewHealth: false,
@ -74,7 +74,7 @@ export const Auditor: Story = {
export const OrgAdmin: Story = {
args: {
user: MockUser2,
user: MockUserMember,
canViewAuditLog: true,
canViewDeployment: false,
canViewHealth: false,
@ -85,7 +85,7 @@ export const OrgAdmin: Story = {
export const Member: Story = {
args: {
user: MockUser2,
user: MockUserMember,
canViewAuditLog: false,
canViewDeployment: false,
canViewHealth: false,

View File

@ -1,7 +1,7 @@
import type { Meta, StoryObj } from "@storybook/react";
import { userEvent, within } from "@storybook/test";
import { chromaticWithTablet } from "testHelpers/chromatic";
import { MockUser, MockUser2 } from "testHelpers/entities";
import { MockUserMember, MockUserOwner } from "testHelpers/entities";
import { withDashboardProvider } from "testHelpers/storybook";
import { NavbarView } from "./NavbarView";
@ -10,7 +10,7 @@ const meta: Meta<typeof NavbarView> = {
parameters: { chromatic: chromaticWithTablet, layout: "fullscreen" },
component: NavbarView,
args: {
user: MockUser,
user: MockUserOwner,
canViewAuditLog: true,
canViewDeployment: true,
canViewHealth: true,
@ -33,7 +33,7 @@ export const ForAdmin: Story = {
export const ForAuditor: Story = {
args: {
user: MockUser2,
user: MockUserMember,
canViewAuditLog: true,
canViewDeployment: false,
canViewHealth: false,
@ -49,7 +49,7 @@ export const ForAuditor: Story = {
export const ForOrgAdmin: Story = {
args: {
user: MockUser2,
user: MockUserMember,
canViewAuditLog: true,
canViewDeployment: false,
canViewHealth: false,
@ -65,7 +65,7 @@ export const ForOrgAdmin: Story = {
export const ForMember: Story = {
args: {
user: MockUser2,
user: MockUserMember,
canViewAuditLog: false,
canViewDeployment: false,
canViewHealth: false,

View File

@ -1,7 +1,7 @@
import { screen } from "@testing-library/react";
import userEvent from "@testing-library/user-event";
import type { ProxyContextValue } from "contexts/ProxyContext";
import { MockPrimaryWorkspaceProxy, MockUser } from "testHelpers/entities";
import { MockPrimaryWorkspaceProxy, MockUserOwner } from "testHelpers/entities";
import { renderWithAuth } from "testHelpers/renderHelpers";
import { NavbarView } from "./NavbarView";
@ -26,7 +26,7 @@ describe("NavbarView", () => {
renderWithAuth(
<NavbarView
proxyContextValue={proxyContextValue}
user={MockUser}
user={MockUserOwner}
onSignOut={noop}
canViewDeployment
canViewOrganizations
@ -43,7 +43,7 @@ describe("NavbarView", () => {
renderWithAuth(
<NavbarView
proxyContextValue={proxyContextValue}
user={MockUser}
user={MockUserOwner}
onSignOut={noop}
canViewDeployment
canViewOrganizations
@ -60,7 +60,7 @@ describe("NavbarView", () => {
renderWithAuth(
<NavbarView
proxyContextValue={proxyContextValue}
user={MockUser}
user={MockUserOwner}
onSignOut={noop}
canViewDeployment
canViewOrganizations
@ -78,7 +78,7 @@ describe("NavbarView", () => {
renderWithAuth(
<NavbarView
proxyContextValue={proxyContextValue}
user={MockUser}
user={MockUserOwner}
onSignOut={noop}
canViewDeployment
canViewOrganizations

View File

@ -8,7 +8,7 @@ import {
MockAuthMethodsAll,
MockPermissions,
MockProxyLatencies,
MockUser,
MockUserOwner,
MockWorkspaceProxies,
} from "testHelpers/entities";
import { withDesktopViewport } from "testHelpers/storybook";
@ -41,7 +41,7 @@ const meta: Meta<typeof ProxyMenu> = {
],
parameters: {
queries: [
{ key: ["me"], data: MockUser },
{ key: ["me"], data: MockUserOwner },
{ key: ["authMethods"], data: MockAuthMethodsAll },
{ key: ["hasFirstUser"], data: true },
{

View File

@ -1,6 +1,6 @@
import type { Meta, StoryObj } from "@storybook/react";
import { expect, screen, userEvent, waitFor, within } from "@storybook/test";
import { MockBuildInfo, MockUser } from "testHelpers/entities";
import { MockBuildInfo, MockUserOwner } from "testHelpers/entities";
import { withDashboardProvider } from "testHelpers/storybook";
import { UserDropdown } from "./UserDropdown";
@ -8,7 +8,7 @@ const meta: Meta<typeof UserDropdown> = {
title: "modules/dashboard/UserDropdown",
component: UserDropdown,
args: {
user: MockUser,
user: MockUserOwner,
buildInfo: MockBuildInfo,
supportLinks: [
{ icon: "docs", name: "Documentation", target: "" },

View File

@ -1,6 +1,6 @@
import { screen } from "@testing-library/react";
import { Popover } from "components/deprecated/Popover/Popover";
import { MockUser } from "testHelpers/entities";
import { MockUserOwner } from "testHelpers/entities";
import { render, waitForLoaderToBeRemoved } from "testHelpers/renderHelpers";
import { Language, UserDropdownContent } from "./UserDropdownContent";
@ -8,7 +8,7 @@ describe("UserDropdownContent", () => {
it("has the correct link for the account item", async () => {
render(
<Popover>
<UserDropdownContent user={MockUser} onSignOut={jest.fn()} />
<UserDropdownContent user={MockUserOwner} onSignOut={jest.fn()} />
</Popover>,
);
await waitForLoaderToBeRemoved();
@ -25,7 +25,7 @@ describe("UserDropdownContent", () => {
const onSignOut = jest.fn();
render(
<Popover>
<UserDropdownContent user={MockUser} onSignOut={onSignOut} />
<UserDropdownContent user={MockUserOwner} onSignOut={onSignOut} />
</Popover>,
);
await waitForLoaderToBeRemoved();

View File

@ -13,7 +13,7 @@ import {
MockAuditLogRequestPasswordReset,
MockAuditLogWithDeletedResource,
MockAuditLogWithWorkspaceBuild,
MockUser,
MockUserOwner,
} from "testHelpers/entities";
import { AuditLogRow } from "./AuditLogRow";
@ -155,7 +155,7 @@ export const NoUserAgent: Story = {
description: "{user} deleted workspace {target}",
resource_link: "/@jon/yeee/builds/35",
is_deleted: false,
user: MockUser,
user: MockUserOwner,
},
},
};

View File

@ -14,7 +14,7 @@ import {
MockAuditLog,
MockAuditLog2,
MockAuditLog3,
MockUser,
MockUserOwner,
} from "testHelpers/entities";
import { AuditPageView } from "./AuditPageView";
@ -23,7 +23,7 @@ type FilterProps = ComponentProps<typeof AuditPageView>["filterProps"];
const defaultFilterProps = getDefaultFilterProps<FilterProps>({
query: "owner:me",
values: {
username: MockUser.username,
username: MockUserOwner.username,
action: undefined,
resource_type: undefined,
organization: undefined,

View File

@ -8,7 +8,7 @@ import {
MockTemplateVersionParameter1,
MockTemplateVersionParameter2,
MockTemplateVersionParameter3,
MockUser,
MockUserOwner,
MockWorkspace,
MockWorkspaceQuota,
MockWorkspaceRequest,
@ -36,7 +36,7 @@ describe("CreateWorkspacePage", () => {
it("succeeds with default owner", async () => {
jest
.spyOn(API, "getUsers")
.mockResolvedValueOnce({ users: [MockUser], count: 1 });
.mockResolvedValueOnce({ users: [MockUserOwner], count: 1 });
jest
.spyOn(API, "getWorkspaceQuota")
.mockResolvedValueOnce(MockWorkspaceQuota);
@ -59,7 +59,7 @@ describe("CreateWorkspacePage", () => {
await waitFor(() =>
expect(API.createWorkspace).toBeCalledWith(
MockUser.id,
MockUserOwner.id,
expect.objectContaining({
...MockWorkspaceRichParametersRequest,
}),
@ -186,7 +186,7 @@ describe("CreateWorkspacePage", () => {
.mockResolvedValueOnce(MockWorkspaceQuota);
jest
.spyOn(API, "getUsers")
.mockResolvedValueOnce({ users: [MockUser], count: 1 });
.mockResolvedValueOnce({ users: [MockUserOwner], count: 1 });
jest.spyOn(API, "createWorkspace").mockResolvedValueOnce(MockWorkspace);
jest
.spyOn(API, "getTemplateVersionExternalAuth")
@ -219,7 +219,7 @@ describe("CreateWorkspacePage", () => {
await waitFor(() =>
expect(API.createWorkspace).toBeCalledWith(
MockUser.id,
MockUserOwner.id,
expect.objectContaining({
...MockWorkspaceRequest,
}),
@ -233,7 +233,7 @@ describe("CreateWorkspacePage", () => {
.mockResolvedValueOnce(MockWorkspaceQuota);
jest
.spyOn(API, "getUsers")
.mockResolvedValueOnce({ users: [MockUser], count: 1 });
.mockResolvedValueOnce({ users: [MockUserOwner], count: 1 });
jest.spyOn(API, "createWorkspace").mockResolvedValueOnce(MockWorkspace);
jest
.spyOn(API, "getTemplateVersionExternalAuth")
@ -258,7 +258,7 @@ describe("CreateWorkspacePage", () => {
await waitFor(() =>
expect(API.createWorkspace).toBeCalledWith(
MockUser.id,
MockUserOwner.id,
expect.objectContaining({
...MockWorkspaceRequest,
}),

View File

@ -8,7 +8,7 @@ import {
MockTemplateVersionParameter1,
MockTemplateVersionParameter2,
MockTemplateVersionParameter3,
MockUser,
MockUserOwner,
mockApiError,
} from "testHelpers/entities";
import { CreateWorkspacePageView } from "./CreateWorkspacePageView";
@ -19,7 +19,7 @@ const meta: Meta<typeof CreateWorkspacePageView> = {
component: CreateWorkspacePageView,
args: {
defaultName: "",
defaultOwner: MockUser,
defaultOwner: MockUserOwner,
autofillParameters: [],
template: MockTemplate,
parameters: [],

View File

@ -1,7 +1,7 @@
import type { Meta, StoryObj } from "@storybook/react";
import { DetailedError } from "api/errors";
import { chromatic } from "testHelpers/chromatic";
import { MockTemplate, MockUser } from "testHelpers/entities";
import { MockTemplate, MockUserOwner } from "testHelpers/entities";
import { CreateWorkspacePageViewExperimental } from "./CreateWorkspacePageViewExperimental";
const meta: Meta<typeof CreateWorkspacePageViewExperimental> = {
@ -12,7 +12,7 @@ const meta: Meta<typeof CreateWorkspacePageViewExperimental> = {
autofillParameters: [],
diagnostics: [],
defaultName: "",
defaultOwner: MockUser,
defaultOwner: MockUserOwner,
externalAuth: [],
externalAuthPollingState: "idle",
hasAllRequiredExternalAuth: true,

View File

@ -7,7 +7,7 @@ import type { DeploymentValues, SerpentOption } from "api/typesGenerated";
import {
MockNotificationMethodsResponse,
MockNotificationTemplates,
MockUser,
MockUserOwner,
} from "testHelpers/entities";
import {
withAuthProvider,
@ -193,7 +193,7 @@ export const baseMeta = {
data: MockNotificationMethodsResponse,
},
],
user: MockUser,
user: MockUserOwner,
permissions: { viewDeploymentConfig: true },
deploymentOptions: mockNotificationsDeploymentOptions,
deploymentValues: {

View File

@ -7,7 +7,7 @@ import {
MockOrganization,
MockOrganizationAuditorRole,
MockOrganizationPermissions,
MockUser,
MockUserOwner,
} from "testHelpers/entities";
import {
renderWithOrganizationSettingsLayout,
@ -102,11 +102,11 @@ describe("OrganizationMembersPage", () => {
it("updates the roles", async () => {
server.use(
http.put(
`/api/v2/organizations/:organizationId/members/${MockUser.id}/roles`,
`/api/v2/organizations/:organizationId/members/${MockUserOwner.id}/roles`,
async () => {
return HttpResponse.json({
...MockUser,
roles: [...MockUser.roles, MockOrganizationAuditorRole],
...MockUserOwner,
roles: [...MockUserOwner.roles, MockOrganizationAuditorRole],
});
},
),
@ -122,7 +122,7 @@ describe("OrganizationMembersPage", () => {
it("shows an error message", async () => {
server.use(
http.put(
`/api/v2/organizations/:organizationId/members/${MockUser.id}/roles`,
`/api/v2/organizations/:organizationId/members/${MockUserOwner.id}/roles`,
() => {
return HttpResponse.json(
{ message: "Error on updating the user roles." },

View File

@ -4,7 +4,7 @@ import type { UsePaginatedQueryResult } from "hooks/usePaginatedQuery";
import {
MockOrganizationMember,
MockOrganizationMember2,
MockUser,
MockUserOwner,
} from "testHelpers/entities";
import { OrganizationMembersPageView } from "./OrganizationMembersPageView";
@ -17,7 +17,7 @@ const meta: Meta<typeof OrganizationMembersPageView> = {
isAddingMember: false,
isUpdatingMemberRoles: false,
canViewMembers: true,
me: MockUser,
me: MockUserOwner,
members: [
{ ...MockOrganizationMember, groups: [] },
{ ...MockOrganizationMember2, groups: [] },

View File

@ -3,7 +3,7 @@ import userEvent from "@testing-library/user-event";
import type { Response, User } from "api/typesGenerated";
import { http, HttpResponse } from "msw";
import { createMemoryRouter } from "react-router-dom";
import { MockBuildInfo, MockUser } from "testHelpers/entities";
import { MockBuildInfo, MockUserOwner } from "testHelpers/entities";
import {
renderWithRouter,
waitForLoaderToBeRemoved,
@ -83,7 +83,7 @@ describe("Setup Page", () => {
{ status: 401 },
);
}
return HttpResponse.json(MockUser);
return HttpResponse.json(MockUserOwner);
}),
http.get<never, null, User | Response>(
"/api/v2/users/first",

View File

@ -17,8 +17,8 @@ import {
MockDeploymentConfig,
MockEntitlements,
MockExperiments,
MockUser,
MockUserAppearanceSettings,
MockUserOwner,
MockWorkspace,
MockWorkspaceAgent,
} from "testHelpers/entities";
@ -66,7 +66,7 @@ const meta = {
),
}),
queries: [
{ key: ["me"], data: MockUser },
{ key: ["me"], data: MockUserOwner },
{ key: ["authMethods"], data: MockAuthMethodsAll },
{ key: ["hasFirstUser"], data: true },
{ key: ["buildInfo"], data: MockBuildInfo },

View File

@ -4,7 +4,7 @@ import { API } from "api/api";
import WS from "jest-websocket-mock";
import { http, HttpResponse } from "msw";
import {
MockUser,
MockUserOwner,
MockWorkspace,
MockWorkspaceAgent,
} from "testHelpers/entities";
@ -13,7 +13,7 @@ import { server } from "testHelpers/server";
import TerminalPage, { Language } from "./TerminalPage";
const renderTerminal = async (
route = `/${MockUser.username}/${MockWorkspace.name}/terminal`,
route = `/${MockUserOwner.username}/${MockWorkspace.name}/terminal`,
) => {
const utils = renderWithAuth(<TerminalPage />, {
route,
@ -62,11 +62,11 @@ describe("TerminalPage", () => {
`ws://localhost/api/v2/workspaceagents/${MockWorkspaceAgent.id}/pty`,
);
await renderTerminal(
`/${MockUser.username}/${MockWorkspace.name}/terminal`,
`/${MockUserOwner.username}/${MockWorkspace.name}/terminal`,
);
await waitFor(() => {
expect(API.getWorkspaceByOwnerAndName).toHaveBeenCalledWith(
MockUser.username,
MockUserOwner.username,
MockWorkspace.name,
{ include_deleted: true },
);

View File

@ -1,6 +1,6 @@
import { screen } from "@testing-library/react";
import type { UpdateUserProfileRequest } from "api/typesGenerated";
import { MockUser2 } from "testHelpers/entities";
import { MockUserMember } from "testHelpers/entities";
import { render } from "testHelpers/renderHelpers";
import { AccountForm } from "./AccountForm";
@ -12,15 +12,15 @@ describe("AccountForm", () => {
it("allows updating username", async () => {
// Given
const mockInitialValues: UpdateUserProfileRequest = {
username: MockUser2.username,
name: MockUser2.name,
username: MockUserMember.username,
name: MockUserMember.name,
};
// When
render(
<AccountForm
editable
email={MockUser2.email}
email={MockUserMember.email}
initialValues={mockInitialValues}
isLoading={false}
onSubmit={() => {
@ -43,15 +43,15 @@ describe("AccountForm", () => {
it("does not allow updating username", async () => {
// Given
const mockInitialValues: UpdateUserProfileRequest = {
username: MockUser2.username,
name: MockUser2.name,
username: MockUserMember.username,
name: MockUserMember.name,
};
// When
render(
<AccountForm
editable={false}
email={MockUser2.email}
email={MockUserMember.email}
initialValues={mockInitialValues}
isLoading={false}
onSubmit={() => {

View File

@ -1,7 +1,7 @@
import type { Meta, StoryObj } from "@storybook/react";
import {
MockGroup as MockGroup1,
MockUser,
MockUserOwner,
mockApiError,
} from "testHelpers/entities";
import { withDashboardProvider } from "testHelpers/storybook";
@ -11,7 +11,7 @@ const MockGroup2 = {
...MockGroup1,
avatar_url: "",
display_name: "Goofy Goobers",
members: [MockUser],
members: [MockUserOwner],
};
const mockError = mockApiError({

View File

@ -1,7 +1,7 @@
import { screen } from "@testing-library/react";
import userEvent from "@testing-library/user-event";
import { API } from "api/api";
import { MockUser } from "testHelpers/entities";
import { MockUserOwner } from "testHelpers/entities";
import { renderWithAuth } from "testHelpers/renderHelpers";
import AppearancePage from "./AppearancePage";
@ -10,7 +10,7 @@ describe("appearance page", () => {
renderWithAuth(<AppearancePage />);
jest.spyOn(API, "updateAppearanceSettings").mockResolvedValueOnce({
...MockUser,
...MockUserOwner,
theme_preference: "dark",
terminal_font: "fira-code",
});
@ -26,7 +26,7 @@ describe("appearance page", () => {
renderWithAuth(<AppearancePage />);
jest.spyOn(API, "updateAppearanceSettings").mockResolvedValueOnce({
...MockUser,
...MockUserOwner,
terminal_font: "ibm-plex-mono",
theme_preference: "light",
});
@ -46,7 +46,7 @@ describe("appearance page", () => {
renderWithAuth(<AppearancePage />);
jest.spyOn(API, "updateAppearanceSettings").mockResolvedValueOnce({
...MockUser,
...MockUserOwner,
terminal_font: "fira-code",
theme_preference: "dark",
});
@ -69,12 +69,12 @@ describe("appearance page", () => {
jest
.spyOn(API, "updateAppearanceSettings")
.mockResolvedValueOnce({
...MockUser,
...MockUserOwner,
terminal_font: "fira-code",
theme_preference: "dark",
})
.mockResolvedValueOnce({
...MockUser,
...MockUserOwner,
terminal_font: "ibm-plex-mono",
theme_preference: "dark",
});

View File

@ -11,7 +11,7 @@ import {
MockNotificationMethodsResponse,
MockNotificationPreferences,
MockNotificationTemplates,
MockUser,
MockUserOwner,
} from "testHelpers/entities";
import {
withAuthProvider,
@ -27,7 +27,7 @@ const meta = {
experiments: ["notifications"],
queries: [
{
key: userNotificationPreferencesKey(MockUser.id),
key: userNotificationPreferencesKey(MockUserOwner.id),
data: MockNotificationPreferences,
},
{
@ -39,7 +39,7 @@ const meta = {
data: MockNotificationMethodsResponse,
},
],
user: MockUser,
user: MockUserOwner,
permissions: { viewDeploymentConfig: true },
},
decorators: [withGlobalSnackbar, withAuthProvider, withDashboardProvider],

View File

@ -2,7 +2,7 @@ import { fireEvent, screen, waitFor, within } from "@testing-library/react";
import userEvent from "@testing-library/user-event";
import type { UpdateUserQuietHoursScheduleRequest } from "api/typesGenerated";
import { http, HttpResponse } from "msw";
import { MockUser } from "testHelpers/entities";
import { MockUserOwner } from "testHelpers/entities";
import { renderWithAuth } from "testHelpers/renderHelpers";
import { server } from "testHelpers/server";
import SchedulePage from "./SchedulePage";
@ -55,7 +55,7 @@ const cronTests = [
describe("SchedulePage", () => {
beforeEach(() => {
server.use(
http.get(`/api/v2/users/${MockUser.id}/quiet-hours`, () => {
http.get(`/api/v2/users/${MockUserOwner.id}/quiet-hours`, () => {
return HttpResponse.json(defaultQuietHoursResponse);
}),
);
@ -67,7 +67,7 @@ describe("SchedulePage", () => {
async (test) => {
server.use(
http.put(
`/api/v2/users/${MockUser.id}/quiet-hours`,
`/api/v2/users/${MockUserOwner.id}/quiet-hours`,
async ({ request }) => {
const data =
(await request.json()) as UpdateUserQuietHoursScheduleRequest;
@ -98,7 +98,7 @@ describe("SchedulePage", () => {
describe("when it is an unknown error", () => {
it("shows a generic error message", async () => {
server.use(
http.put(`/api/v2/users/${MockUser.id}/quiet-hours`, () => {
http.put(`/api/v2/users/${MockUserOwner.id}/quiet-hours`, () => {
return HttpResponse.json(
{
message: "oh no!",
@ -120,7 +120,7 @@ describe("SchedulePage", () => {
describe("when user custom schedule is disabled", () => {
it("shows a warning and disables the form", async () => {
server.use(
http.get(`/api/v2/users/${MockUser.id}/quiet-hours`, () => {
http.get(`/api/v2/users/${MockUserOwner.id}/quiet-hours`, () => {
return HttpResponse.json({
raw_schedule: "CRON_TZ=America/Chicago 0 0 * * *",
user_can_set: false,

View File

@ -1,5 +1,5 @@
import type { Meta, StoryObj } from "@storybook/react";
import { MockUser } from "testHelpers/entities";
import { MockUserOwner } from "testHelpers/entities";
import { ResetPasswordDialog } from "./ResetPasswordDialog";
const meta: Meta<typeof ResetPasswordDialog> = {
@ -13,7 +13,7 @@ type Story = StoryObj<typeof ResetPasswordDialog>;
const Example: Story = {
args: {
open: true,
user: MockUser,
user: MockUserOwner,
newPassword: "somerandomstringhere",
onConfirm: () => {},
onClose: () => {},

View File

@ -9,7 +9,7 @@ import type { User } from "api/typesGenerated";
import { MockGroups } from "pages/UsersPage/storybookData/groups";
import { MockRoles } from "pages/UsersPage/storybookData/roles";
import { MockUsers } from "pages/UsersPage/storybookData/users";
import { MockAuthMethodsAll, MockUser } from "testHelpers/entities";
import { MockAuthMethodsAll, MockUserOwner } from "testHelpers/entities";
import {
withAuthProvider,
withDashboardProvider,
@ -59,7 +59,7 @@ const parameters = {
},
},
],
user: MockUser,
user: MockUserOwner,
permissions: {
createUser: true,
updateUsers: true,

View File

@ -9,8 +9,8 @@ import type { ComponentProps } from "react";
import {
MockAssignableSiteRoles,
MockAuthMethodsPasswordOnly,
MockUser,
MockUser2,
MockUserMember,
MockUserOwner,
mockApiError,
} from "testHelpers/entities";
import { UsersPageView } from "./UsersPageView";
@ -32,7 +32,7 @@ const meta: Meta<typeof UsersPageView> = {
component: UsersPageView,
args: {
isNonInitialPage: false,
users: [MockUser, MockUser2],
users: [MockUserOwner, MockUserMember],
roles: MockAssignableSiteRoles,
canEditUsers: true,
filterProps: defaultFilterProps,

View File

@ -6,15 +6,15 @@ import {
MockGroup,
MockMemberRole,
MockTemplateAdminRole,
MockUser,
MockUser2,
MockUserAdminRole,
MockUserMember,
MockUserOwner,
} from "testHelpers/entities";
import { UsersTable } from "./UsersTable";
const mockGroupsByUserId = new Map([
[MockUser.id, [MockGroup]],
[MockUser2.id, [MockGroup]],
[MockUserOwner.id, [MockGroup]],
[MockUserMember.id, [MockGroup]],
]);
const meta: Meta<typeof UsersTable> = {
@ -31,7 +31,7 @@ type Story = StoryObj<typeof UsersTable>;
export const Example: Story = {
args: {
users: [MockUser, MockUser2],
users: [MockUserOwner, MockUserMember],
roles: MockAssignableSiteRoles,
canEditUsers: false,
groupsByUserId: mockGroupsByUserId,
@ -41,10 +41,10 @@ export const Example: Story = {
export const Editable: Story = {
args: {
users: [
MockUser,
MockUser2,
MockUserOwner,
MockUserMember,
{
...MockUser,
...MockUserOwner,
username: "John Doe",
email: "john.doe@coder.com",
roles: [
@ -56,14 +56,14 @@ export const Editable: Story = {
status: "dormant",
},
{
...MockUser,
...MockUserOwner,
username: "Roger Moore",
email: "roger.moore@coder.com",
roles: [],
status: "suspended",
},
{
...MockUser,
...MockUserOwner,
username: "OIDC User",
email: "oidc.user@coder.com",
roles: [],

View File

@ -40,7 +40,7 @@ const meta: Meta<typeof Workspace> = {
data: Mocks.MockListeningPortsResponse,
},
],
user: Mocks.MockUser,
user: Mocks.MockUserOwner,
},
decorators: [
withAuthProvider,

View File

@ -17,7 +17,7 @@ const meta: Meta<typeof WorkspaceActions> = {
},
decorators: [withDashboardProvider, withDesktopViewport, withAuthProvider],
parameters: {
user: Mocks.MockUser,
user: Mocks.MockUserOwner,
},
};
@ -175,7 +175,7 @@ export const CancelShownForUser: Story = {
workspace: Mocks.MockStartingWorkspace,
},
parameters: {
user: Mocks.MockUser2,
user: Mocks.MockUserMember,
},
};
@ -187,7 +187,7 @@ export const CancelHiddenForUser: Story = {
},
},
parameters: {
user: Mocks.MockUser2,
user: Mocks.MockUserMember,
},
};

View File

@ -22,7 +22,7 @@ import {
MockTemplate,
MockTemplateVersionParameter1,
MockTemplateVersionParameter2,
MockUser,
MockUserOwner,
MockWorkspace,
MockWorkspaceBuild,
MockWorkspaceBuildDelete,
@ -320,7 +320,7 @@ describe("WorkspacePage", () => {
});
it("restart the workspace with one time parameters when having the confirmation dialog", async () => {
localStorage.removeItem(`${MockUser.id}_ignoredWarnings`);
localStorage.removeItem(`${MockUserOwner.id}_ignoredWarnings`);
jest.spyOn(API, "getWorkspaceParameters").mockResolvedValue({
templateVersionRichParameters: [
{

View File

@ -7,7 +7,7 @@ import {
MockOrganization,
MockTemplate,
MockTemplateVersion,
MockUser,
MockUserOwner,
MockWorkspace,
} from "testHelpers/entities";
import { withAuthProvider, withDashboardProvider } from "testHelpers/storybook";
@ -41,7 +41,7 @@ const meta: Meta<typeof WorkspaceTopbar> = {
chromatic: {
diffThreshold: 0.6,
},
user: MockUser,
user: MockUserOwner,
},
};
@ -278,7 +278,7 @@ export const WithQuotaNoOrgs: Story = {
{
key: getWorkspaceQuotaQueryKey(
MockOrganization.name,
MockUser.username,
MockUserOwner.username,
),
data: {
credits_consumed: 2,
@ -296,7 +296,7 @@ export const WithQuotaWithOrgs: Story = {
{
key: getWorkspaceQuotaQueryKey(
MockOrganization.name,
MockUser.username,
MockUserOwner.username,
),
data: {
credits_consumed: 2,

View File

@ -1,7 +1,7 @@
import { screen } from "@testing-library/react";
import userEvent from "@testing-library/user-event";
import { http, HttpResponse } from "msw";
import { MockUser, MockWorkspace } from "testHelpers/entities";
import { MockUserOwner, MockWorkspace } from "testHelpers/entities";
import { renderWithWorkspaceSettingsLayout } from "testHelpers/renderHelpers";
import { server } from "testHelpers/server";
import {
@ -258,7 +258,7 @@ describe("WorkspaceSchedulePage", () => {
}),
);
renderWithWorkspaceSettingsLayout(<WorkspaceSchedulePage />, {
route: `/@${MockUser.username}/${MockWorkspace.name}/schedule`,
route: `/@${MockUserOwner.username}/${MockWorkspace.name}/schedule`,
path: "/:username/:workspace/schedule",
});
const user = userEvent.setup();
@ -279,7 +279,7 @@ describe("WorkspaceSchedulePage", () => {
describe("autostop change dialog", () => {
it("shows if autostop is changed", async () => {
renderWithWorkspaceSettingsLayout(<WorkspaceSchedulePage />, {
route: `/@${MockUser.username}/${MockWorkspace.name}/schedule`,
route: `/@${MockUserOwner.username}/${MockWorkspace.name}/schedule`,
path: "/:username/:workspace/schedule",
});
const user = userEvent.setup();
@ -303,7 +303,7 @@ describe("WorkspaceSchedulePage", () => {
it("doesn't show if autostop is not changed", async () => {
renderWithWorkspaceSettingsLayout(<WorkspaceSchedulePage />, {
route: `/@${MockUser.username}/${MockWorkspace.name}/schedule`,
route: `/@${MockUserOwner.username}/${MockWorkspace.name}/schedule`,
path: "/:username/:workspace/schedule",
extraRoutes: [
{ path: "/:username/:workspace", element: <div>Workspace</div> },

View File

@ -1,7 +1,7 @@
import { action } from "@storybook/addon-actions";
import type { Meta, StoryObj } from "@storybook/react";
import { chromatic } from "testHelpers/chromatic";
import { MockUser2, MockWorkspace } from "testHelpers/entities";
import { MockUserMember, MockWorkspace } from "testHelpers/entities";
import { BatchDeleteConfirmation } from "./BatchDeleteConfirmation";
const meta: Meta<typeof BatchDeleteConfirmation> = {
@ -18,15 +18,15 @@ const meta: Meta<typeof BatchDeleteConfirmation> = {
...MockWorkspace,
name: "Test-Workspace-2",
last_used_at: "2023-08-16T15:29:10.302441433Z",
owner_id: MockUser2.id,
owner_name: MockUser2.username,
owner_id: MockUserMember.id,
owner_name: MockUserMember.username,
},
{
...MockWorkspace,
name: "Test-Workspace-3",
last_used_at: "2023-11-16T15:29:10.302441433Z",
owner_id: MockUser2.id,
owner_name: MockUser2.username,
owner_id: MockUserMember.id,
owner_name: MockUserMember.username,
},
],
},

View File

@ -8,7 +8,7 @@ import {
MockOutdatedWorkspace,
MockRunningOutdatedWorkspace,
MockTemplateVersion,
MockUser2,
MockUserMember,
MockWorkspace,
} from "testHelpers/entities";
import {
@ -25,8 +25,8 @@ const workspaces = [
{
...MockRunningOutdatedWorkspace,
id: "6",
owner_id: MockUser2.id,
owner_name: MockUser2.username,
owner_id: MockUserMember.id,
owner_name: MockUserMember.username,
},
];

View File

@ -21,7 +21,7 @@ import {
MockProxyLatencies,
MockStoppedWorkspace,
MockTemplate,
MockUser,
MockUserOwner,
MockWorkspace,
MockWorkspaceAppStatus,
mockApiError,
@ -105,7 +105,7 @@ const defaultFilterProps = getDefaultFilterProps<FilterProps>({
organizations: MockMenu,
},
values: {
owner: MockUser.username,
owner: MockUserOwner.username,
template: undefined,
status: undefined,
},
@ -144,7 +144,7 @@ const meta: Meta<typeof WorkspacesPageView> = {
data: MockBuildInfo,
},
],
user: MockUser,
user: MockUserOwner,
},
decorators: [
withAuthProvider,

View File

@ -484,7 +484,7 @@ export const MockMemberPermissions = {
viewAuditLog: false,
};
export const MockUser: TypesGen.User = {
export const MockUserOwner: TypesGen.User = {
id: "test-user",
username: "TestUser",
email: "test@coder.com",
@ -499,12 +499,7 @@ export const MockUser: TypesGen.User = {
name: "",
};
const MockUserAdmin: TypesGen.User = {
...MockUser,
roles: [MockUserAdminRole],
};
export const MockUser2: TypesGen.User = {
export const MockUserMember: TypesGen.User = {
id: "test-user-2",
username: "TestUser2",
email: "test2@coder.com",
@ -541,28 +536,28 @@ export const MockUserAppearanceSettings: TypesGen.UserAppearanceSettings = {
export const MockOrganizationMember: TypesGen.OrganizationMemberWithUserData = {
organization_id: MockOrganization.id,
user_id: MockUser.id,
username: MockUser.username,
email: MockUser.email,
user_id: MockUserOwner.id,
username: MockUserOwner.username,
email: MockUserOwner.email,
created_at: "",
updated_at: "",
name: MockUser.name,
avatar_url: MockUser.avatar_url,
global_roles: MockUser.roles,
name: MockUserOwner.name,
avatar_url: MockUserOwner.avatar_url,
global_roles: MockUserOwner.roles,
roles: [],
};
export const MockOrganizationMember2: TypesGen.OrganizationMemberWithUserData =
{
organization_id: MockOrganization.id,
user_id: MockUser2.id,
username: MockUser2.username,
email: MockUser2.email,
user_id: MockUserMember.id,
username: MockUserMember.username,
email: MockUserMember.email,
created_at: "",
updated_at: "",
name: MockUser2.name,
avatar_url: MockUser2.avatar_url,
global_roles: MockUser2.roles,
name: MockUserMember.name,
avatar_url: MockUserMember.avatar_url,
global_roles: MockUserMember.roles,
roles: [],
};
@ -613,7 +608,7 @@ const MockUserAuthProvisioner: TypesGen.ProvisionerDaemon = {
...MockProvisioner,
id: "test-user-auth-provisioner",
key_id: MockProvisionerUserAuthKey.id,
name: `${MockUser.name}'s provisioner`,
name: `${MockUserOwner.name}'s provisioner`,
tags: { scope: "user" },
};
@ -732,7 +727,7 @@ name:Template test
You can add instructions here
[Some link info](https://coder.com)`,
created_by: MockUser,
created_by: MockUserOwner,
archived: false,
};
@ -751,7 +746,7 @@ name:Template test 2
You can add instructions here
[Some link info](https://coder.com)`,
created_by: MockUser,
created_by: MockUserOwner,
archived: false,
};
@ -1246,17 +1241,17 @@ export const MockWorkspaceBuild: TypesGen.WorkspaceBuild = {
build_number: 1,
created_at: "2022-05-17T17:39:01.382927298Z",
id: "1",
initiator_id: MockUser.id,
initiator_name: MockUser.username,
initiator_id: MockUserOwner.id,
initiator_name: MockUserOwner.username,
job: MockProvisionerJob,
template_version_id: MockTemplateVersion.id,
template_version_name: MockTemplateVersion.name,
transition: "start",
updated_at: "2022-05-17T17:39:01.382927298Z",
workspace_name: "test-workspace",
workspace_owner_id: MockUser.id,
workspace_owner_name: MockUser.username,
workspace_owner_avatar_url: MockUser.avatar_url,
workspace_owner_id: MockUserOwner.id,
workspace_owner_name: MockUserOwner.username,
workspace_owner_avatar_url: MockUserOwner.avatar_url,
workspace_id: "759f1d46-3174-453d-aa60-980a9c1442f3",
deadline: "2022-05-17T23:39:00.00Z",
reason: "initiator",
@ -1274,17 +1269,17 @@ const MockWorkspaceBuildAutostart: TypesGen.WorkspaceBuild = {
build_number: 1,
created_at: "2022-05-17T17:39:01.382927298Z",
id: "1",
initiator_id: MockUser.id,
initiator_name: MockUser.username,
initiator_id: MockUserOwner.id,
initiator_name: MockUserOwner.username,
job: MockProvisionerJob,
template_version_id: MockTemplateVersion.id,
template_version_name: MockTemplateVersion.name,
transition: "start",
updated_at: "2022-05-17T17:39:01.382927298Z",
workspace_name: "test-workspace",
workspace_owner_id: MockUser.id,
workspace_owner_name: MockUser.username,
workspace_owner_avatar_url: MockUser.avatar_url,
workspace_owner_id: MockUserOwner.id,
workspace_owner_name: MockUserOwner.username,
workspace_owner_avatar_url: MockUserOwner.avatar_url,
workspace_id: "759f1d46-3174-453d-aa60-980a9c1442f3",
deadline: "2022-05-17T23:39:00.00Z",
reason: "autostart",
@ -1298,17 +1293,17 @@ const MockWorkspaceBuildAutostop: TypesGen.WorkspaceBuild = {
build_number: 1,
created_at: "2022-05-17T17:39:01.382927298Z",
id: "1",
initiator_id: MockUser.id,
initiator_name: MockUser.username,
initiator_id: MockUserOwner.id,
initiator_name: MockUserOwner.username,
job: MockProvisionerJob,
template_version_id: MockTemplateVersion.id,
template_version_name: MockTemplateVersion.name,
transition: "start",
updated_at: "2022-05-17T17:39:01.382927298Z",
workspace_name: "test-workspace",
workspace_owner_id: MockUser.id,
workspace_owner_name: MockUser.username,
workspace_owner_avatar_url: MockUser.avatar_url,
workspace_owner_id: MockUserOwner.id,
workspace_owner_name: MockUserOwner.username,
workspace_owner_avatar_url: MockUserOwner.avatar_url,
workspace_id: "759f1d46-3174-453d-aa60-980a9c1442f3",
deadline: "2022-05-17T23:39:00.00Z",
reason: "autostop",
@ -1324,17 +1319,17 @@ export const MockFailedWorkspaceBuild = (
build_number: 1,
created_at: "2022-05-17T17:39:01.382927298Z",
id: "1",
initiator_id: MockUser.id,
initiator_name: MockUser.username,
initiator_id: MockUserOwner.id,
initiator_name: MockUserOwner.username,
job: MockFailedProvisionerJob,
template_version_id: MockTemplateVersion.id,
template_version_name: MockTemplateVersion.name,
transition: transition,
updated_at: "2022-05-17T17:39:01.382927298Z",
workspace_name: "test-workspace",
workspace_owner_id: MockUser.id,
workspace_owner_name: MockUser.username,
workspace_owner_avatar_url: MockUser.avatar_url,
workspace_owner_id: MockUserOwner.id,
workspace_owner_name: MockUserOwner.username,
workspace_owner_avatar_url: MockUserOwner.avatar_url,
workspace_id: "759f1d46-3174-453d-aa60-980a9c1442f3",
deadline: "2022-05-17T23:39:00.00Z",
reason: "initiator",
@ -1378,10 +1373,10 @@ export const MockWorkspace: TypesGen.Workspace = {
template_active_version_id: MockTemplate.active_version_id,
template_require_active_version: MockTemplate.require_active_version,
outdated: false,
owner_id: MockUser.id,
owner_id: MockUserOwner.id,
organization_id: MockOrganization.id,
organization_name: "default",
owner_name: MockUser.username,
owner_name: MockUserOwner.username,
owner_avatar_url: "https://avatars.githubusercontent.com/u/7122116?v=4",
autostart_schedule: MockWorkspaceAutostartEnabled.schedule,
ttl_ms: 2 * 60 * 60 * 1000,
@ -2508,7 +2503,7 @@ export const MockAuditLog: TypesGen.AuditLog = {
status_code: 200,
additional_fields: {},
description: "{user} created workspace {target}",
user: MockUser,
user: MockUserOwner,
resource_link: "/@admin/bruno-dev",
is_deleted: false,
};
@ -2579,7 +2574,7 @@ export const MockAuditLog3: TypesGen.AuditLog = {
status_code: 200,
additional_fields: {},
description: "{user} updated template {target}",
user: MockUser,
user: MockUserOwner,
resource_link: "/templates/docker",
is_deleted: false,
};
@ -2785,7 +2780,7 @@ export const MockGroup: TypesGen.Group = {
organization_id: MockOrganization.id,
organization_name: MockOrganization.name,
organization_display_name: MockOrganization.display_name,
members: [MockUser, MockUser2],
members: [MockUserOwner, MockUserMember],
quota_allowance: 5,
source: "user",
total_member_count: 2,
@ -2799,7 +2794,7 @@ export const MockGroup2: TypesGen.Group = {
organization_id: MockOrganization.id,
organization_name: MockOrganization.name,
organization_display_name: MockOrganization.display_name,
members: [MockUser, MockUser2],
members: [MockUserOwner, MockUserMember],
quota_allowance: 5,
source: "user",
total_member_count: 2,
@ -2826,7 +2821,7 @@ export const MockTemplateACL: TypesGen.TemplateACL = {
{ ...MockEveryoneGroup, role: "use" },
{ ...MockGroup, role: "admin" },
],
users: [{ ...MockUser, role: "use" }],
users: [{ ...MockUserOwner, role: "use" }],
};
export const MockTemplateACLEmpty: TypesGen.TemplateACL = {
@ -4277,7 +4272,7 @@ export const MockNotification: TypesGen.InboxNotification = {
url: "https://dev.coder.com/templates/coder/coder",
},
],
user_id: MockUser.id,
user_id: MockUserOwner.id,
template_id: MockTemplate.id,
targets: [],
title: "User account created",

View File

@ -135,12 +135,12 @@ export const handlers = [
// users
http.get("/api/v2/users", () => {
return HttpResponse.json({
users: [M.MockUser, M.MockUser2, M.SuspendedMockUser],
users: [M.MockUserOwner, M.MockUserMember, M.SuspendedMockUser],
count: 26,
});
}),
http.post("/api/v2/users", () => {
return HttpResponse.json(M.MockUser);
return HttpResponse.json(M.MockUserOwner);
}),
http.get("/api/v2/users/:userid/login-type", () => {
return HttpResponse.json({
@ -160,7 +160,7 @@ export const handlers = [
return new HttpResponse(null, { status: 200 });
}),
http.get("/api/v2/users/me", () => {
return HttpResponse.json(M.MockUser);
return HttpResponse.json(M.MockUserOwner);
}),
http.get("/api/v2/users/me/appearance", () => {
return HttpResponse.json(M.MockUserAppearanceSettings);
@ -198,7 +198,7 @@ export const handlers = [
return new HttpResponse(null, { status: 200 });
}),
http.post("/api/v2/users/first", () => {
return HttpResponse.json(M.MockUser);
return HttpResponse.json(M.MockUserOwner);
}),
// workspaces

View File

@ -20,7 +20,7 @@ import {
createMemoryRouter,
} from "react-router-dom";
import themes, { DEFAULT_THEME } from "theme";
import { MockUser } from "./entities";
import { MockUserOwner } from "./entities";
export function createTestQueryClient() {
// Helps create one query client for each test case, to make sure that tests
@ -118,7 +118,7 @@ export function renderWithAuth(
return {
...renderResult,
user: MockUser,
user: MockUserOwner,
};
}
@ -154,7 +154,7 @@ export function renderWithTemplateSettingsLayout(
);
return {
user: MockUser,
user: MockUserOwner,
...renderResult,
};
}
@ -191,7 +191,7 @@ export function renderWithWorkspaceSettingsLayout(
);
return {
user: MockUser,
user: MockUserOwner,
...renderResult,
};
}
@ -228,7 +228,7 @@ export function renderWithOrganizationSettingsLayout(
);
return {
user: MockUser,
user: MockUserOwner,
...renderResult,
};
}