@@ -12,22 +12,25 @@ describe('Task Requests', () => {
12
12
13
13
jest . setTimeout ( 60000 ) ;
14
14
15
- beforeAll ( async ( ) => {
15
+ beforeEach ( async ( ) => {
16
16
browser = await puppeteer . launch ( {
17
17
headless : 'new' ,
18
18
ignoreHTTPSErrors : true ,
19
19
args : [ '--incognito' , '--disable-web-security' ] ,
20
20
devtools : false ,
21
21
} ) ;
22
-
22
+ } ) ;
23
+ beforeEach ( async ( ) => {
23
24
page = await browser . newPage ( ) ;
24
25
25
26
await page . setRequestInterception ( true ) ;
26
27
27
28
page . on ( 'request' , ( request ) => {
28
29
if (
29
30
request . url ( ) === `${ API_BASE_URL } /taskRequests` ||
30
- request . url ( ) === `${ API_BASE_URL } /taskRequests?dev=true`
31
+ request . url ( ) === `${ API_BASE_URL } /taskRequests?dev=true` ||
32
+ request . url ( ) ===
33
+ `${ API_BASE_URL } /taskRequests?size=20&q=status%3Apending+sort%3Acreated-asc&dev=true`
31
34
) {
32
35
request . respond ( {
33
36
status : 200 ,
@@ -39,19 +42,37 @@ describe('Task Requests', () => {
39
42
'Access-Control-Allow-Headers' : 'Content-Type, Authorization' ,
40
43
} ,
41
44
} ) ;
45
+ } else if (
46
+ request . url ( ) ===
47
+ `${ API_BASE_URL } /taskRequests?size=20&q=status%3Aapproved++sort%3Acreated-asc&dev=true`
48
+ ) {
49
+ const list = [ ] ;
50
+ for ( let i = 0 ; i < 20 ; i ++ ) {
51
+ list . push ( fetchedTaskRequests [ 0 ] ) ;
52
+ }
53
+ request . respond ( {
54
+ status : 200 ,
55
+ contentType : 'application/json' ,
56
+ body : JSON . stringify ( {
57
+ data : list ,
58
+ next : '/taskRequests?size=20&q=status%3Aapproved++sort%3Acreated-asc&dev=true' ,
59
+ } ) ,
60
+ } ) ;
42
61
} else {
43
62
request . continue ( ) ;
44
63
}
45
64
} ) ;
46
-
47
65
await page . goto ( `${ SITE_URL } /taskRequests` ) ;
48
66
await page . waitForNetworkIdle ( ) ;
49
67
} ) ;
50
68
69
+ afterEach ( async ( ) => {
70
+ await page . close ( ) ;
71
+ } ) ;
72
+
51
73
afterAll ( async ( ) => {
52
74
await browser . close ( ) ;
53
75
} ) ;
54
-
55
76
describe ( 'When the user is super user' , ( ) => {
56
77
it ( 'should display the task requests card' , async ( ) => {
57
78
const url = await page . evaluate ( ( ) => API_BASE_URL ) ;
@@ -68,11 +89,6 @@ describe('Task Requests', () => {
68
89
expect ( purpose ) . toMatch ( / t e s t p u r p o s e / i) ;
69
90
} ) ;
70
91
describe ( 'Filter Modal' , ( ) => {
71
- beforeAll ( async ( ) => {
72
- await page . goto ( `${ SITE_URL } /taskRequests/?dev=true` ) ;
73
- await page . waitForNetworkIdle ( ) ;
74
- } ) ;
75
-
76
92
it ( 'should be hidden initially' , async ( ) => {
77
93
const modal = await page . $ ( '.filter-modal' ) ;
78
94
expect (
@@ -84,28 +100,63 @@ describe('Task Requests', () => {
84
100
const modal = await page . $ ( '.filter-modal' ) ;
85
101
const filterHead = await page . $ ( '.filter-head' ) ;
86
102
const filterContainer = await page . $ ( '.filters-container' ) ;
87
-
88
103
expect ( filterHead ) . toBeTruthy ( ) ;
89
104
expect ( filterContainer ) . toBeTruthy ( ) ;
90
-
91
105
await page . click ( '#filter-button' ) ;
92
106
expect ( modal ) . not . toBeNull ( ) ;
93
107
expect (
94
108
await modal . evaluate ( ( el ) => el . classList . contains ( 'hidden' ) ) ,
95
109
) . toBe ( false ) ;
96
-
97
110
await page . mouse . click ( 20 , 20 ) ;
98
111
expect (
99
112
await modal . evaluate ( ( el ) => el . classList . contains ( 'hidden' ) ) ,
100
113
) . toBe ( true ) ;
101
114
} ) ;
115
+
116
+ it ( 'checks if PENDING is checked by default' , async ( ) => {
117
+ const filterButton = await page . $ ( '#filter-button' ) ;
118
+ await filterButton . click ( ) ;
119
+ await page . waitForSelector ( '.filter-modal' ) ;
120
+ const activeFilter = await page . $ ( 'input[value="PENDING"]' ) ;
121
+ const currentState = await activeFilter . getProperty ( 'checked' ) ;
122
+ const isChecked = await currentState . jsonValue ( ) ;
123
+ expect ( isChecked ) . toBe ( true ) ;
124
+ } ) ;
125
+
126
+ it ( 'Selecting filters and clicking on apply should filter task request list' , async ( ) => {
127
+ let cardsList = await page . $$ ( '.taskRequest__card' ) ;
128
+ expect ( cardsList ) . not . toBeNull ( ) ;
129
+ const initialLength = cardsList . length ;
130
+ await page . click ( '#filter-button' ) ;
131
+ await page . click ( 'input[value="PENDING"]' ) ;
132
+ await page . click ( 'input[value="APPROVED"]' ) ;
133
+ await page . click ( '#apply-filter-button' ) ;
134
+ await page . waitForNetworkIdle ( ) ;
135
+ cardsList = await page . $$ ( '.taskRequest__card' ) ;
136
+ expect ( cardsList ) . not . toBeNull ( ) ;
137
+ expect ( cardsList . length ) . toBeGreaterThanOrEqual ( 0 ) ;
138
+ expect ( cardsList . length ) . not . toBe ( initialLength ) ;
139
+ } ) ;
140
+
141
+ it ( 'clears the filter when the Clear button is clicked' , async ( ) => {
142
+ const filterButton = await page . $ ( '#filter-button' ) ;
143
+ await filterButton . click ( ) ;
144
+ await page . waitForSelector ( '.filter-modal' ) ;
145
+ const activeFilter = await page . $ ( 'input[value="APPROVED"]' ) ;
146
+ await activeFilter . click ( ) ;
147
+ const clearButton = await page . $ ( '.filter-modal #clear-button' ) ;
148
+ await clearButton . click ( ) ;
149
+ await page . waitForSelector ( '.filter-modal' , { hidden : true } ) ;
150
+ const currentState = await activeFilter . getProperty ( 'checked' ) ;
151
+ const isChecked = await currentState . jsonValue ( ) ;
152
+ expect ( isChecked ) . toBe ( false ) ;
153
+ } ) ;
102
154
} ) ;
103
155
104
156
describe ( 'Sort Modal' , ( ) => {
105
157
it ( 'should be hidden initially' , async ( ) => {
106
158
const sortModal = await page . $ ( '.sort-modal' ) ;
107
- const assigneButton = await page . $ ( '#ASSIGNEE_COUNT' ) ;
108
-
159
+ const assigneButton = await page . $ ( '#REQUESTORS_COUNT_ASC' ) ;
109
160
expect (
110
161
await sortModal . evaluate ( ( el ) => el . classList . contains ( 'hidden' ) ) ,
111
162
) . toBe ( true ) ;
@@ -114,15 +165,15 @@ describe('Task Requests', () => {
114
165
115
166
it ( 'should toggle visibility sort modal by clicking the sort button and selecting an option' , async ( ) => {
116
167
const sortModal = await page . $ ( '.sort-modal' ) ;
117
- const assigneButton = await page . $ ( '#ASSIGNEE_COUNT ' ) ;
168
+ const assigneButton = await page . $ ( '#REQUESTORS_COUNT_ASC ' ) ;
118
169
const sortHead = await page . $ ( '.sort-head' ) ;
119
170
const sortContainer = await page . $ ( '.sorts-container' ) ;
120
171
121
172
expect ( sortHead ) . toBeTruthy ( ) ;
122
173
expect ( sortContainer ) . toBeTruthy ( ) ;
123
174
124
175
await page . click ( '.sort-button' ) ;
125
- await page . click ( '#ASSIGNEE_COUNT ' ) ;
176
+ await page . click ( '#REQUESTORS_COUNT_ASC ' ) ;
126
177
expect (
127
178
await assigneButton . evaluate ( ( el ) =>
128
179
el . classList . contains ( 'selected' ) ,
@@ -131,9 +182,8 @@ describe('Task Requests', () => {
131
182
expect (
132
183
await sortModal . evaluate ( ( el ) => el . classList . contains ( 'hidden' ) ) ,
133
184
) . toBe ( true ) ;
134
-
135
185
await page . click ( '.sort-button' ) ;
136
- await page . click ( '#ASSIGNEE_COUNT ' ) ;
186
+ await page . click ( '#REQUESTORS_COUNT_ASC ' ) ;
137
187
expect (
138
188
await assigneButton . evaluate ( ( el ) =>
139
189
el . classList . contains ( 'selected' ) ,
@@ -144,6 +194,25 @@ describe('Task Requests', () => {
144
194
) . toBe ( true ) ;
145
195
} ) ;
146
196
} ) ;
197
+
198
+ it ( 'Checks that new items are loaded when scrolled to the bottom' , async ( ) => {
199
+ await page . click ( '#filter-button' ) ;
200
+ await page . click ( 'input[value="PENDING"]' ) ;
201
+ await page . click ( 'input[value="APPROVED"]' ) ;
202
+ await page . click ( '#apply-filter-button' ) ;
203
+ await page . waitForNetworkIdle ( ) ;
204
+ let taskRequestList = await page . $$ ( '.taskRequest__card' ) ;
205
+ expect ( taskRequestList . length ) . toBe ( 20 ) ;
206
+ await page . evaluate ( ( ) => {
207
+ const element = document . querySelector ( '.virtual' ) ;
208
+ if ( element ) {
209
+ element . scrollIntoView ( { behavior : 'auto' } ) ;
210
+ }
211
+ } ) ;
212
+ await page . waitForNetworkIdle ( ) ;
213
+ taskRequestList = await page . $$ ( '.taskRequest__card' ) ;
214
+ expect ( taskRequestList . length ) . toBe ( 40 ) ;
215
+ } ) ;
147
216
} ) ;
148
217
} ) ;
149
218
0 commit comments