@@ -323,6 +323,38 @@ def test_iter_reverse(self, http_client_mock):
323
323
324
324
assert seen == ["pm_126" , "pm_125" , "pm_124" , "pm_123" ]
325
325
326
+ def test_iter_reverse_none_starting_after (self , http_client_mock ):
327
+ """Test that if `starting_after` is present in the retrieve params, but is
328
+ `None`, that reverse pagination still occurs as expected.
329
+ """
330
+ lo = stripe .ListObject .construct_from (
331
+ self .pageable_model_response (["pm_125" , "pm_126" ], True ), "mykey"
332
+ )
333
+ lo ._retrieve_params = {
334
+ "foo" : "bar" ,
335
+ "ending_before" : "pm_127" ,
336
+ "starting_after" : None ,
337
+ }
338
+
339
+ http_client_mock .stub_request (
340
+ "get" ,
341
+ path = "/v1/pageablemodels" ,
342
+ query_string = "ending_before=pm_125&foo=bar" ,
343
+ rbody = json .dumps (
344
+ self .pageable_model_response (["pm_123" , "pm_124" ], False )
345
+ ),
346
+ )
347
+
348
+ seen = [item ["id" ] for item in lo .auto_paging_iter ()]
349
+
350
+ http_client_mock .assert_requested (
351
+ "get" ,
352
+ path = "/v1/pageablemodels" ,
353
+ query_string = "ending_before=pm_125&foo=bar" ,
354
+ )
355
+
356
+ assert seen == ["pm_126" , "pm_125" , "pm_124" , "pm_123" ]
357
+
326
358
def test_class_method_two_pages (self , http_client_mock ):
327
359
http_client_mock .stub_request (
328
360
"get" ,
@@ -566,3 +598,36 @@ async def test_iter_reverse(self, http_client_mock):
566
598
)
567
599
568
600
assert seen == ["pm_126" , "pm_125" , "pm_124" , "pm_123" ]
601
+
602
+ @pytest .mark .anyio
603
+ async def test_iter_reverse_none_starting_after (self , http_client_mock ):
604
+ """Test that if `starting_after` is present in the retrieve params, but is
605
+ `None`, that reverse pagination still occurs as expected.
606
+ """
607
+ lo = stripe .ListObject .construct_from (
608
+ self .pageable_model_response (["pm_125" , "pm_126" ], True ), "mykey"
609
+ )
610
+ lo ._retrieve_params = {
611
+ "foo" : "bar" ,
612
+ "ending_before" : "pm_127" ,
613
+ "starting_after" : None ,
614
+ }
615
+
616
+ http_client_mock .stub_request (
617
+ "get" ,
618
+ path = "/v1/pageablemodels" ,
619
+ query_string = "ending_before=pm_125&foo=bar" ,
620
+ rbody = json .dumps (
621
+ self .pageable_model_response (["pm_123" , "pm_124" ], False )
622
+ ),
623
+ )
624
+
625
+ seen = [item ["id" ] async for item in lo .auto_paging_iter ()]
626
+
627
+ http_client_mock .assert_requested (
628
+ "get" ,
629
+ path = "/v1/pageablemodels" ,
630
+ query_string = "ending_before=pm_125&foo=bar" ,
631
+ )
632
+
633
+ assert seen == ["pm_126" , "pm_125" , "pm_124" , "pm_123" ]
0 commit comments