Skip to content

Commit 495ffd4

Browse files
authored
Fix members component and e2e tests (#1397)
1 parent 061e203 commit 495ffd4

File tree

7 files changed

+224
-127
lines changed

7 files changed

+224
-127
lines changed

web_ui/src/pages/user-management/users/users-tab.component.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import { RESOURCE_TYPE, User } from '@geti/core/src/users/users.interface';
55
import { Flex, Text } from '@geti/ui';
66

7+
import { useOrganization } from '../../../intel-admin-app/pages/organization/hooks/organization.hook';
78
import { OrganizationUserActions } from './actions/organization-user-actions.component';
89
import { Users } from './users.component';
910

@@ -12,6 +13,8 @@ interface UsersTabProps {
1213
}
1314

1415
export const UsersTab = ({ activeUser }: UsersTabProps) => {
16+
const { organizationId } = useOrganization();
17+
1518
if (!activeUser) return <></>;
1619

1720
return (
@@ -24,8 +27,8 @@ export const UsersTab = ({ activeUser }: UsersTabProps) => {
2427
</Text>
2528
<Users
2629
activeUser={activeUser}
27-
resourceType={[RESOURCE_TYPE.ORGANIZATION, RESOURCE_TYPE.WORKSPACE]}
28-
resourceId={undefined}
30+
resourceType={RESOURCE_TYPE.ORGANIZATION}
31+
resourceId={organizationId}
2932
UserActions={OrganizationUserActions}
3033
/>
3134
</Flex>

web_ui/src/pages/user-management/users/users-table/user-role-cell.component.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,13 @@ export const UserRoleCell = ({
4343
);
4444
}
4545

46-
const workspaceRole =
47-
roles.find((role) => role.resourceType === RESOURCE_TYPE.WORKSPACE && role.resourceId === resourceId)?.role ??
48-
'N/A';
46+
const userRole = roles.find((role) => role.resourceId === resourceId)?.role ?? 'N/A';
4947

5048
return (
5149
<CasualCell
5250
{...rest}
5351
rowData={rowData}
54-
cellData={workspaceRole}
52+
cellData={userRole}
5553
tooltip={<WorkspaceRoleTooltipContent />}
5654
tooltipProps={{
5755
width: 'calc(size-4600 + size-100)',

web_ui/src/pages/user-management/users/users-table/users-table.component.tsx

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -98,11 +98,12 @@ export const UsersTable = ({
9898
},
9999
},
100100
{
101-
label: isEmpty(resourceId)
102-
? 'Organization role'
103-
: usersTableType === RESOURCE_TYPE.PROJECT
104-
? 'Project role'
105-
: 'Workspace role',
101+
label:
102+
usersTableType === RESOURCE_TYPE.ORGANIZATION
103+
? 'Organization role'
104+
: usersTableType === RESOURCE_TYPE.PROJECT
105+
? 'Project role'
106+
: 'Workspace role',
106107
dataKey: USERS_TABLE_COLUMNS.ROLES,
107108
width: 180,
108109
isSortable: false,

web_ui/src/pages/user-management/users/users.component.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ export const Users = ({
6363
const { sortBy, sortDirection, ...filteringParams } = usersQueryParams;
6464
const hasFilters = !isEmpty(filteringParams);
6565

66-
const enableCreation = Array.isArray(resourceType) ? resourceType.length > 0 : resourceType === undefined;
66+
const enableCreation = usersTableType === RESOURCE_TYPE.ORGANIZATION;
6767
const shouldShowAddUserButton = enableCreation && !isSaasEnvironment && productInfo?.isSmtpDefined === false;
6868
const shouldShowInviteUserButton = enableCreation && (isSaasEnvironment || productInfo?.isSmtpDefined === true);
6969

web_ui/tests/e2e/daily/members-management.spec.ts

Lines changed: 49 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -3,51 +3,62 @@
33

44
import { v4 as uuid } from 'uuid';
55

6-
import { USER_ROLE, WorkspaceRole } from '../../../packages/core/src/users/users.interface';
6+
import { USER_ROLE } from '../../../packages/core/src/users/users.interface';
77
import { expect } from '../../fixtures/base-test';
88
import { MembersPage } from '../../fixtures/page-objects/members-page';
99
import { test } from '../fixtures';
1010

1111
const expectMemberToBeVisible = async (
1212
membersPage: MembersPage,
13-
member: { email: string; firstName: string; lastName: string; role: WorkspaceRole['role'] }
13+
member: {
14+
email: string;
15+
firstName: string;
16+
lastName: string;
17+
organizationRole: USER_ROLE.ORGANIZATION_ADMIN | USER_ROLE.ORGANIZATION_CONTRIBUTOR;
18+
}
1419
) => {
1520
const memberRow = membersPage.getMemberRow(member.email);
1621

1722
await expect(membersPage.getEmailCell(member.email, memberRow)).toBeVisible();
1823
await expect(membersPage.getNameCell(member.firstName, member.lastName, memberRow)).toBeVisible();
19-
await expect(membersPage.getRoleCell(member.role, memberRow)).toBeVisible();
24+
await expect(membersPage.getRoleCell(member.organizationRole, memberRow)).toBeVisible();
2025
};
2126

2227
const expectMemberNotToBeVisible = async (
2328
membersPage: MembersPage,
24-
member: { email: string; firstName: string; lastName: string; role: WorkspaceRole['role'] }
29+
member: {
30+
email: string;
31+
firstName: string;
32+
lastName: string;
33+
organizationRole: USER_ROLE.ORGANIZATION_ADMIN | USER_ROLE.ORGANIZATION_CONTRIBUTOR;
34+
}
2535
) => {
2636
await expect(membersPage.getMemberRow(member.email)).toBeHidden();
2737
};
2838

2939
test.describe('Members management suite', () => {
30-
const workspaceAdminMember = {
40+
const organizationAdminMember = {
3141
email: `test-admin-${uuid()}@intel.com`,
3242
firstName: 'Test',
3343
lastName: 'Admin',
3444
password: 'Test1234',
35-
role: USER_ROLE.WORKSPACE_ADMIN,
45+
organizationRole: USER_ROLE.ORGANIZATION_ADMIN,
3646
} as const;
3747

38-
const workspaceContributorMember = {
48+
const organizationContributorMember = {
3949
email: `test-contributor-${uuid()}@intel.com`,
4050
firstName: 'Test',
4151
lastName: 'Contributor',
4252
password: 'Test1234',
43-
role: USER_ROLE.WORKSPACE_CONTRIBUTOR,
53+
workspaceRole: USER_ROLE.WORKSPACE_CONTRIBUTOR,
54+
organizationRole: USER_ROLE.ORGANIZATION_CONTRIBUTOR,
4455
} as const;
4556

4657
test.afterEach(async ({ membersPage }, testInfo) => {
4758
if (testInfo.status !== 'passed') {
4859
console.info('Cleanup');
49-
await membersPage.removeMember(workspaceAdminMember.email);
50-
await membersPage.removeMember(workspaceContributorMember.email);
60+
await membersPage.removeMember(organizationAdminMember.email);
61+
await membersPage.removeMember(organizationContributorMember.email);
5162
}
5263
});
5364

@@ -65,63 +76,63 @@ test.describe('Members management suite', () => {
6576

6677
await membersPage.open();
6778

68-
await test.step('Creates new workspace admin and workspace contributor member', async () => {
69-
await membersPage.addMember(workspaceContributorMember);
79+
await test.step('Creates new organization admin and organization contributor members', async () => {
80+
await membersPage.addMember(organizationContributorMember);
7081

71-
await expectMemberToBeVisible(membersPage, workspaceContributorMember);
82+
await expectMemberToBeVisible(membersPage, organizationContributorMember);
7283

73-
await membersPage.addMember(workspaceAdminMember);
84+
await membersPage.addMember(organizationAdminMember);
7485

75-
await expectMemberToBeVisible(membersPage, workspaceAdminMember);
86+
await expectMemberToBeVisible(membersPage, organizationAdminMember);
7687
});
7788

78-
await test.step('Filters by workspace admin and workspace contributor role', async () => {
79-
await membersPage.filterByRole(USER_ROLE.WORKSPACE_ADMIN);
89+
await test.step('Filters by organization admin and organization contributor role', async () => {
90+
await membersPage.filterByRole(USER_ROLE.ORGANIZATION_ADMIN);
8091

81-
await expectMemberToBeVisible(membersPage, workspaceAdminMember);
82-
await expectMemberNotToBeVisible(membersPage, workspaceContributorMember);
92+
await expectMemberToBeVisible(membersPage, organizationAdminMember);
93+
await expectMemberNotToBeVisible(membersPage, organizationContributorMember);
8394

84-
await membersPage.filterByRole(USER_ROLE.WORKSPACE_CONTRIBUTOR);
95+
await membersPage.filterByRole(USER_ROLE.ORGANIZATION_CONTRIBUTOR);
8596

86-
await expectMemberToBeVisible(membersPage, workspaceContributorMember);
87-
await expectMemberNotToBeVisible(membersPage, workspaceAdminMember);
97+
await expectMemberToBeVisible(membersPage, organizationContributorMember);
98+
await expectMemberNotToBeVisible(membersPage, organizationAdminMember);
8899

89100
await membersPage.filterByRole('All role');
90-
await expectMemberToBeVisible(membersPage, workspaceAdminMember);
91-
await expectMemberToBeVisible(membersPage, workspaceContributorMember);
101+
await expectMemberToBeVisible(membersPage, organizationAdminMember);
102+
await expectMemberToBeVisible(membersPage, organizationContributorMember);
92103
});
93104

94105
await test.step("Filters by member's name and email", async () => {
95-
await membersPage.filterByNameOrEmail(workspaceAdminMember.email);
106+
await membersPage.filterByNameOrEmail(organizationAdminMember.email);
96107

97-
await expectMemberToBeVisible(membersPage, workspaceAdminMember);
98-
await expectMemberNotToBeVisible(membersPage, workspaceContributorMember);
108+
await expectMemberToBeVisible(membersPage, organizationAdminMember);
109+
await expectMemberNotToBeVisible(membersPage, organizationContributorMember);
99110

100-
await membersPage.filterByNameOrEmail(workspaceContributorMember.lastName);
111+
await membersPage.filterByNameOrEmail(organizationContributorMember.lastName);
101112

102-
await expectMemberToBeVisible(membersPage, workspaceContributorMember);
103-
await expectMemberNotToBeVisible(membersPage, workspaceAdminMember);
113+
await expectMemberToBeVisible(membersPage, organizationContributorMember);
114+
await expectMemberNotToBeVisible(membersPage, organizationAdminMember);
104115

105116
await membersPage.resetSearchFilter();
106117
});
107118

108119
await test.step('Edits workspace admin and workspace contributor member', async () => {
109120
const updatedWorkspaceAdminMember = {
110-
...workspaceAdminMember,
121+
...organizationAdminMember,
111122
firstName: 'Updated',
112123
lastName: 'Old Admin',
113-
role: USER_ROLE.WORKSPACE_CONTRIBUTOR,
124+
role: USER_ROLE.ORGANIZATION_CONTRIBUTOR,
114125
} as const;
115126

116127
await membersPage.editMember(updatedWorkspaceAdminMember);
117128

118129
await expectMemberToBeVisible(membersPage, updatedWorkspaceAdminMember);
119130

120131
const updatedWorkspaceContributorMember = {
121-
...workspaceContributorMember,
132+
...organizationContributorMember,
122133
firstName: 'Updated',
123134
lastName: 'Old Contributor',
124-
role: USER_ROLE.WORKSPACE_ADMIN,
135+
role: USER_ROLE.ORGANIZATION_ADMIN,
125136
} as const;
126137

127138
await membersPage.editMember(updatedWorkspaceContributorMember);
@@ -130,13 +141,13 @@ test.describe('Members management suite', () => {
130141
});
131142

132143
await test.step('Removes workspace admin and workspace contributor member', async () => {
133-
await membersPage.removeMember(workspaceContributorMember.email);
144+
await membersPage.removeMember(organizationContributorMember.email);
134145

135-
await expectMemberNotToBeVisible(membersPage, workspaceContributorMember);
146+
await expectMemberNotToBeVisible(membersPage, organizationContributorMember);
136147

137-
await membersPage.removeMember(workspaceAdminMember.email);
148+
await membersPage.removeMember(organizationAdminMember.email);
138149

139-
await expectMemberNotToBeVisible(membersPage, workspaceAdminMember);
150+
await expectMemberNotToBeVisible(membersPage, organizationAdminMember);
140151
});
141152
});
142153
});

0 commit comments

Comments
 (0)