@@ -120,4 +120,44 @@ describe('Explorer', () => {
120120 expect ( rendered . getByText ( '30' ) ) . toBeInTheDocument ( )
121121 } )
122122 } )
123+
124+ describe ( 'Map and iterable values' , ( ) => {
125+ it ( 'should preserve "Map" keys as labels when expanded' , ( ) => {
126+ const rendered = renderExplorer ( {
127+ label : 'm' ,
128+ value : new Map ( [
129+ [ 'first' , 1 ] ,
130+ [ 'second' , 2 ] ,
131+ ] ) ,
132+ } )
133+
134+ fireEvent . click ( rendered . getByRole ( 'button' , { expanded : false } ) )
135+
136+ expect ( rendered . getByText ( 'first:' ) ) . toBeInTheDocument ( )
137+ expect ( rendered . getByText ( 'second:' ) ) . toBeInTheDocument ( )
138+ } )
139+
140+ it ( 'should mark an iterable value with an "(Iterable)" prefix on the expander' , ( ) => {
141+ const rendered = renderExplorer ( {
142+ label : 's' ,
143+ value : new Set ( [ 'x' , 'y' ] ) ,
144+ } )
145+
146+ expect (
147+ rendered . getByRole ( 'button' , { expanded : false } ) . textContent ,
148+ ) . toContain ( '(Iterable)' )
149+ } )
150+
151+ it ( 'should render iterable children under their numeric index when expanded' , ( ) => {
152+ const rendered = renderExplorer ( {
153+ label : 's' ,
154+ value : new Set ( [ 'x' , 'y' ] ) ,
155+ } )
156+
157+ fireEvent . click ( rendered . getByRole ( 'button' , { expanded : false } ) )
158+
159+ expect ( rendered . getByText ( '0:' ) ) . toBeInTheDocument ( )
160+ expect ( rendered . getByText ( '1:' ) ) . toBeInTheDocument ( )
161+ } )
162+ } )
123163} )
0 commit comments