File tree 3 files changed +17
-13
lines changed
3 files changed +17
-13
lines changed Original file line number Diff line number Diff line change 1
- import { VNode } from 'vue/dist/ vue'
1
+ import { VNode , ComponentPublicInstance } from 'vue'
2
2
3
3
function matches ( node : VNode , selector ) : boolean {
4
4
if ( typeof selector === 'string' ) {
@@ -21,7 +21,7 @@ function aggregateChildren(nodes, children) {
21
21
}
22
22
}
23
23
24
- function findAllVNodes ( vnode : VNode , selector : any ) {
24
+ function findAllVNodes ( vnode : VNode , selector : any ) : VNode [ ] {
25
25
const matchingNodes = [ ]
26
26
const nodes = [ vnode ]
27
27
while ( nodes . length ) {
@@ -36,6 +36,8 @@ function findAllVNodes(vnode: VNode, selector: any) {
36
36
return matchingNodes
37
37
}
38
38
39
- export function find ( root : VNode , selector : any ) {
40
- return findAllVNodes ( root , selector )
39
+ export function find ( root : VNode , selector : any ) : ComponentPublicInstance [ ] {
40
+ return findAllVNodes ( root , selector ) . map (
41
+ ( vnode : VNode ) => vnode . component . proxy
42
+ )
41
43
}
Original file line number Diff line number Diff line change @@ -76,7 +76,7 @@ export class VueWrapper implements WrapperAPI {
76
76
}
77
77
78
78
html ( ) {
79
- return this . appRootNode . innerHTML
79
+ return this . parentElement . innerHTML
80
80
}
81
81
82
82
text ( ) {
@@ -102,20 +102,22 @@ export class VueWrapper implements WrapperAPI {
102
102
return result
103
103
}
104
104
105
- findComponent ( selector : FindComponentSelector ) : any {
105
+ findComponent ( selector : FindComponentSelector ) : ComponentPublicInstance {
106
106
if ( typeof selector === 'object' && 'ref' in selector ) {
107
- return this . componentVM . $refs [ selector . ref ]
107
+ return this . componentVM . $refs [ selector . ref ] as ComponentPublicInstance
108
108
}
109
109
const result = find ( this . componentVM . $ . subTree , selector )
110
- return result . length ? result [ 0 ] : result
110
+ return result . length ? result [ 0 ] : undefined
111
111
}
112
112
113
- findAllComponents ( selector : FindAllComponentsSelector ) : any [ ] {
113
+ findAllComponents (
114
+ selector : FindAllComponentsSelector
115
+ ) : ComponentPublicInstance [ ] {
114
116
return find ( this . componentVM . $ . subTree , selector )
115
117
}
116
118
117
119
findAll < T extends Element > ( selector : string ) : DOMWrapper < T > [ ] {
118
- const results = this . appRootNode . querySelectorAll < T > ( selector )
120
+ const results = this . parentElement . querySelectorAll < T > ( selector )
119
121
return Array . from ( results ) . map ( ( x ) => new DOMWrapper ( x ) )
120
122
}
121
123
Original file line number Diff line number Diff line change @@ -19,10 +19,10 @@ describe('findComponent', () => {
19
19
// find by ref
20
20
expect ( wrapper . findComponent ( { ref : 'b' } ) ) . toBeTruthy ( )
21
21
// find by DOM selector
22
- expect ( wrapper . findComponent ( '.C' ) . type . name ) . toEqual ( 'ComponentC' )
23
- expect ( wrapper . findComponent ( { name : 'Hello' } ) . el . textContent ) . toBe (
22
+ expect ( wrapper . findComponent ( '.C' ) . $options . name ) . toEqual ( 'ComponentC' )
23
+ expect ( wrapper . findComponent ( { name : 'Hello' } ) . $ el. textContent ) . toBe (
24
24
'Hello world'
25
25
)
26
- expect ( wrapper . findComponent ( Hello ) . el . textContent ) . toBe ( 'Hello world' )
26
+ expect ( wrapper . findComponent ( Hello ) . $ el. textContent ) . toBe ( 'Hello world' )
27
27
} )
28
28
} )
You can’t perform that action at this time.
0 commit comments