Skip to content

Commit 4ad653a

Browse files
authored
chore: add storybook tests for WorkspaceSharingPageView (#21261)
1 parent 7fb9d51 commit 4ad653a

File tree

1 file changed

+149
-0
lines changed

1 file changed

+149
-0
lines changed
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
import {
2+
MockGroup,
3+
MockGroup2,
4+
MockUserMember,
5+
MockUserOwner,
6+
MockWorkspace,
7+
mockApiError,
8+
} from "testHelpers/entities";
9+
import type { Meta, StoryObj } from "@storybook/react-vite";
10+
import type {
11+
WorkspaceACL,
12+
WorkspaceGroup,
13+
WorkspaceUser,
14+
} from "api/typesGenerated";
15+
import { WorkspaceSharingPageView } from "./WorkspaceSharingPageView";
16+
17+
const mockWorkspaceUser: WorkspaceUser = {
18+
id: MockUserMember.id,
19+
username: MockUserMember.username,
20+
name: MockUserMember.name,
21+
avatar_url: MockUserMember.avatar_url,
22+
role: "use",
23+
};
24+
25+
const mockWorkspaceUserAdmin: WorkspaceUser = {
26+
id: MockUserOwner.id,
27+
username: MockUserOwner.username,
28+
name: MockUserOwner.name,
29+
avatar_url: MockUserOwner.avatar_url,
30+
role: "admin",
31+
};
32+
33+
const mockWorkspaceGroup: WorkspaceGroup = {
34+
...MockGroup,
35+
role: "use",
36+
};
37+
38+
const mockWorkspaceGroupAdmin: WorkspaceGroup = {
39+
...MockGroup2,
40+
role: "admin",
41+
};
42+
43+
const emptyACL: WorkspaceACL = {
44+
users: [],
45+
group: [],
46+
};
47+
48+
const aclWithUsers: WorkspaceACL = {
49+
users: [mockWorkspaceUser, mockWorkspaceUserAdmin],
50+
group: [],
51+
};
52+
53+
const aclWithGroups: WorkspaceACL = {
54+
users: [],
55+
group: [mockWorkspaceGroup, mockWorkspaceGroupAdmin],
56+
};
57+
58+
const aclWithUsersAndGroups: WorkspaceACL = {
59+
users: [mockWorkspaceUser, mockWorkspaceUserAdmin],
60+
group: [mockWorkspaceGroup, mockWorkspaceGroupAdmin],
61+
};
62+
63+
const meta: Meta<typeof WorkspaceSharingPageView> = {
64+
title: "pages/WorkspaceSharingPageView",
65+
component: WorkspaceSharingPageView,
66+
args: {
67+
workspace: MockWorkspace,
68+
workspaceACL: emptyACL,
69+
canUpdatePermissions: true,
70+
error: undefined,
71+
onAddUser: () => Promise.resolve(),
72+
isAddingUser: false,
73+
onUpdateUser: () => Promise.resolve(),
74+
updatingUserId: undefined,
75+
onRemoveUser: () => Promise.resolve(),
76+
onAddGroup: () => Promise.resolve(),
77+
isAddingGroup: false,
78+
onUpdateGroup: () => Promise.resolve(),
79+
updatingGroupId: undefined,
80+
onRemoveGroup: () => Promise.resolve(),
81+
},
82+
};
83+
84+
export default meta;
85+
type Story = StoryObj<typeof WorkspaceSharingPageView>;
86+
87+
export const Empty: Story = {};
88+
89+
export const Loading: Story = {
90+
args: {
91+
workspaceACL: undefined,
92+
},
93+
};
94+
95+
export const WithUsers: Story = {
96+
args: {
97+
workspaceACL: aclWithUsers,
98+
},
99+
};
100+
101+
export const WithGroups: Story = {
102+
args: {
103+
workspaceACL: aclWithGroups,
104+
},
105+
};
106+
107+
export const WithUsersAndGroups: Story = {
108+
args: {
109+
workspaceACL: aclWithUsersAndGroups,
110+
},
111+
};
112+
113+
export const ReadOnly: Story = {
114+
args: {
115+
workspaceACL: aclWithUsersAndGroups,
116+
canUpdatePermissions: false,
117+
},
118+
};
119+
120+
export const AddingMember: Story = {
121+
args: {
122+
workspaceACL: aclWithUsers,
123+
isAddingUser: true,
124+
},
125+
};
126+
127+
export const UpdatingUser: Story = {
128+
args: {
129+
workspaceACL: aclWithUsers,
130+
updatingUserId: mockWorkspaceUser.id,
131+
},
132+
};
133+
134+
export const UpdatingGroup: Story = {
135+
args: {
136+
workspaceACL: aclWithGroups,
137+
updatingGroupId: mockWorkspaceGroup.id,
138+
},
139+
};
140+
141+
export const WithError: Story = {
142+
args: {
143+
workspaceACL: aclWithUsersAndGroups,
144+
error: mockApiError({
145+
message: "Failed to update workspace sharing settings",
146+
detail: "You do not have permission to modify this workspace.",
147+
}),
148+
},
149+
};

0 commit comments

Comments
 (0)