@@ -4,6 +4,8 @@ import { faker } from "@faker-js/faker";
4
4
5
5
import { MemberRole } from "db/public" ;
6
6
7
+ import { AddMemberDialog } from "./member-dialog" ;
8
+
7
9
export class MembersPage {
8
10
private readonly communitySlug : string ;
9
11
@@ -26,7 +28,7 @@ export class MembersPage {
26
28
await this . page . getByText ( / A d d M e m b e r / ) . click ( ) ;
27
29
const addMemberDialog = this . page . getByRole ( "dialog" , { name : "Add Member" } ) ;
28
30
await addMemberDialog . waitFor ( ) ;
29
- return addMemberDialog ;
31
+ return new AddMemberDialog ( this . page , addMemberDialog ) ;
30
32
}
31
33
32
34
async addNewUser (
@@ -52,62 +54,21 @@ export class MembersPage {
52
54
}
53
55
) {
54
56
const addMemberDialog = await this . openAddMemberDialog ( ) ;
55
- await addMemberDialog . getByLabel ( "Email" ) . fill ( email ) ;
56
-
57
- await this . page . locator ( 'input[name="firstName"]' ) . fill ( firstName ) ;
58
- await this . page . locator ( 'input[name="lastName"]' ) . fill ( lastName ) ;
59
- if ( isSuperAdmin ) {
60
- await this . page . getByLabel ( "Make user superadmin" ) . click ( ) ;
61
- }
62
-
63
- await this . page . getByLabel ( "Role" ) . click ( ) ;
64
- await this . page . getByLabel ( role [ 0 ] . toUpperCase ( ) + role . slice ( 1 ) ) . click ( ) ;
65
-
66
- if ( role === MemberRole . contributor && forms . length ) {
67
- await this . selectForms ( forms ) ;
68
- }
69
-
70
- await this . page . getByRole ( "button" , { name : "Invite" } ) . click ( ) ;
71
-
72
- await this . page . getByText ( "User successfully invited" , { exact : true } ) . waitFor ( ) ;
73
- await addMemberDialog . waitFor ( { state : "hidden" } ) ;
74
-
75
- return {
76
- email,
57
+ return await addMemberDialog . addNewUser ( email , {
77
58
firstName,
78
59
lastName,
79
60
isSuperAdmin,
80
61
role,
81
- } ;
62
+ forms,
63
+ } ) ;
82
64
}
83
65
84
66
/**
85
67
* @param forms An array of form names to add to this membership
86
68
*/
87
69
async addExistingUser ( email : string , role = MemberRole . editor , forms : string [ ] = [ ] ) {
88
70
const addMemberDialog = await this . openAddMemberDialog ( ) ;
89
- await addMemberDialog . getByLabel ( "Email" ) . fill ( email ) ;
90
-
91
- await this . page . getByLabel ( "Role" ) . click ( ) ;
92
- await this . page . getByLabel ( role [ 0 ] . toUpperCase ( ) + role . slice ( 1 ) ) . click ( ) ;
93
-
94
- if ( role === MemberRole . contributor && forms . length ) {
95
- await this . selectForms ( forms ) ;
96
- }
97
-
98
- await this . page . getByRole ( "button" , { name : "Add Member" } ) . click ( ) ;
99
-
100
- await this . page . getByText ( "Member added successfully" , { exact : true } ) . waitFor ( ) ;
101
- await addMemberDialog . waitFor ( { state : "hidden" } ) ;
102
- }
103
-
104
- async selectForms ( forms : string [ ] ) {
105
- const button = this . page . getByRole ( "button" , { name : "Edit/View Access" , exact : true } ) ;
106
- await button . click ( ) ;
107
- for ( const form of forms ) {
108
- await this . page . getByRole ( "option" , { name : form , exact : true } ) . click ( ) ;
109
- }
110
- await button . click ( ) ;
71
+ return await addMemberDialog . addExistingUser ( email , role , forms ) ;
111
72
}
112
73
113
74
async removeMember ( email : string ) {
0 commit comments