@@ -27,6 +27,36 @@ describe('<FilterPicker />', () => {
2727 </ FilterPicker . Section > ,
2828 ] ;
2929
30+ // Data arrays for testing sorting functionality (which requires items prop)
31+ const basicItemsData = [
32+ { key : 'apple' , label : 'Apple' } ,
33+ { key : 'banana' , label : 'Banana' } ,
34+ { key : 'cherry' , label : 'Cherry' } ,
35+ { key : 'date' , label : 'Date' } ,
36+ { key : 'elderberry' , label : 'Elderberry' } ,
37+ ] ;
38+
39+ const sectionsItemsData = [
40+ {
41+ key : 'fruits' ,
42+ label : 'Fruits' ,
43+ children : [
44+ { key : 'apple' , label : 'Apple' } ,
45+ { key : 'banana' , label : 'Banana' } ,
46+ { key : 'cherry' , label : 'Cherry' } ,
47+ ] ,
48+ } ,
49+ {
50+ key : 'vegetables' ,
51+ label : 'Vegetables' ,
52+ children : [
53+ { key : 'carrot' , label : 'Carrot' } ,
54+ { key : 'broccoli' , label : 'Broccoli' } ,
55+ { key : 'spinach' , label : 'Spinach' } ,
56+ ] ,
57+ } ,
58+ ] ;
59+
3060 describe ( 'Basic functionality' , ( ) => {
3161 it ( 'should render trigger button with placeholder' , ( ) => {
3262 const { getByRole } = renderWithRoot (
@@ -180,11 +210,15 @@ describe('<FilterPicker />', () => {
180210 it ( 'should sort selected items to top when popover reopens in multiple mode' , async ( ) => {
181211 const { getByRole, getByText } = renderWithRoot (
182212 < FilterPicker
213+ sortSelectedToTop
183214 label = "Select fruits"
184215 placeholder = "Choose fruits..."
185216 selectionMode = "multiple"
217+ items = { basicItemsData }
186218 >
187- { basicItems }
219+ { ( item ) => (
220+ < FilterPicker . Item key = { item . key } > { item . label } </ FilterPicker . Item >
221+ ) }
188222 </ FilterPicker > ,
189223 ) ;
190224
@@ -225,11 +259,21 @@ describe('<FilterPicker />', () => {
225259 it ( 'should sort selected items to top within their sections' , async ( ) => {
226260 const { getByRole, getByText } = renderWithRoot (
227261 < FilterPicker
262+ sortSelectedToTop
228263 label = "Select items"
229264 placeholder = "Choose items..."
230265 selectionMode = "multiple"
266+ items = { sectionsItemsData }
231267 >
232- { sectionsItems }
268+ { ( section ) => (
269+ < FilterPicker . Section key = { section . key } title = { section . label } >
270+ { section . children . map ( ( item ) => (
271+ < FilterPicker . Item key = { item . key } >
272+ { item . label }
273+ </ FilterPicker . Item >
274+ ) ) }
275+ </ FilterPicker . Section >
276+ ) }
233277 </ FilterPicker > ,
234278 ) ;
235279
@@ -297,11 +341,15 @@ describe('<FilterPicker />', () => {
297341 it ( 'should maintain sorting when items are deselected and popover reopens' , async ( ) => {
298342 const { getByRole, getByText } = renderWithRoot (
299343 < FilterPicker
344+ sortSelectedToTop
300345 label = "Select fruits"
301346 placeholder = "Choose fruits..."
302347 selectionMode = "multiple"
348+ items = { basicItemsData }
303349 >
304- { basicItems }
350+ { ( item ) => (
351+ < FilterPicker . Item key = { item . key } > { item . label } </ FilterPicker . Item >
352+ ) }
305353 </ FilterPicker > ,
306354 ) ;
307355
@@ -371,11 +419,15 @@ describe('<FilterPicker />', () => {
371419 it ( 'should not reorder items when selecting additional items after reopening popover' , async ( ) => {
372420 const { getByRole, getByText } = renderWithRoot (
373421 < FilterPicker
422+ sortSelectedToTop
374423 label = "Select fruits"
375424 placeholder = "Choose fruits..."
376425 selectionMode = "multiple"
426+ items = { basicItemsData }
377427 >
378- { basicItems }
428+ { ( item ) => (
429+ < FilterPicker . Item key = { item . key } > { item . label } </ FilterPicker . Item >
430+ ) }
379431 </ FilterPicker > ,
380432 ) ;
381433
@@ -428,11 +480,15 @@ describe('<FilterPicker />', () => {
428480 it ( 'should work correctly in single selection mode' , async ( ) => {
429481 const { getByRole, getByText } = renderWithRoot (
430482 < FilterPicker
483+ sortSelectedToTop
431484 label = "Select fruit"
432485 placeholder = "Choose a fruit..."
433486 selectionMode = "single"
487+ items = { basicItemsData }
434488 >
435- { basicItems }
489+ { ( item ) => (
490+ < FilterPicker . Item key = { item . key } > { item . label } </ FilterPicker . Item >
491+ ) }
436492 </ FilterPicker > ,
437493 ) ;
438494
@@ -848,7 +904,7 @@ describe('<FilterPicker />', () => {
848904 await userEvent . click ( trigger ) ;
849905 } ) ;
850906
851- // Session 2: Reopen and verify both are visible and selected items are sorted to top
907+ // Session 2: Reopen and verify both custom and regular values are visible
852908 await act ( async ( ) => {
853909 await userEvent . click ( trigger ) ;
854910 } ) ;
0 commit comments