@@ -256,6 +256,58 @@ describe('shallow', () => {
256256 expect ( ( ) => wrapper . find ( '.foo .foo' ) ) . to . throw ( Error ) ;
257257 } ) ;
258258
259+ it ( 'should support object property selectors' , ( ) => {
260+ const wrapper = shallow (
261+ < div >
262+ < input data-test = "ref" className = "foo" type = "text" />
263+ < input data-test = "ref" type = "text" />
264+ < button data-test = "ref" prop = { undefined } />
265+ < span data-test = "ref" prop = { null } />
266+ < div data-test = "ref" prop = { 123 } />
267+ < input data-test = "ref" prop = { false } />
268+ < a data-test = "ref" prop />
269+ </ div >
270+ ) ;
271+ expect ( wrapper . find ( { a : 1 } ) ) . to . have . length ( 0 ) ;
272+ expect ( wrapper . find ( { 'data-test' : 'ref' } ) ) . to . have . length ( 7 ) ;
273+ expect ( wrapper . find ( { className : 'foo' } ) ) . to . have . length ( 1 ) ;
274+ expect ( wrapper . find ( { prop : undefined } ) ) . to . have . length ( 1 ) ;
275+ expect ( wrapper . find ( { prop : null } ) ) . to . have . length ( 1 ) ;
276+ expect ( wrapper . find ( { prop : 123 } ) ) . to . have . length ( 1 ) ;
277+ expect ( wrapper . find ( { prop : false } ) ) . to . have . length ( 1 ) ;
278+ expect ( wrapper . find ( { prop : true } ) ) . to . have . length ( 1 ) ;
279+ } ) ;
280+
281+ it ( 'should support complex and nested object property selectors' , ( ) => {
282+ const testFunction = ( ) => { } ;
283+ const wrapper = shallow (
284+ < div >
285+ < span more = { [ { id : 1 } ] } data-test = "ref" prop onChange = { testFunction } />
286+ < a more = { [ { id : 1 } ] } data-test = "ref" />
287+ < div more = { { item : { id : 1 } } } data-test = "ref" />
288+ < input style = { { height : 20 } } data-test = "ref" />
289+ </ div >
290+ ) ;
291+ expect ( wrapper . find ( { 'data-test' : 'ref' } ) ) . to . have . length ( 4 ) ;
292+ expect ( wrapper . find ( { more : { a : 1 } } ) ) . to . have . length ( 0 ) ;
293+ expect ( wrapper . find ( { more : [ { id : 1 } ] } ) ) . to . have . length ( 2 ) ;
294+ expect ( wrapper . find ( { more : { item : { id : 1 } } } ) ) . to . have . length ( 1 ) ;
295+ expect ( wrapper . find ( { style : { height : 20 } } ) ) . to . have . length ( 1 ) ;
296+ expect ( wrapper
297+ . find ( { more : [ { id : 1 } ] , 'data-test' : 'ref' , prop : true , onChange : testFunction } )
298+ ) . to . have . length ( 1 ) ;
299+ } ) ;
300+
301+ it ( 'should throw when given empty object, null, or an array' , ( ) => {
302+ const wrapper = shallow (
303+ < div >
304+ < input className = "foo" type = "text" />
305+ </ div >
306+ ) ;
307+ expect ( ( ) => wrapper . find ( { } ) ) . to . throw ( Error ) ;
308+ expect ( ( ) => wrapper . find ( [ ] ) ) . to . throw ( Error ) ;
309+ expect ( ( ) => wrapper . find ( null ) ) . to . throw ( Error ) ;
310+ } ) ;
259311 } ) ;
260312
261313 describe ( '.findWhere(predicate)' , ( ) => {
0 commit comments