@@ -155,6 +155,43 @@ describe('useCollection', () => {
155155 wrapper . unmount ( )
156156 } )
157157
158+ it ( 'looks up registered items by element and preserves disabled filtering' , async ( ) => {
159+ const { getCollection, wrapper } = createWrapper ( [
160+ { value : 'enabled' } ,
161+ { value : 'disabled' , disabled : true } ,
162+ ] )
163+ await nextTick ( )
164+
165+ const { getItem, getItems } = getCollection ( )
166+ const enabled = wrapper . get < HTMLElement > ( '[data-testid=enabled]' ) . element
167+ const disabled = wrapper . get < HTMLElement > ( '[data-testid=disabled]' ) . element
168+
169+ expect ( getItem ( enabled ) ) . toBe ( getItems ( ) . find ( item => item . ref === enabled ) )
170+ expect ( getItem ( disabled ) ) . toBeUndefined ( )
171+ expect ( getItem ( disabled , true ) ) . toBe ( getItems ( true ) . find ( item => item . ref === disabled ) )
172+ expect ( getItem ( document . createElement ( 'div' ) ) ) . toBeUndefined ( )
173+
174+ wrapper . unmount ( )
175+ } )
176+
177+ it ( 'finds detached registered items but not unmounted items' , async ( ) => {
178+ const { getCollection, items, wrapper } = createWrapper ( [ { value : 'item' } ] )
179+ await nextTick ( )
180+
181+ const { getItem, getItems } = getCollection ( )
182+ const element = wrapper . get < HTMLElement > ( '[data-testid=item]' ) . element
183+ const item = getItems ( ) [ 0 ]
184+ element . remove ( )
185+ expect ( getItem ( element ) ) . toBe ( item )
186+
187+ wrapper . element . appendChild ( element )
188+ items . splice ( 0 , 1 )
189+ await nextTick ( )
190+ expect ( getItem ( element ) ) . toBeUndefined ( )
191+
192+ wrapper . unmount ( )
193+ } )
194+
158195 it ( 'getItems() returns [] when no CollectionSlot element is mounted' , async ( ) => {
159196 // A provider context whose `collectionRef` is never set (no CollectionSlot
160197 // currentElement). `getItems()` short-circuits to `[]`.
@@ -171,6 +208,7 @@ describe('useCollection', () => {
171208 const wrapper = mount ( Parent , { attachTo : document . body } )
172209 await nextTick ( )
173210
211+ expect ( collection . getItem ( document . createElement ( 'div' ) ) ) . toBeUndefined ( )
174212 expect ( collection . getItems ( ) ) . toEqual ( [ ] )
175213 expect ( collection . getItems ( true ) ) . toEqual ( [ ] )
176214 expect ( collection . itemMapSize . value ) . toBe ( 0 )
0 commit comments