Skip to content

Commit da13269

Browse files
committed
test: add tests
1 parent 94738da commit da13269

File tree

2 files changed

+75
-0
lines changed

2 files changed

+75
-0
lines changed

packages-private/vapor-e2e-test/__tests__/transition.spec.ts

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -907,6 +907,65 @@ describe('vapor transition', () => {
907907
describe.todo('transition with Suspense', () => {})
908908
describe.todo('transition with Teleport', () => {})
909909

910+
describe('transition with AsyncComponent', () => {
911+
test('apply transition to inner component', async () => {
912+
const btnSelector = '.async > button'
913+
const containerSelector = '.async > div'
914+
915+
expect(await html(containerSelector)).toBe('')
916+
917+
// toggle
918+
await click(btnSelector)
919+
await nextTick()
920+
// not yet resolved
921+
expect(await html(containerSelector)).toBe('')
922+
923+
// wait resolving
924+
await timeout(duration)
925+
926+
// enter (resolved)
927+
expect(await html(containerSelector)).toBe(
928+
'<div class="v-enter-from v-enter-active">vapor compA</div>',
929+
)
930+
await nextFrame()
931+
expect(await html(containerSelector)).toBe(
932+
'<div class="v-enter-active v-enter-to">vapor compA</div>',
933+
)
934+
await transitionFinish()
935+
expect(await html(containerSelector)).toBe(
936+
'<div class="">vapor compA</div>',
937+
)
938+
939+
// leave
940+
await click(btnSelector)
941+
await nextTick()
942+
expect(await html(containerSelector)).toBe(
943+
'<div class="v-leave-from v-leave-active">vapor compA</div>',
944+
)
945+
await nextFrame()
946+
expect(await html(containerSelector)).toBe(
947+
'<div class="v-leave-active v-leave-to">vapor compA</div>',
948+
)
949+
await transitionFinish()
950+
expect(await html(containerSelector)).toBe('')
951+
952+
// enter again
953+
await click(btnSelector)
954+
// use the already resolved component
955+
expect(await html(containerSelector)).toBe(
956+
'<div class="v-enter-from v-enter-active">vapor compA</div>',
957+
)
958+
await nextFrame()
959+
expect(await html(containerSelector)).toBe(
960+
'<div class="v-enter-active v-enter-to">vapor compA</div>',
961+
)
962+
await transitionFinish()
963+
expect(await html(containerSelector)).toBe(
964+
'<div class="">vapor compA</div>',
965+
)
966+
})
967+
})
968+
910969
describe('transition with v-show', () => {
911970
test(
912971
'named transition with v-show',

packages-private/vapor-e2e-test/transition/App.vue

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
VaporTransition,
88
createIf,
99
template,
10+
defineVaporAsyncComponent,
1011
} from 'vue'
1112
const show = ref(true)
1213
const toggle = ref(true)
@@ -90,6 +91,10 @@ const viewInOut = shallowRef(SimpleOne)
9091
function changeViewInOut() {
9192
viewInOut.value = viewInOut.value === SimpleOne ? Two : SimpleOne
9293
}
94+
95+
const AsyncComp = defineVaporAsyncComponent(() => {
96+
return new Promise(resolve => setTimeout(() => resolve(VaporCompA), duration))
97+
})
9398
</script>
9499

95100
<template>
@@ -481,6 +486,17 @@ function changeViewInOut() {
481486
</div>
482487
<!-- mode end -->
483488

489+
<!-- async component -->
490+
<div class="async">
491+
<div id="container">
492+
<transition>
493+
<AsyncComp v-if="!toggle"></AsyncComp>
494+
</transition>
495+
</div>
496+
<button @click="toggle = !toggle">button</button>
497+
</div>
498+
<!-- async component end -->
499+
484500
<!-- vdom interop -->
485501
<div class="vdom">
486502
<button @click="toggleVdom = !toggleVdom">toggle vdom component</button>

0 commit comments

Comments
 (0)