|
|
@ -842,7 +842,7 @@ if (!isIE9) { |
|
|
|
}).then(done) |
|
|
|
}) |
|
|
|
|
|
|
|
it('transition inside child component', done => { |
|
|
|
it('transition inside child component with v-if', done => { |
|
|
|
const vm = new Vue({ |
|
|
|
template: ` |
|
|
|
<div> |
|
|
@ -872,14 +872,126 @@ if (!isIE9) { |
|
|
|
expect(vm.$el.children.length).toBe(0) |
|
|
|
vm.ok = true |
|
|
|
}).then(() => { |
|
|
|
expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active') |
|
|
|
expect(vm.$el.children[0].className).toBe('test') |
|
|
|
}).then(done) |
|
|
|
}) |
|
|
|
|
|
|
|
it('transition with appear inside child component with v-if', done => { |
|
|
|
const vm = new Vue({ |
|
|
|
template: ` |
|
|
|
<div> |
|
|
|
<test v-if="ok" class="test"></test> |
|
|
|
</div> |
|
|
|
`,
|
|
|
|
data: { ok: true }, |
|
|
|
components: { |
|
|
|
test: { |
|
|
|
template: ` |
|
|
|
<transition appear |
|
|
|
appear-class="test-appear" |
|
|
|
appear-to-class="test-appear-to" |
|
|
|
appear-active-class="test-appear-active"> |
|
|
|
<div>foo</div> |
|
|
|
</transition> |
|
|
|
` |
|
|
|
} |
|
|
|
} |
|
|
|
}).$mount(el) |
|
|
|
|
|
|
|
waitForUpdate(() => { |
|
|
|
expect(vm.$el.children[0].className).toBe('test test-appear test-appear-active') |
|
|
|
}).thenWaitFor(nextFrame).then(() => { |
|
|
|
expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to') |
|
|
|
expect(vm.$el.children[0].className).toBe('test test-appear-active test-appear-to') |
|
|
|
}).thenWaitFor(duration + buffer).then(() => { |
|
|
|
expect(vm.$el.children[0].className).toBe('test') |
|
|
|
vm.ok = false |
|
|
|
}).then(() => { |
|
|
|
expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active') |
|
|
|
}).thenWaitFor(nextFrame).then(() => { |
|
|
|
expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') |
|
|
|
}).thenWaitFor(duration + buffer).then(() => { |
|
|
|
expect(vm.$el.children.length).toBe(0) |
|
|
|
}).then(done) |
|
|
|
}) |
|
|
|
|
|
|
|
it('transition inside nested child component with v-if', done => { |
|
|
|
const vm = new Vue({ |
|
|
|
template: ` |
|
|
|
<div> |
|
|
|
<foo v-if="ok" class="test"></foo> |
|
|
|
</div> |
|
|
|
`,
|
|
|
|
data: { ok: true }, |
|
|
|
components: { |
|
|
|
foo: { |
|
|
|
template: '<bar></bar>', |
|
|
|
components: { |
|
|
|
bar: { |
|
|
|
template: '<transition><div>foo</div></transition>' |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}).$mount(el) |
|
|
|
|
|
|
|
// should not apply transition on initial render by default
|
|
|
|
expect(vm.$el.innerHTML).toBe('<div class="test">foo</div>') |
|
|
|
vm.ok = false |
|
|
|
waitForUpdate(() => { |
|
|
|
expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active') |
|
|
|
}).thenWaitFor(nextFrame).then(() => { |
|
|
|
expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') |
|
|
|
}).thenWaitFor(duration + buffer).then(() => { |
|
|
|
expect(vm.$el.children.length).toBe(0) |
|
|
|
vm.ok = true |
|
|
|
}).then(() => { |
|
|
|
expect(vm.$el.children[0].className).toBe('test') |
|
|
|
}).then(done) |
|
|
|
}) |
|
|
|
|
|
|
|
it('transition with appear inside nested child component with v-if', done => { |
|
|
|
const vm = new Vue({ |
|
|
|
template: ` |
|
|
|
<div> |
|
|
|
<foo v-if="ok" class="test"></foo> |
|
|
|
</div> |
|
|
|
`,
|
|
|
|
data: { ok: true }, |
|
|
|
components: { |
|
|
|
foo: { |
|
|
|
template: '<bar></bar>', |
|
|
|
components: { |
|
|
|
bar: { |
|
|
|
template: ` |
|
|
|
<transition appear |
|
|
|
appear-class="test-appear" |
|
|
|
appear-to-class="test-appear-to" |
|
|
|
appear-active-class="test-appear-active"> |
|
|
|
<div>foo</div> |
|
|
|
</transition> |
|
|
|
` |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}).$mount(el) |
|
|
|
|
|
|
|
waitForUpdate(() => { |
|
|
|
expect(vm.$el.children[0].className).toBe('test test-appear test-appear-active') |
|
|
|
}).thenWaitFor(nextFrame).then(() => { |
|
|
|
expect(vm.$el.children[0].className).toBe('test test-appear-active test-appear-to') |
|
|
|
}).thenWaitFor(duration + buffer).then(() => { |
|
|
|
expect(vm.$el.children[0].className).toBe('test') |
|
|
|
vm.ok = false |
|
|
|
}).then(() => { |
|
|
|
expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active') |
|
|
|
}).thenWaitFor(nextFrame).then(() => { |
|
|
|
expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to') |
|
|
|
}).thenWaitFor(duration + buffer).then(() => { |
|
|
|
expect(vm.$el.children.length).toBe(0) |
|
|
|
}).then(done) |
|
|
|
}) |
|
|
|
|
|
|
|
it('custom transition higher-order component', done => { |
|
|
|
const vm = new Vue({ |
|
|
|
template: '<div><my-transition><div v-if="ok" class="test">foo</div></my-transition></div>', |
|
|
|