Skip to content

Commit 7ff077a

Browse files
committed
add tests
1 parent 15193cf commit 7ff077a

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed

test/unit/features/component/component-slot.spec.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -639,4 +639,25 @@ describe('Component slot', () => {
639639
expect(vm.$el.textContent).toBe('2foo')
640640
}).then(done)
641641
})
642+
643+
it('the elements of slot should be updated correctly', done => {
644+
const vm = new Vue({
645+
data: { n: 1 },
646+
template: '<div><test><span v-for="i in n" :key="i">{{ i }}</span><input value="a"/></test></div>',
647+
components: {
648+
test: {
649+
template: '<div><slot></slot></div>'
650+
}
651+
}
652+
}).$mount()
653+
expect(vm.$el.innerHTML).toBe('<div><span>1</span><input value="a"></div>')
654+
const input = vm.$el.querySelector('input')
655+
input.value = 'b'
656+
vm.n++
657+
waitForUpdate(() => {
658+
expect(vm.$el.innerHTML).toBe('<div><span>1</span><span>2</span><input value="a"></div>')
659+
expect(vm.$el.querySelector('input')).toBe(input)
660+
expect(vm.$el.querySelector('input').value).toBe('b')
661+
}).then(done)
662+
})
642663
})

test/unit/modules/vdom/create-element.spec.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,4 +152,32 @@ describe('create-element', () => {
152152
}).$mount()
153153
expect('Avoid using observed data object as vnode data').toHaveBeenWarned()
154154
})
155+
156+
it('nested child elements should be updated correctly', done => {
157+
const vm = new Vue({
158+
data: { n: 1 },
159+
render (h) {
160+
const list = []
161+
for (let i = 0; i < this.n; i++) {
162+
list.push(h('span', i))
163+
}
164+
const input = h('input', {
165+
attrs: {
166+
value: 'a',
167+
type: 'text'
168+
}
169+
})
170+
return h('div', [[...list, input]])
171+
}
172+
}).$mount()
173+
expect(vm.$el.innerHTML).toBe('<span>0</span><input value="a" type="text">')
174+
const el = vm.$el.querySelector('input')
175+
el.value = 'b'
176+
vm.n++
177+
waitForUpdate(() => {
178+
expect(vm.$el.innerHTML).toBe('<span>0</span><span>1</span><input value="a" type="text">')
179+
expect(vm.$el.querySelector('input')).toBe(el)
180+
expect(vm.$el.querySelector('input').value).toBe('b')
181+
}).then(done)
182+
})
155183
})

0 commit comments

Comments
 (0)