@@ -89,15 +89,15 @@ module Waiters
89
89
end
90
90
91
91
it 'returns when successful' do
92
- client . stub_responses ( :waiter_operation , table : { table_status : 'ACTIVE ' } )
92
+ client . stub_responses ( :waiter_operation , complex_object : { string_member : 'expected ' } )
93
93
expect { client . wait_until ( :generic_waiter ) }
94
94
. not_to raise_error
95
95
end
96
96
97
97
it 'returns the client response' do
98
- client . stub_responses ( :waiter_operation , table : { table_status : 'ACTIVE ' } )
98
+ client . stub_responses ( :waiter_operation , complex_object : { string_member : 'expected ' } )
99
99
resp = client . wait_until ( :generic_waiter )
100
- expect ( resp . table . table_status ) . to eq ( 'ACTIVE ' )
100
+ expect ( resp . complex_object . string_member ) . to eq ( 'expected ' )
101
101
end
102
102
103
103
it 'raises an error when failed' do
@@ -231,22 +231,22 @@ module Waiters
231
231
client . stub_responses (
232
232
:waiter_operation ,
233
233
'ResourceNotFoundException' ,
234
- { table : { table_status : 'ACTIVE ' } }
234
+ { complex_object : { string_member : 'expected ' } }
235
235
)
236
236
expect { client . wait_until ( :error_matcher_with_false ) }
237
237
. not_to raise_error
238
238
end
239
239
240
240
it 'fails when matched' do
241
- client . stub_responses ( :waiter_operation , table : { table_status : 'ACTIVE ' } )
241
+ client . stub_responses ( :waiter_operation , complex_object : { string_member : 'expected ' } )
242
242
expect { client . wait_until ( :error_matcher_with_false_fails ) }
243
243
. to raise_error ( Errors ::WaiterFailed )
244
244
end
245
245
246
246
it 'retries when matched' do
247
247
client . stub_responses (
248
248
:waiter_operation ,
249
- { table : { table_status : 'ACTIVE ' } } ,
249
+ { complex_object : { string_member : 'expected ' } } ,
250
250
'ResourceNotFoundException'
251
251
)
252
252
retries = 0
@@ -261,8 +261,8 @@ module Waiters
261
261
it 'retries and succeed when matched' do
262
262
client . stub_responses (
263
263
:waiter_operation ,
264
- { table : { table_status : 'UPDATING ' } } ,
265
- { table : { table_status : 'ACTIVE ' } }
264
+ { complex_object : { string_member : 'retry ' } } ,
265
+ { complex_object : { string_member : 'expected ' } }
266
266
)
267
267
retries = 0
268
268
expect do
@@ -272,18 +272,86 @@ module Waiters
272
272
end
273
273
274
274
it 'fails when matched' do
275
- client . stub_responses ( :waiter_operation , table : { table_status : 'FAILED ' } )
275
+ client . stub_responses ( :waiter_operation , complex_object : { string_member : 'unexpected ' } )
276
276
expect { client . wait_until ( :path_matcher ) }
277
277
. to raise_error ( Errors ::FailureStateError )
278
278
end
279
+
280
+ it 'can match objects' do
281
+ object = {
282
+ object_member : { string_member : 'string' } ,
283
+ string_member : 'string' ,
284
+ number_member : 1 ,
285
+ boolean_member : true ,
286
+ array_member : [ 1 , 2 , 3 ] ,
287
+ object_array_member : [
288
+ {
289
+ object_member : { string_member : 'string' } ,
290
+ string_member : 'string'
291
+ }
292
+ ]
293
+ }
294
+ client . stub_responses ( :waiter_operation , complex_object : object )
295
+ expect { client . wait_until ( :path_matcher_object ) }
296
+ . to_not raise_error
297
+ end
298
+
299
+ it 'can match numbers' do
300
+ resp = {
301
+ object_list : [
302
+ { string_member : 'expected' } ,
303
+ { string_member : 'expected' } ,
304
+ { string_member : 'expected' }
305
+ ]
306
+ }
307
+ client . stub_responses ( :waiter_operation , resp )
308
+ expect { client . wait_until ( :path_matcher_number ) }
309
+ . to_not raise_error
310
+ end
311
+
312
+ it 'can match arrays' do
313
+ client . stub_responses ( :waiter_operation , number_list : [ 1 , 2 , 3 ] )
314
+ expect { client . wait_until ( :path_matcher_array ) }
315
+ . to_not raise_error
316
+ end
317
+
318
+ it 'can match array of objects' do
319
+ list = [
320
+ {
321
+ object_member : { string_member : 'string' } ,
322
+ string_member : 'string' ,
323
+ number_member : 1 ,
324
+ boolean_member : true ,
325
+ array_member : [ 1 , 2 , 3 ] ,
326
+ object_array_member : [
327
+ {
328
+ object_member : { string_member : 'string' } ,
329
+ string_member : 'string'
330
+ }
331
+ ]
332
+ } ,
333
+ {
334
+ object_member : { string_member : 'string' }
335
+ }
336
+ ]
337
+ client . stub_responses ( :waiter_operation , object_list : list )
338
+ expect { client . wait_until ( :path_matcher_object_array ) }
339
+ . to_not raise_error
340
+ end
341
+
342
+ it 'can match booleans' do
343
+ client . stub_responses ( :waiter_operation , boolean : false )
344
+ expect { client . wait_until ( :path_matcher_boolean ) }
345
+ . to_not raise_error
346
+ end
279
347
end
280
348
281
349
context 'pathAll' do
282
350
it 'retries and succeed when matched' do
283
351
client . stub_responses (
284
352
:waiter_operation ,
285
- { table_list : [ { table_status : 'UPDATING ' } ] } ,
286
- { table_list : [ { table_status : 'ACTIVE ' } ] }
353
+ { object_list : [ { string_member : 'retry ' } ] } ,
354
+ { object_list : [ { string_member : 'expected ' } ] }
287
355
)
288
356
retries = 0
289
357
expect do
@@ -292,10 +360,37 @@ module Waiters
292
360
expect ( retries ) . to be ( 1 )
293
361
end
294
362
363
+ it 'can match array of objects' do
364
+ client . stub_responses (
365
+ :waiter_operation ,
366
+ object_list : [ { string_member : 'expected' } , { string_member : 'expected' } ]
367
+ )
368
+ expect { client . wait_until ( :path_all_matcher_object ) }
369
+ . to_not raise_error
370
+ end
371
+
372
+ it 'can match array of numbers' do
373
+ client . stub_responses ( :waiter_operation , number_list : [ 123 , 123 , 123 ] )
374
+ expect { client . wait_until ( :path_all_matcher_number ) }
375
+ . to_not raise_error
376
+ end
377
+
378
+ it 'can match array of arrays' do
379
+ client . stub_responses ( :waiter_operation , nested_list : [ [ 1 , 2 , 3 ] , [ 1 , 2 , 3 ] , [ 1 , 2 , 3 ] ] )
380
+ expect { client . wait_until ( :path_all_matcher_array ) }
381
+ . to_not raise_error
382
+ end
383
+
384
+ it 'can match array of booleans' do
385
+ client . stub_responses ( :waiter_operation , boolean_list : [ false , false , false ] )
386
+ expect { client . wait_until ( :path_all_matcher_boolean ) }
387
+ . to_not raise_error
388
+ end
389
+
295
390
it 'fails when matched' do
296
391
client . stub_responses (
297
392
:waiter_operation ,
298
- table_list : [ { table_status : 'FAILED ' } ]
393
+ object_list : [ { string_member : 'unexpected ' } ]
299
394
)
300
395
expect { client . wait_until ( :path_all_matcher ) }
301
396
. to raise_error ( Errors ::FailureStateError )
@@ -304,7 +399,7 @@ module Waiters
304
399
it 'fails when none are matched' do
305
400
client . stub_responses (
306
401
:waiter_operation ,
307
- table_list : [ { table_status : 'UPDATING ' } , { table_status : 'ACTIVE ' } ]
402
+ object_list : [ { string_member : 'retry ' } , { string_member : 'expected ' } ]
308
403
)
309
404
expect { client . wait_until ( :path_all_matcher ) }
310
405
. to raise_error ( Errors ::TooManyAttemptsError )
@@ -313,7 +408,27 @@ module Waiters
313
408
it 'fails when none of the path matches' do
314
409
client . stub_responses (
315
410
:waiter_operation ,
316
- table_list : [ { table_status : 'UPDATING' } , { table_status : 'ACTIVE' } ]
411
+ object_list : [ { string_member : 'retry' } , { string_member : 'expected' } ]
412
+ )
413
+ expect do
414
+ client . wait_until ( :path_all_matcher ) { |w | w . max_attempts = 1 }
415
+ end . to raise_error ( Errors ::TooManyAttemptsError )
416
+ end
417
+
418
+ it 'fails when array is empty' do
419
+ client . stub_responses (
420
+ :waiter_operation ,
421
+ object_list : [ ]
422
+ )
423
+ expect do
424
+ client . wait_until ( :path_all_matcher ) { |w | w . max_attempts = 1 }
425
+ end . to raise_error ( Errors ::TooManyAttemptsError )
426
+ end
427
+
428
+ it 'fails when array is nil' do
429
+ client . stub_responses (
430
+ :waiter_operation ,
431
+ object_list : nil
317
432
)
318
433
expect do
319
434
client . wait_until ( :path_all_matcher ) { |w | w . max_attempts = 1 }
@@ -325,8 +440,8 @@ module Waiters
325
440
it 'retries and succeed when matched' do
326
441
client . stub_responses (
327
442
:waiter_operation ,
328
- { table_list : [ { table_status : 'UPDATING ' } , { table_status : 'CREATING ' } ] } ,
329
- { table_list : [ { table_status : 'ACTIVE ' } , { table_status : 'CREATING ' } ] }
443
+ { object_list : [ { string_member : 'retry ' } , { string_member : 'other ' } ] } ,
444
+ { object_list : [ { string_member : 'expected ' } , { string_member : 'retry ' } ] }
330
445
)
331
446
retries = 0
332
447
expect do
@@ -335,10 +450,37 @@ module Waiters
335
450
expect ( retries ) . to be ( 1 )
336
451
end
337
452
453
+ it 'can match array of objects' do
454
+ client . stub_responses (
455
+ :waiter_operation ,
456
+ object_list : [ { string_member : 'unexpected' } , { string_member : 'expected' } ]
457
+ )
458
+ expect { client . wait_until ( :path_any_matcher_object ) }
459
+ . to_not raise_error
460
+ end
461
+
462
+ it 'can match array of numbers' do
463
+ client . stub_responses ( :waiter_operation , number_list : [ 456 , 789 , 123 ] )
464
+ expect { client . wait_until ( :path_any_matcher_number ) }
465
+ . to_not raise_error
466
+ end
467
+
468
+ it 'can match array of arrays' do
469
+ client . stub_responses ( :waiter_operation , nested_list : [ [ 4 , 5 , 6 ] , [ 1 , 2 , 3 ] , [ 7 , 8 , 9 ] ] )
470
+ expect { client . wait_until ( :path_any_matcher_array ) }
471
+ . to_not raise_error
472
+ end
473
+
474
+ it 'can match array of booleans' do
475
+ client . stub_responses ( :waiter_operation , boolean_list : [ true , false , true ] )
476
+ expect { client . wait_until ( :path_any_matcher_boolean ) }
477
+ . to_not raise_error
478
+ end
479
+
338
480
it 'fails when matched' do
339
481
client . stub_responses (
340
482
:waiter_operation ,
341
- { table_list : [ { table_status : 'FAILED ' } , { table_status : 'CREATING ' } ] }
483
+ { object_list : [ { string_member : 'unexpected ' } , { string_member : 'retry ' } ] }
342
484
)
343
485
expect { client . wait_until ( :path_any_matcher ) }
344
486
. to raise_error ( Errors ::FailureStateError )
@@ -347,11 +489,31 @@ module Waiters
347
489
it 'fails when none of the path matches' do
348
490
client . stub_responses (
349
491
:waiter_operation ,
350
- table_list : [ { table_status : 'CREATING ' } , { table_status : 'FOO ' } ]
492
+ object_list : [ { string_member : 'other ' } , { string_member : 'other ' } ]
351
493
)
352
494
expect { client . wait_until ( :path_any_matcher ) }
353
495
. to raise_error ( Errors ::TooManyAttemptsError )
354
496
end
497
+
498
+ it 'fails when array is empty' do
499
+ client . stub_responses (
500
+ :waiter_operation ,
501
+ object_list : [ ]
502
+ )
503
+ expect do
504
+ client . wait_until ( :path_any_matcher ) { |w | w . max_attempts = 1 }
505
+ end . to raise_error ( Errors ::TooManyAttemptsError )
506
+ end
507
+
508
+ it 'fails when array is nil' do
509
+ client . stub_responses (
510
+ :waiter_operation ,
511
+ object_list : nil
512
+ )
513
+ expect do
514
+ client . wait_until ( :path_any_matcher ) { |w | w . max_attempts = 1 }
515
+ end . to raise_error ( Errors ::TooManyAttemptsError )
516
+ end
355
517
end
356
518
end
357
519
end
0 commit comments