1
- import { act , configure , render , screen } from '@testing-library/react' ;
1
+ import { configure , render , screen } from '@testing-library/react' ;
2
2
import userEvent from '@testing-library/user-event' ;
3
3
import type { Rate } from 'api/rates' ;
4
4
import messages from 'locales/messages' ;
@@ -124,67 +124,67 @@ describe('add-a-new-rate', () => {
124
124
let options = null ;
125
125
render ( < RenderFormDataUI submit = { submit } cancel = { cancel } /> ) ;
126
126
127
- await act ( async ( ) => user . type ( screen . getByLabelText ( 'Description' ) , 'regular rate test' ) ) ;
127
+ await user . type ( screen . getByLabelText ( 'Description' ) , 'regular rate test' ) ;
128
128
129
129
// select first option for metric
130
- await act ( async ( ) => user . click ( screen . getByLabelText ( 'Select Metric' ) ) ) ;
130
+ await user . click ( screen . getByLabelText ( 'Select Metric' ) ) ;
131
131
options = await screen . findAllByRole ( 'option' ) ;
132
- await act ( async ( ) => user . click ( options [ 0 ] ) ) ;
132
+ await user . click ( options [ 0 ] ) ;
133
133
134
134
// select first option for measurement
135
- await act ( async ( ) => user . click ( screen . getByLabelText ( 'Select Measurement' ) ) ) ;
135
+ await user . click ( screen . getByLabelText ( 'Select Measurement' ) ) ;
136
136
options = await screen . findAllByRole ( 'option' ) ;
137
- await act ( async ( ) => user . click ( options [ 3 ] ) ) ; // Previous select options are not being removed from page
137
+ await user . click ( options [ 3 ] ) ; // Previous select options are not being removed from page
138
138
139
139
// make sure the default cost type is selected
140
140
expect ( screen . getByLabelText ( qr . infraradio ) ) . toHaveProperty ( 'checked' , true ) ;
141
141
142
142
// selecting a different measurement does not reset cost type to default
143
- await act ( async ( ) => user . click ( screen . getByLabelText ( qr . supplradio ) ) ) ;
143
+ await user . click ( screen . getByLabelText ( qr . supplradio ) ) ;
144
144
145
- await act ( async ( ) => user . click ( screen . getByLabelText ( 'Select Measurement' ) ) ) ;
145
+ await user . click ( screen . getByLabelText ( 'Select Measurement' ) ) ;
146
146
options = await screen . findAllByRole ( 'option' ) ;
147
- await act ( async ( ) => user . click ( options [ 1 ] ) ) ;
147
+ await user . click ( options [ 1 ] ) ;
148
148
149
149
expect ( screen . getByLabelText ( qr . supplradio ) ) . toHaveProperty ( 'checked' , true ) ;
150
150
151
151
// selecting metric will reset both measurement and cost type
152
- await act ( async ( ) => user . click ( screen . getByLabelText ( qr . infraradio ) ) ) ;
152
+ await user . click ( screen . getByLabelText ( qr . infraradio ) ) ;
153
153
154
- await act ( async ( ) => user . click ( screen . getByLabelText ( 'Select Metric' ) ) ) ;
154
+ await user . click ( screen . getByLabelText ( 'Select Metric' ) ) ;
155
155
options = await screen . findAllByRole ( 'option' ) ;
156
- await act ( async ( ) => user . click ( options [ 1 ] ) ) ;
156
+ await user . click ( options [ 1 ] ) ;
157
157
158
158
expect ( screen . getByText ( regExp ( messages . costModelsRequiredField ) ) ) . not . toBeNull ( ) ;
159
159
160
- await act ( async ( ) => user . click ( screen . getByLabelText ( 'Select Measurement' ) ) ) ;
160
+ await user . click ( screen . getByLabelText ( 'Select Measurement' ) ) ;
161
161
options = await screen . findAllByRole ( 'option' ) ;
162
- await act ( async ( ) => user . click ( options [ 3 ] ) ) ; // Previous select options are not being removed from page
162
+ await user . click ( options [ 3 ] ) ; // Previous select options are not being removed from page
163
163
164
164
expect ( screen . getByLabelText ( qr . supplradio ) ) . toHaveProperty ( 'checked' , true ) ;
165
- await act ( async ( ) => user . click ( screen . getByLabelText ( qr . infraradio ) ) ) ;
165
+ await user . click ( screen . getByLabelText ( qr . infraradio ) ) ;
166
166
167
167
const rateInput = screen . getByLabelText ( 'Assign rate' ) ;
168
168
169
169
// setting rate to anything but a number
170
170
expect ( screen . queryByText ( regExp ( messages . priceListNumberRate ) ) ) . toBeNull ( ) ;
171
- await act ( async ( ) => user . type ( rateInput , 'A' ) ) ;
171
+ await user . type ( rateInput , 'A' ) ;
172
172
expect ( screen . getByText ( regExp ( messages . priceListNumberRate ) ) ) . not . toBeNull ( ) ;
173
173
174
174
// setting rate to a negative number - validation is done on blur
175
- await act ( async ( ) => user . clear ( rateInput ) ) ;
176
- await act ( async ( ) => user . type ( rateInput , '-12' ) ) ;
175
+ await user . clear ( rateInput ) ;
176
+ await user . type ( rateInput , '-12' ) ;
177
177
expect ( screen . getByText ( regExp ( messages . priceListPosNumberRate ) ) ) . not . toBeNull ( ) ;
178
178
179
179
// setting rate to a valid number
180
- await act ( async ( ) => user . clear ( rateInput ) ) ;
181
- await act ( async ( ) => user . type ( rateInput , '0.2' ) ) ;
180
+ await user . clear ( rateInput ) ;
181
+ await user . type ( rateInput , '0.2' ) ;
182
182
expect ( screen . queryByText ( regExp ( messages . priceListNumberRate ) ) ) . toBeNull ( ) ;
183
183
184
184
// making sure button is enabled
185
185
const createButton = screen . getByText ( regExp ( messages . createRate ) ) ;
186
186
expect ( createButton . getAttribute ( 'aria-disabled' ) ) . toBe ( 'false' ) ;
187
- await act ( async ( ) => user . click ( createButton ) ) ;
187
+ await user . click ( createButton ) ;
188
188
expect ( submit ) . toHaveBeenCalled ( ) ;
189
189
} , 10000 ) ;
190
190
@@ -196,68 +196,68 @@ describe('add-a-new-rate', () => {
196
196
197
197
render ( < RenderFormDataUI submit = { submit } cancel = { cancel } /> ) ;
198
198
199
- await act ( async ( ) => user . type ( screen . getByLabelText ( 'Description' ) , 'tag rate test' ) ) ;
199
+ await user . type ( screen . getByLabelText ( 'Description' ) , 'tag rate test' ) ;
200
200
201
- await act ( async ( ) => user . click ( screen . getByLabelText ( 'Select Metric' ) ) ) ;
201
+ await user . click ( screen . getByLabelText ( 'Select Metric' ) ) ;
202
202
options = await screen . findAllByRole ( 'option' ) ;
203
- await act ( async ( ) => user . click ( options [ 0 ] ) ) ;
203
+ await user . click ( options [ 0 ] ) ;
204
204
205
- await act ( async ( ) => user . click ( screen . getByLabelText ( 'Select Measurement' ) ) ) ;
205
+ await user . click ( screen . getByLabelText ( 'Select Measurement' ) ) ;
206
206
options = await screen . findAllByRole ( 'option' ) ;
207
- await act ( async ( ) => user . click ( options [ 3 ] ) ) ; // Previous select options are not being removed from page
207
+ await user . click ( options [ 3 ] ) ; // Previous select options are not being removed from page
208
208
209
- await act ( async ( ) => user . click ( screen . getByLabelText ( regExp ( messages . costModelsEnterTagRate ) ) ) ) ;
209
+ await user . click ( screen . getByLabelText ( regExp ( messages . costModelsEnterTagRate ) ) ) ;
210
210
211
211
// tag key is required validation
212
212
const tagKeyInput = screen . getByPlaceholderText ( qr . tagKeyPlaceHolder ) ;
213
- await act ( async ( ) => user . type ( tagKeyInput , 'test' ) ) ;
213
+ await user . type ( tagKeyInput , 'test' ) ;
214
214
expect ( screen . queryByText ( regExp ( messages . costModelsRequiredField ) ) ) . toBeNull ( ) ;
215
- await act ( async ( ) => user . clear ( tagKeyInput ) ) ;
215
+ await user . clear ( tagKeyInput ) ;
216
216
expect ( screen . getByText ( regExp ( messages . costModelsRequiredField ) ) ) . not . toBeNull ( ) ;
217
- await act ( async ( ) => user . type ( tagKeyInput , 'openshift' ) ) ;
217
+ await user . type ( tagKeyInput , 'openshift' ) ;
218
218
expect ( screen . queryByText ( regExp ( messages . costModelsRequiredField ) ) ) . toBeNull ( ) ;
219
219
220
220
// tag value is required validation
221
221
const tagValueInput = screen . getByPlaceholderText ( 'Enter a tag value' ) ;
222
- await act ( async ( ) => user . type ( tagValueInput , 'test' ) ) ;
222
+ await user . type ( tagValueInput , 'test' ) ;
223
223
expect ( screen . queryByText ( regExp ( messages . costModelsRequiredField ) ) ) . toBeNull ( ) ;
224
- await act ( async ( ) => user . clear ( tagValueInput ) ) ;
224
+ await user . clear ( tagValueInput ) ;
225
225
expect ( screen . getByText ( regExp ( messages . costModelsRequiredField ) ) ) . not . toBeNull ( ) ;
226
- await act ( async ( ) => user . type ( tagValueInput , 'openshift' ) ) ;
226
+ await user . type ( tagValueInput , 'openshift' ) ;
227
227
expect ( screen . queryByText ( regExp ( messages . costModelsRequiredField ) ) ) . toBeNull ( ) ;
228
228
229
229
// rate must be a number
230
230
const tagRateInput = screen . getByLabelText ( 'Assign rate' ) ;
231
- await act ( async ( ) => user . type ( tagRateInput , 'test' ) ) ;
231
+ await user . type ( tagRateInput , 'test' ) ;
232
232
expect ( screen . getByText ( regExp ( messages . priceListNumberRate ) ) ) . not . toBeNull ( ) ;
233
233
234
234
// rate is required
235
- await act ( async ( ) => user . clear ( tagRateInput ) ) ;
235
+ await user . clear ( tagRateInput ) ;
236
236
expect ( screen . getByText ( regExp ( messages . costModelsRequiredField ) ) ) . not . toBeNull ( ) ;
237
237
238
238
// rate must be positive
239
- await act ( async ( ) => user . type ( tagRateInput , '-0.23' ) ) ;
239
+ await user . type ( tagRateInput , '-0.23' ) ;
240
240
expect ( screen . getByText ( regExp ( messages . priceListPosNumberRate ) ) ) . not . toBeNull ( ) ;
241
241
242
242
// setting a valid rate - now form is valid and can be submitted
243
243
const createButton = screen . getByText ( regExp ( messages . createRate ) ) ;
244
244
expect ( createButton . getAttribute ( 'aria-disabled' ) ) . toBe ( 'true' ) ;
245
- await act ( async ( ) => user . clear ( tagRateInput ) ) ;
245
+ await user . clear ( tagRateInput ) ;
246
246
247
- await act ( async ( ) => user . type ( tagRateInput , '0.23' ) ) ;
248
- await act ( async ( ) => user . type ( screen . getByPlaceholderText ( 'Enter a tag description' ) , 'default worker' ) ) ;
247
+ await user . type ( tagRateInput , '0.23' ) ;
248
+ await user . type ( screen . getByPlaceholderText ( 'Enter a tag description' ) , 'default worker' ) ;
249
249
expect ( createButton . getAttribute ( 'aria-disabled' ) ) . toBe ( 'false' ) ;
250
250
251
251
// set tag to default
252
- await act ( async ( ) => user . click ( screen . getByLabelText ( 'Default' ) ) ) ;
252
+ await user . click ( screen . getByLabelText ( 'Default' ) ) ;
253
253
254
254
// add a new rate disables the submit button
255
- await act ( async ( ) => user . click ( screen . getByText ( / a d d m o r e t a g v a l u e s / i) ) ) ;
255
+ await user . click ( screen . getByText ( / a d d m o r e t a g v a l u e s / i) ) ;
256
256
expect ( createButton . getAttribute ( 'aria-disabled' ) ) . toBe ( 'true' ) ;
257
257
258
- await act ( async ( ) => user . click ( screen . getAllByRole ( 'button' , { name : / r e m o v e t a g v a l u e / i } ) [ 1 ] ) ) ;
258
+ await user . click ( screen . getAllByRole ( 'button' , { name : / r e m o v e t a g v a l u e / i } ) [ 1 ] ) ;
259
259
expect ( createButton . getAttribute ( 'aria-disabled' ) ) . toBe ( 'false' ) ;
260
- await act ( async ( ) => user . click ( createButton ) ) ;
260
+ await user . click ( createButton ) ;
261
261
expect ( submit ) . toHaveBeenCalled ( ) ;
262
262
} , 15000 ) ;
263
263
@@ -269,37 +269,37 @@ describe('add-a-new-rate', () => {
269
269
270
270
render ( < RenderFormDataUI submit = { submit } cancel = { cancel } /> ) ;
271
271
272
- await act ( async ( ) => user . click ( screen . getByLabelText ( 'Select Metric' ) ) ) ;
272
+ await user . click ( screen . getByLabelText ( 'Select Metric' ) ) ;
273
273
options = await screen . findAllByRole ( 'option' ) ;
274
- await act ( async ( ) => user . click ( options [ 1 ] ) ) ;
274
+ await user . click ( options [ 1 ] ) ;
275
275
276
- await act ( async ( ) => user . click ( screen . getByLabelText ( 'Select Measurement' ) ) ) ;
276
+ await user . click ( screen . getByLabelText ( 'Select Measurement' ) ) ;
277
277
options = await screen . findAllByRole ( 'option' ) ;
278
- await act ( async ( ) => user . click ( options [ 3 ] ) ) ; // Previous select options are not being removed from page
278
+ await user . click ( options [ 3 ] ) ; // Previous select options are not being removed from page
279
279
280
- await act ( async ( ) => user . click ( screen . getByLabelText ( regExp ( messages . costModelsEnterTagRate ) ) ) ) ;
280
+ await user . click ( screen . getByLabelText ( regExp ( messages . costModelsEnterTagRate ) ) ) ;
281
281
282
282
// tag key is duplicated
283
283
const tagKeyInput = screen . getByPlaceholderText ( qr . tagKeyPlaceHolder ) ;
284
- await act ( async ( ) => user . type ( tagKeyInput , 'app' ) ) ;
284
+ await user . type ( tagKeyInput , 'app' ) ;
285
285
expect ( screen . getByText ( regExp ( messages . priceListDuplicate ) ) ) . not . toBeNull ( ) ;
286
286
287
- await act ( async ( ) => user . type ( tagKeyInput , '1' ) ) ;
287
+ await user . type ( tagKeyInput , '1' ) ;
288
288
expect ( screen . queryByText ( regExp ( messages . priceListDuplicate ) ) ) . toBeNull ( ) ;
289
289
290
290
// change measurement will set tag key as not duplicate
291
- await act ( async ( ) => user . type ( tagKeyInput , '{backspace}' ) ) ;
291
+ await user . type ( tagKeyInput , '{backspace}' ) ;
292
292
expect ( screen . getByText ( regExp ( messages . priceListDuplicate ) ) ) . not . toBeNull ( ) ;
293
293
294
- await act ( async ( ) => user . click ( screen . getByLabelText ( 'Select Measurement' ) ) ) ;
294
+ await user . click ( screen . getByLabelText ( 'Select Measurement' ) ) ;
295
295
options = await screen . findAllByRole ( 'option' ) ;
296
- await act ( async ( ) => user . click ( options [ 1 ] ) ) ;
296
+ await user . click ( options [ 1 ] ) ;
297
297
298
298
expect ( screen . queryByText ( regExp ( messages . priceListDuplicate ) ) ) . toBeNull ( ) ;
299
299
300
- await act ( async ( ) => user . click ( screen . getByLabelText ( 'Select Measurement' ) ) ) ;
300
+ await user . click ( screen . getByLabelText ( 'Select Measurement' ) ) ;
301
301
options = await screen . findAllByRole ( 'option' ) ;
302
- await act ( async ( ) => user . click ( options [ 3 ] ) ) ;
302
+ await user . click ( options [ 3 ] ) ;
303
303
304
304
expect ( screen . getByText ( regExp ( messages . priceListDuplicate ) ) ) . not . toBeNull ( ) ;
305
305
} ) ;
@@ -312,13 +312,13 @@ describe('add-a-new-rate', () => {
312
312
313
313
await render ( < RenderFormDataUI submit = { submit } cancel = { cancel } /> ) ;
314
314
315
- await act ( async ( ) => user . click ( screen . getByLabelText ( 'Select Metric' ) ) ) ;
315
+ await user . click ( screen . getByLabelText ( 'Select Metric' ) ) ;
316
316
options = await screen . findAllByRole ( 'option' ) ;
317
- await act ( async ( ) => user . click ( options [ 2 ] ) ) ;
317
+ await user . click ( options [ 2 ] ) ;
318
318
319
- await act ( async ( ) => user . click ( screen . getByLabelText ( 'Select Measurement' ) ) ) ;
319
+ await user . click ( screen . getByLabelText ( 'Select Measurement' ) ) ;
320
320
options = await screen . findAllByRole ( 'option' ) ;
321
- await act ( async ( ) => user . click ( options [ 0 ] ) ) ;
321
+ await user . click ( options [ 0 ] ) ;
322
322
expect ( screen . queryAllByLabelText ( regExp ( messages . costModelsEnterTagRate ) ) ) . toHaveLength ( 0 ) ;
323
323
} ) ;
324
324
} ) ;
0 commit comments