4
4
*/
5
5
6
6
import { module , test } from 'qunit' ;
7
- import { visit , currentURL , click , find , findAll } from '@ember/test-helpers' ;
7
+ import { visit , currentURL , click } from '@ember/test-helpers' ;
8
8
import { setupApplicationTest } from 'admin/tests/helpers' ;
9
9
import setupMirage from 'ember-cli-mirage/test-support/setup-mirage' ;
10
10
import { setupIndexedDb } from 'api/test-support/helpers/indexed-db' ;
11
11
import a11yAudit from 'ember-a11y-testing/test-support/audit' ;
12
12
import { Response } from 'miragejs' ;
13
13
import { authenticateSession } from 'ember-simple-auth/test-support' ;
14
14
import * as commonSelectors from 'admin/tests/helpers/selectors' ;
15
+ import * as selectors from './selectors' ;
15
16
16
17
module ( 'Acceptance | groups | members' , function ( hooks ) {
17
18
setupApplicationTest ( hooks ) ;
@@ -33,10 +34,6 @@ module('Acceptance | groups | members', function (hooks) {
33
34
addMembers : null ,
34
35
} ;
35
36
let membersCount ;
36
- const MANAGE_DROPDOWN_SELECTOR =
37
- '[data-test-manage-group-dropdown] button:first-child' ;
38
- const ADD_MEMBERS_ACTION_SELECTOR =
39
- '[data-test-manage-group-dropdown] ul li a' ;
40
37
41
38
hooks . beforeEach ( async function ( ) {
42
39
await authenticateSession ( { username : 'admin' } ) ;
@@ -62,16 +59,20 @@ module('Acceptance | groups | members', function (hooks) {
62
59
test ( 'visiting group members' , async function ( assert ) {
63
60
await visit ( urls . members ) ;
64
61
await a11yAudit ( ) ;
62
+
65
63
assert . strictEqual ( currentURL ( ) , urls . members ) ;
66
- assert . strictEqual ( findAll ( 'tbody tr' ) . length , membersCount ) ;
64
+ assert . dom ( commonSelectors . TABLE_ROW ) . exists ( { count : membersCount } ) ;
67
65
} ) ;
68
66
69
67
test ( 'can remove a member' , async function ( assert ) {
70
68
await visit ( urls . members ) ;
71
- assert . strictEqual ( findAll ( 'tbody tr' ) . length , membersCount ) ;
72
- await click ( '.hds-dropdown-toggle-icon' ) ;
73
- await click ( 'tbody tr .hds-dropdown-list-item button' ) ;
74
- assert . strictEqual ( findAll ( 'tbody tr' ) . length , membersCount - 1 ) ;
69
+
70
+ assert . dom ( commonSelectors . TABLE_ROW ) . exists ( { count : membersCount } ) ;
71
+
72
+ await click ( selectors . TABLE_MEMBER_ACTION_DROPDOWN ) ;
73
+ await click ( selectors . TABLE_MEMBER_ACTION_DROPDOWN_DELETE_MEMBER ) ;
74
+
75
+ assert . dom ( commonSelectors . TABLE_ROW ) . exists ( { count : membersCount - 1 } ) ;
75
76
} ) ;
76
77
77
78
test ( 'cannot remove a member without proper authorization' , async function ( assert ) {
@@ -80,29 +81,33 @@ module('Acceptance | groups | members', function (hooks) {
80
81
) ;
81
82
instances . group . update ( { authorized_actions } ) ;
82
83
await visit ( urls . members ) ;
83
- assert . notOk ( find ( 'tbody tr .rose-dropdown-button-danger' ) ) ;
84
+
85
+ assert
86
+ . dom ( selectors . TABLE_MEMBER_ACTION_DROPDOWN_DELETE_MEMBER )
87
+ . doesNotExist ( ) ;
84
88
} ) ;
85
89
86
90
test ( 'shows error message on member remove' , async function ( assert ) {
91
+ const errorMsg = 'The request was invalid.' ;
87
92
this . server . post ( '/groups/:idMethod' , ( ) => {
88
93
return new Response (
89
94
400 ,
90
95
{ } ,
91
96
{
92
97
status : 400 ,
93
98
code : 'invalid_argument' ,
94
- message : 'The request was invalid.' ,
99
+ message : errorMsg ,
95
100
details : { } ,
96
101
} ,
97
102
) ;
98
103
} ) ;
99
104
await visit ( urls . members ) ;
100
- assert . strictEqual ( findAll ( 'tbody tr' ) . length , membersCount ) ;
101
- await click ( '.hds-dropdown-toggle-icon' ) ;
102
- await click ( 'tbody tr .hds-dropdown-list-item button' ) ;
103
- assert
104
- . dom ( commonSelectors . ALERT_TOAST_BODY )
105
- . hasText ( 'The request was invalid.' ) ;
105
+ assert . dom ( commonSelectors . TABLE_ROW ) . exists ( { count : membersCount } ) ;
106
+
107
+ await click ( selectors . TABLE_MEMBER_ACTION_DROPDOWN ) ;
108
+ await click ( selectors . TABLE_MEMBER_ACTION_DROPDOWN_DELETE_MEMBER ) ;
109
+
110
+ assert . dom ( commonSelectors . ALERT_TOAST_BODY ) . hasText ( errorMsg ) ;
106
111
} ) ;
107
112
108
113
test ( 'visiting member selection' , async function ( assert ) {
@@ -113,69 +118,82 @@ module('Acceptance | groups | members', function (hooks) {
113
118
114
119
test ( 'can navigate to add members with proper authorization' , async function ( assert ) {
115
120
await visit ( urls . group ) ;
116
- await click ( MANAGE_DROPDOWN_SELECTOR ) ;
117
- assert . dom ( ADD_MEMBERS_ACTION_SELECTOR ) . isVisible ( ) ;
121
+ await click ( selectors . MANAGE_DROPDOWN ) ;
122
+ assert . dom ( selectors . MANAGE_DROPDOWN_ADD_MEMBER ) . isVisible ( ) ;
118
123
} ) ;
119
124
120
125
test ( 'cannot navigate to add members without proper authorization' , async function ( assert ) {
121
126
const authorized_actions = instances . group . authorized_actions . filter (
122
127
( item ) => item !== 'add-members' ,
123
128
) ;
124
129
instances . group . update ( { authorized_actions } ) ;
130
+
125
131
await visit ( urls . group ) ;
126
- assert . notOk ( find ( `[href="${ urls . addMembers } "]` ) ) ;
132
+
133
+ assert . dom ( commonSelectors . HREF ( urls . addMembers ) ) . doesNotExist ( ) ;
127
134
} ) ;
128
135
129
136
test ( 'select and save members to add' , async function ( assert ) {
130
137
instances . group . update ( { memberIds : [ ] } ) ;
131
138
await visit ( urls . members ) ;
132
- assert . strictEqual ( findAll ( 'tbody tr' ) . length , 0 ) ;
133
- await click ( MANAGE_DROPDOWN_SELECTOR ) ;
134
- await click ( ADD_MEMBERS_ACTION_SELECTOR ) ;
139
+
140
+ assert . dom ( commonSelectors . TABLE_ROW ) . exists ( { count : 0 } ) ;
141
+
142
+ await click ( selectors . MANAGE_DROPDOWN ) ;
143
+ await click ( selectors . MANAGE_DROPDOWN_ADD_MEMBER ) ;
144
+
135
145
assert . strictEqual ( currentURL ( ) , urls . addMembers ) ;
136
146
// Click three times to select, unselect, then reselect (for coverage)
137
- await click ( 'tbody label' ) ;
138
- await click ( 'tbody label' ) ;
139
- await click ( 'tbody label' ) ;
140
- await click ( 'form [type="submit"]' ) ;
147
+ await click ( commonSelectors . TABLE_ROW_CHECKBOX ) ;
148
+ await click ( commonSelectors . SAVE_BTN ) ;
149
+
141
150
await visit ( urls . members ) ;
142
- assert . strictEqual ( findAll ( 'tbody tr' ) . length , 1 ) ;
151
+
152
+ assert . dom ( commonSelectors . TABLE_ROW ) . exists ( { count : 1 } ) ;
143
153
} ) ;
144
154
145
155
test ( 'select and cancel members to add' , async function ( assert ) {
146
156
await visit ( urls . members ) ;
147
- assert . strictEqual ( findAll ( 'tbody tr' ) . length , membersCount ) ;
148
- await click ( '.hds-dropdown-toggle-icon' ) ;
149
- await click ( 'tbody tr .hds-dropdown-list-item button' ) ;
150
- assert . strictEqual ( findAll ( 'tbody tr' ) . length , membersCount - 1 ) ;
151
- await click ( MANAGE_DROPDOWN_SELECTOR ) ;
152
- await click ( ADD_MEMBERS_ACTION_SELECTOR ) ;
157
+
158
+ assert . dom ( commonSelectors . TABLE_ROW ) . exists ( { count : membersCount } ) ;
159
+
160
+ await click ( selectors . TABLE_MEMBER_ACTION_DROPDOWN ) ;
161
+ await click ( selectors . TABLE_MEMBER_ACTION_DROPDOWN_DELETE_MEMBER ) ;
162
+
163
+ assert . dom ( commonSelectors . TABLE_ROW ) . exists ( { count : membersCount - 1 } ) ;
164
+
165
+ await click ( selectors . MANAGE_DROPDOWN ) ;
166
+ await click ( selectors . MANAGE_DROPDOWN_ADD_MEMBER ) ;
167
+
153
168
assert . strictEqual ( currentURL ( ) , urls . addMembers ) ;
154
- await click ( 'tbody label' ) ;
155
- await click ( 'form [type="button"]' ) ;
156
- await visit ( urls . members ) ;
157
- assert . strictEqual ( findAll ( 'tbody tr' ) . length , membersCount - 1 ) ;
169
+
170
+ await click ( commonSelectors . TABLE_ROW_CHECKBOX ) ;
171
+
172
+ await click ( commonSelectors . CANCEL_BTN ) ;
173
+
174
+ assert . strictEqual ( currentURL ( ) , urls . members ) ;
175
+ assert . dom ( commonSelectors . TABLE_ROW ) . exists ( { count : membersCount - 1 } ) ;
158
176
} ) ;
159
177
160
178
test ( 'shows error message on member add' , async function ( assert ) {
179
+ const errorMsg = 'The request was invalid.' ;
161
180
this . server . post ( '/groups/:idMethod' , ( ) => {
162
181
return new Response (
163
182
400 ,
164
183
{ } ,
165
184
{
166
185
status : 400 ,
167
186
code : 'invalid_argument' ,
168
- message : 'The request was invalid.' ,
187
+ message : errorMsg ,
169
188
details : { } ,
170
189
} ,
171
190
) ;
172
191
} ) ;
173
192
instances . group . update ( { memberIds : [ ] } ) ;
174
193
await visit ( urls . addMembers ) ;
175
- await click ( 'tbody label' ) ;
176
- await click ( 'form [type="submit"]' ) ;
177
- assert
178
- . dom ( commonSelectors . ALERT_TOAST_BODY )
179
- . hasText ( 'The request was invalid.' ) ;
194
+
195
+ await click ( commonSelectors . SAVE_BTN ) ;
196
+
197
+ assert . dom ( commonSelectors . ALERT_TOAST_BODY ) . hasText ( errorMsg ) ;
180
198
} ) ;
181
199
} ) ;
0 commit comments