11import pytest
22
33from apimatic_core .pagination .paginated_data import PaginatedData
4- from apimatic_core .pagination .pagination_strategy import PaginationStrategy
54from apimatic_core .pagination .strategies .page_pagination import PagePagination
6- from apimatic_core .utilities .api_helper import ApiHelper
75from apimatic_core .request_builder import RequestBuilder
6+ from tests .apimatic_core .pagination_tests .strategies .strategy_base import StrategyBase
87
98
10- class TestPagePagination :
9+ class TestPagePagination ( StrategyBase ) :
1110
1211 @pytest .fixture
1312 def mock_metadata_wrapper (self , mocker ):
@@ -171,41 +170,20 @@ def test_apply_metadata_wrapper(self, mock_metadata_wrapper, mocker):
171170 ("$request.path#/page" , {"page" : {"value" : 2 , "encoded" : True }}, 2 , "2" ),
172171 ("$request.query#/page" , {"page" : 3 , "limit" : 10 }, 3 , "3" ),
173172 ("$request.headers#/page" , {"page" : 4 }, 4 , "4" ),
174- ("$request.query#/page" , {"limit" : 10 }, 1 , None ),
175- ("invalid_prefix#/page" , {"page" : 10 }, 1 , "10" ),
173+ ("$request.query#/page" , {"limit" : 10 }, 0 , None ),
174+ ("invalid_prefix#/page" , {"page" : 10 }, 0 , "10" ),
176175 ]
177176 )
178177 def test_get_initial_page_offset_various_scenarios (self , mocker , mock_request_builder , mock_metadata_wrapper ,
179178 input_pointer , initial_params , expected_value , json_pointer_return_value ):
180- if PaginationStrategy .PATH_PARAMS_IDENTIFIER in input_pointer :
181- mock_request_builder ._template_params = initial_params
182- elif PaginationStrategy .QUERY_PARAMS_IDENTIFIER in input_pointer :
183- mock_request_builder ._query_params = initial_params
184- elif PaginationStrategy .HEADER_PARAMS_IDENTIFIER in input_pointer :
185- mock_request_builder ._header_params = initial_params
186-
187- mock_split_into_parts = mocker .patch .object (ApiHelper , 'split_into_parts' ,
188- return_value = (input_pointer .split ('#' )[0 ], input_pointer .split ('#' )[1 ]))
189- mock_get_value_by_json_pointer = mocker .patch .object (ApiHelper , 'get_value_by_json_pointer' ,
190- return_value = json_pointer_return_value )
191-
192- pp = self ._create_page_pagination_instance (input_pointer , mock_metadata_wrapper )
193- result = pp ._get_initial_request_param_value (mock_request_builder , input_pointer , 1 )
194-
195- mock_split_into_parts .assert_called_once_with (input_pointer )
196-
197- if input_pointer .startswith ((PaginationStrategy .PATH_PARAMS_IDENTIFIER , PaginationStrategy .QUERY_PARAMS_IDENTIFIER , PaginationStrategy .HEADER_PARAMS_IDENTIFIER )):
198- if PaginationStrategy .PATH_PARAMS_IDENTIFIER in input_pointer :
199- accessed_params = mock_request_builder .template_params
200- mock_get_value_by_json_pointer .assert_called_once_with (
201- accessed_params , f"{ input_pointer .split ('#' )[1 ]} /value" )
202- elif PaginationStrategy .QUERY_PARAMS_IDENTIFIER in input_pointer :
203- accessed_params = mock_request_builder .query_params
204- mock_get_value_by_json_pointer .assert_called_once_with (accessed_params , input_pointer .split ('#' )[1 ])
205- elif PaginationStrategy .HEADER_PARAMS_IDENTIFIER in input_pointer :
206- accessed_params = mock_request_builder .header_params
207- mock_get_value_by_json_pointer .assert_called_once_with (accessed_params , input_pointer .split ('#' )[1 ])
208- else :
209- mock_get_value_by_json_pointer .assert_not_called ()
210-
211- assert result == expected_value
179+ self .assert_initial_param_extraction (
180+ mocker ,
181+ mock_request_builder ,
182+ mock_metadata_wrapper ,
183+ input_pointer ,
184+ initial_params ,
185+ expected_value ,
186+ json_pointer_return_value ,
187+ default_value = 0 ,
188+ pagination_instance_creator = self ._create_page_pagination_instance
189+ )
0 commit comments