Skip to content

Commit cbc2733

Browse files
authored
test: improve test case on $el (#7922)
1 parent 4c9bfd2 commit cbc2733

File tree

7 files changed

+32
-6
lines changed

7 files changed

+32
-6
lines changed

packages/vue-compat/__tests__/compiler.spec.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ test('COMPILER_IS_ON_ELEMENT', () => {
3232
}
3333
}).$mount()
3434

35+
expect(vm.$el).toBeInstanceOf(HTMLDivElement)
3536
expect(vm.$el.outerHTML).toBe(`<div>text</div>`)
3637
expect(CompilerDeprecationTypes.COMPILER_IS_ON_ELEMENT).toHaveBeenWarned()
3738
})
@@ -48,6 +49,7 @@ test('COMPILER_IS_ON_ELEMENT (dynamic)', () => {
4849
}
4950
}).$mount()
5051

52+
expect(vm.$el).toBeInstanceOf(HTMLDivElement)
5153
expect(vm.$el.outerHTML).toBe(`<div>text</div>`)
5254
expect(CompilerDeprecationTypes.COMPILER_IS_ON_ELEMENT).toHaveBeenWarned()
5355
})
@@ -70,9 +72,10 @@ test('COMPILER_V_BIND_SYNC', async () => {
7072
}
7173
}).$mount()
7274

75+
expect(vm.$el).toBeInstanceOf(HTMLButtonElement)
7376
expect(vm.$el.textContent).toBe(`0`)
7477

75-
triggerEvent(vm.$el, 'click')
78+
triggerEvent(vm.$el as Element, 'click')
7679
await nextTick()
7780
expect(vm.$el.textContent).toBe(`1`)
7881

@@ -83,6 +86,8 @@ test('COMPILER_V_BIND_PROP', () => {
8386
const vm = new Vue({
8487
template: `<div :id.prop="'foo'"/>`
8588
}).$mount()
89+
90+
expect(vm.$el).toBeInstanceOf(HTMLDivElement)
8691
expect(vm.$el.id).toBe('foo')
8792
expect(CompilerDeprecationTypes.COMPILER_V_BIND_PROP).toHaveBeenWarned()
8893
})
@@ -91,6 +96,7 @@ test('COMPILER_V_BIND_OBJECT_ORDER', () => {
9196
const vm = new Vue({
9297
template: `<div id="foo" v-bind="{ id: 'bar', class: 'baz' }" />`
9398
}).$mount()
99+
expect(vm.$el).toBeInstanceOf(HTMLDivElement)
94100
expect(vm.$el.id).toBe('foo')
95101
expect(vm.$el.className).toBe('baz')
96102
expect(
@@ -112,7 +118,8 @@ test('COMPILER_V_ON_NATIVE', () => {
112118
}
113119
}).$mount()
114120

115-
triggerEvent(vm.$el, 'click')
121+
expect(vm.$el).toBeInstanceOf(HTMLButtonElement)
122+
triggerEvent(vm.$el as HTMLButtonElement, 'click')
116123
expect(spy).toHaveBeenCalledTimes(1)
117124
expect(CompilerDeprecationTypes.COMPILER_V_ON_NATIVE).toHaveBeenWarned()
118125
})
@@ -128,6 +135,8 @@ test('COMPILER_NATIVE_TEMPLATE', () => {
128135
const vm = new Vue({
129136
template: `<div><template><div/></template></div>`
130137
}).$mount()
138+
139+
expect(vm.$el).toBeInstanceOf(HTMLDivElement)
131140
expect(vm.$el.innerHTML).toBe(`<div></div>`)
132141
expect(CompilerDeprecationTypes.COMPILER_NATIVE_TEMPLATE).toHaveBeenWarned()
133142
})
@@ -144,6 +153,7 @@ test('COMPILER_INLINE_TEMPLATE', () => {
144153
}
145154
}).$mount()
146155

147-
expect(vm.$el.outerHTML).toBe(`<div>123</div>`)
156+
expect(vm.$el).toBeInstanceOf(HTMLDivElement)
157+
expect(vm.$el?.outerHTML).toBe(`<div>123</div>`)
148158
expect(CompilerDeprecationTypes.COMPILER_INLINE_TEMPLATE).toHaveBeenWarned()
149159
})

packages/vue-compat/__tests__/componentAsync.spec.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ describe('COMPONENT_ASYNC', () => {
3030
template: `<div><comp/></div>`,
3131
components: { comp }
3232
}).$mount()
33+
34+
expect(vm.$el).toBeInstanceOf(HTMLDivElement)
3335
expect(vm.$el.innerHTML).toBe(`<!---->`)
3436

3537
resolve({ template: 'foo' })
@@ -49,6 +51,7 @@ describe('COMPONENT_ASYNC', () => {
4951
template: `<div><comp/></div>`,
5052
components: { comp }
5153
}).$mount()
54+
expect(vm.$el).toBeInstanceOf(HTMLDivElement)
5255
expect(vm.$el.innerHTML).toBe(`<!---->`)
5356
await timeout(0)
5457
expect(vm.$el.innerHTML).toBe(`foo`)
@@ -69,6 +72,8 @@ describe('COMPONENT_ASYNC', () => {
6972
template: `<div><comp/></div>`,
7073
components: { comp }
7174
}).$mount()
75+
76+
expect(vm.$el).toBeInstanceOf(HTMLDivElement)
7277
expect(vm.$el.innerHTML).toBe(`<!---->`)
7378
await timeout(0)
7479
expect(vm.$el.innerHTML).toBe(`foo`)

