@@ -212,4 +212,62 @@ describe('BaseSelectionList', () => {
212212 expect ( screen . getByTestId ( `${ CONST . BASE_LIST_ITEM_TEST_ID } 70` ) ) . toBeTruthy ( ) ;
213213 expect ( screen . getByTestId ( `${ CONST . BASE_LIST_ITEM_TEST_ID } 70` ) ) . toBeSelected ( ) ;
214214 } ) ;
215+
216+ it ( 'does not reset page when only selectedOptions changes' , ( ) => {
217+ const { rerender} = render (
218+ < BaseListItemRenderer
219+ sections = { [ { data : largeMockSections } ] }
220+ canSelectMultiple = { false }
221+ initialNumToRender = { 110 }
222+ /> ,
223+ ) ;
224+
225+ // Click Show More button
226+ fireEvent . press ( screen . getByText ( 'common.showMore' ) ) ;
227+
228+ rerender (
229+ < BaseListItemRenderer
230+ sections = { [ { data : largeMockSections . map ( ( item , index ) => ( { ...item , isSelected : index === 3 } ) ) } ] }
231+ canSelectMultiple = { false }
232+ initialNumToRender = { 110 }
233+ /> ,
234+ ) ;
235+
236+ // Should now show items from second page
237+ expect ( screen . getByTestId ( `${ CONST . BASE_LIST_ITEM_TEST_ID } 51` ) ) . toBeTruthy ( ) ;
238+ expect ( screen . getByTestId ( `${ CONST . BASE_LIST_ITEM_TEST_ID } 62` ) ) . toBeTruthy ( ) ;
239+
240+ // Should not show, "Show more" button as we rendered whole list and search text was not changed
241+ expect ( screen . queryByText ( 'common.showMore' ) ) . toBeFalsy ( ) ;
242+ } ) ;
243+
244+ it ( 'should reset current page when text input changes' , ( ) => {
245+ const { rerender} = render (
246+ < BaseListItemRenderer
247+ sections = { [ { data : largeMockSections } ] }
248+ canSelectMultiple = { false }
249+ initialNumToRender = { 110 }
250+ /> ,
251+ ) ;
252+
253+ // Click Show More button
254+ fireEvent . press ( screen . getByText ( 'common.showMore' ) ) ;
255+ expect ( screen . getByTestId ( `${ CONST . BASE_LIST_ITEM_TEST_ID } 99` ) ) . toBeTruthy ( ) ;
256+
257+ // Rerender with changed `searchText` to trigger `setCurrentPage(1)`
258+ rerender (
259+ < BaseListItemRenderer
260+ sections = { [ { data : largeMockSections . map ( ( item , index ) => ( { ...item , isSelected : index === 3 } ) ) } ] }
261+ canSelectMultiple = { false }
262+ searchText = "Item"
263+ initialNumToRender = { 110 }
264+ /> ,
265+ ) ;
266+
267+ // Should not show the items from second page
268+ expect ( screen . queryByText ( `${ CONST . BASE_LIST_ITEM_TEST_ID } 52` ) ) . toBeFalsy ( ) ;
269+
270+ // Should show, "Show more" button as current page is reset
271+ expect ( screen . getByText ( 'common.showMore' ) ) . toBeOnTheScreen ( ) ;
272+ } ) ;
215273} ) ;
0 commit comments