@@ -225,41 +225,8 @@ export default class Wrapper implements BaseWrapper {
225
225
'Use `findComponent` instead'
226
226
)
227
227
}
228
- const node = find ( this . rootNode , this . vm , selector ) [ 0 ]
229
-
230
- if ( ! node ) {
231
- return new ErrorWrapper ( rawSelector )
232
- }
233
228
234
- const wrapper = createWrapper ( node , this . options )
235
- wrapper . selector = rawSelector
236
- return wrapper
237
- }
238
-
239
- /**
240
- * Finds DOM elements in tree of the current wrapper that matches
241
- * the provided selector.
242
- */
243
- findAll ( rawSelector : Selector ) : WrapperArray {
244
- const selector = getSelector ( rawSelector , 'findAll' )
245
- if ( selector . type !== DOM_SELECTOR ) {
246
- warnDeprecated (
247
- 'finding components with `findAll`' ,
248
- 'Use `findAllComponents` instead'
249
- )
250
- }
251
- const nodes = find ( this . rootNode , this . vm , selector )
252
- const wrappers = nodes . map ( node => {
253
- // Using CSS Selector, returns a VueWrapper instance if the root element
254
- // binds a Vue instance.
255
- const wrapper = createWrapper ( node , this . options )
256
- wrapper . selector = rawSelector
257
- return wrapper
258
- } )
259
-
260
- const wrapperArray = new WrapperArray ( wrappers )
261
- wrapperArray . selector = rawSelector
262
- return wrapperArray
229
+ return this . __find ( rawSelector , selector )
263
230
}
264
231
265
232
/**
@@ -273,6 +240,16 @@ export default class Wrapper implements BaseWrapper {
273
240
'findComponent requires a Vue constructor or valid find object. If you are searching for DOM nodes, use `find` instead'
274
241
)
275
242
}
243
+ if ( ! this . vm ) {
244
+ throwError (
245
+ 'You cannot chain findComponent off a DOM element. It can only be used on Vue Components.'
246
+ )
247
+ }
248
+
249
+ return this . __find ( rawSelector , selector )
250
+ }
251
+
252
+ __find ( rawSelector : Selector , selector : Object ) : Wrapper | ErrorWrapper {
276
253
const node = find ( this . rootNode , this . vm , selector ) [ 0 ]
277
254
278
255
if ( ! node ) {
@@ -284,17 +261,41 @@ export default class Wrapper implements BaseWrapper {
284
261
return wrapper
285
262
}
286
263
264
+ /**
265
+ * Finds DOM elements in tree of the current wrapper that matches
266
+ * the provided selector.
267
+ */
268
+ findAll ( rawSelector : Selector ) : WrapperArray {
269
+ const selector = getSelector ( rawSelector , 'findAll' )
270
+ if ( selector . type !== DOM_SELECTOR ) {
271
+ warnDeprecated (
272
+ 'finding components with `findAll`' ,
273
+ 'Use `findAllComponents` instead'
274
+ )
275
+ }
276
+ return this . __findAll ( rawSelector , selector )
277
+ }
278
+
287
279
/**
288
280
* Finds components in tree of the current wrapper that matches
289
281
* the provided selector.
290
282
*/
291
283
findAllComponents ( rawSelector : Selector ) : WrapperArray {
292
284
const selector = getSelector ( rawSelector , 'findAll' )
285
+ if ( ! this . vm ) {
286
+ throwError (
287
+ 'You cannot chain findAllComponents off a DOM element. It can only be used on Vue Components.'
288
+ )
289
+ }
293
290
if ( selector . type === DOM_SELECTOR ) {
294
291
throwError (
295
- 'findAllComponent requires a Vue constructor or valid find object. If you are searching for DOM nodes, use `find` instead'
292
+ 'findAllComponents requires a Vue constructor or valid find object. If you are searching for DOM nodes, use `find` instead'
296
293
)
297
294
}
295
+ return this . __findAll ( rawSelector , selector )
296
+ }
297
+
298
+ __findAll ( rawSelector : Selector , selector : Object ) : WrapperArray {
298
299
const nodes = find ( this . rootNode , this . vm , selector )
299
300
const wrappers = nodes . map ( node => {
300
301
// Using CSS Selector, returns a VueWrapper instance if the root element
0 commit comments