packages/vue-compat/__tests__/filters.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ describe('FILTERS', () => {
4343
msg: 'hi'
4444
})
4545
}).$mount()
46+
expect(vm.$el).toBeInstanceOf(HTMLDivElement)
4647
expect(vm.$el.textContent).toBe('HI')
4748
expect(deprecationData[DeprecationTypes.FILTERS].message).toHaveBeenWarned()
4849
expect(CompilerDeprecationTypes.COMPILER_FILTERS).toHaveBeenWarned()

packages/vue-compat/__tests__/global.spec.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { vi } from 'vitest'
1+
import { expect, vi } from 'vitest'
22
import Vue from '@vue/compat'
33
import { effect, isReactive } from '@vue/reactivity'
44
import { h, nextTick } from '@vue/runtime-core'
@@ -122,6 +122,7 @@ describe('GLOBAL_EXTEND', () => {
122122
template: '<div><foo></foo><bar></bar></div>',
123123
components: { foo, bar }
124124
}).$mount()
125+
expect(vm.$el).toBeInstanceOf(HTMLDivElement)
125126
expect(vm.$el.innerHTML).toBe('<span>foo</span><span>bar</span>')
126127
})
127128

@@ -221,6 +222,7 @@ describe('GLOBAL_EXTEND', () => {
221222
const b = new B({
222223
template: '<div><aa></aa><bb></bb></div>'
223224
}).$mount()
225+
expect(b.$el).toBeInstanceOf(HTMLDivElement)
224226
expect(b.$el.innerHTML).toBe('<div>A</div><div>B</div>')
225227
})
226228

@@ -388,6 +390,7 @@ describe('GLOBAL_PRIVATE_UTIL', () => {
388390
},
389391
template: `<div>{{ foo }}</div>`
390392
}).$mount() as any
393+
expect(vm.$el).toBeInstanceOf(HTMLDivElement)
391394
expect(vm.$el.textContent).toBe('1')
392395
vm.foo = 2
393396
await nextTick()
@@ -455,7 +458,7 @@ test('post-facto global asset registration should affect apps created via create
455458
template: '<foo/>'
456459
})
457460
Vue.component('foo', { template: 'foo' })
458-
const vm = app.mount(document.createElement('div')) as any
461+
const vm = app.mount(document.createElement('div'))
459462
expect(vm.$el.textContent).toBe('foo')
460463
delete singletonApp._context.components.foo
461464
})

packages/vue-compat/__tests__/instance.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,7 @@ test('INSTANCE_ATTR_CLASS_STYLE', () => {
319319
}
320320
}).$mount()
321321

322+
expect(vm.$el).toBeInstanceOf(HTMLDivElement)
322323
expect(vm.$el.outerHTML).toBe(
323324
`<div class="foo" style="color: red;"><div id="ok"></div></div>`
324325
)

packages/vue-compat/__tests__/misc.spec.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ test('mode as function', () => {
4444
template: `<div><foo/><bar/></div>`
4545
}).$mount()
4646

47+
expect(vm.$el).toBeInstanceOf(HTMLDivElement)
4748
expect(vm.$el.innerHTML).toBe(`<div>foo</div><div>bar</div>`)
4849
})
4950

@@ -120,6 +121,7 @@ test('V_ON_KEYCODE_MODIFIER', () => {
120121
template: `<input @keyup.1="spy">`,
121122
methods: { spy }
122123
}).$mount()
124+
expect(vm.$el).toBeInstanceOf(HTMLInputElement)
123125
triggerEvent(vm.$el, 'keyup', e => {
124126
e.key = '_'
125127
e.keyCode = 1
@@ -192,6 +194,7 @@ test('ATTR_FALSE_VALUE', () => {
192194
const vm = new Vue({
193195
template: `<div :id="false" :foo="false"/>`
194196
}).$mount()
197+
expect(vm.$el).toBeInstanceOf(HTMLDivElement)
195198
expect(vm.$el.hasAttribute('id')).toBe(false)
196199
expect(vm.$el.hasAttribute('foo')).toBe(false)
197200
expect(
@@ -210,6 +213,8 @@ test('ATTR_ENUMERATED_COERCION', () => {
210213
const vm = new Vue({
211214
template: `<div :draggable="null" :spellcheck="0" contenteditable="foo" />`
212215
}).$mount()
216+
217+
expect(vm.$el).toBeInstanceOf(HTMLDivElement)
213218
expect(vm.$el.getAttribute('draggable')).toBe('false')
214219
expect(vm.$el.getAttribute('spellcheck')).toBe('true')
215220
expect(vm.$el.getAttribute('contenteditable')).toBe('true')

packages/vue-compat/__tests__/renderFn.spec.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ describe('compat: render function', () => {
230230
)
231231
}
232232
}).$mount()
233-
233+
expect(vm.$el).toBeInstanceOf(HTMLDivElement)
234234
expect(vm.$el.outerHTML).toBe(`<div class="foo" id="bar">hello</div>`)
235235
expect(
236236
deprecationData[DeprecationTypes.RENDER_FUNCTION].message
@@ -249,6 +249,7 @@ describe('compat: render function', () => {
249249
return createVNode('div', null, c.a)
250250
}
251251
}).$mount()
252+
expect(vm.$el).toBeInstanceOf(HTMLDivElement)
252253
expect(vm.$el.outerHTML).toBe(`<div>hello</div>`)
253254
})
254255
})

0 commit comments

Comments
 (0)