Skip to content

Commit 968dcbe

Browse files
committed
test: add reusable transition group tests
1 parent 721afd1 commit 968dcbe

File tree

3 files changed

+54
-0
lines changed

3 files changed

+54
-0
lines changed

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

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,44 @@ describe('vapor transition-group', () => {
369369
expect(calls).toContain('afterEnter')
370370
})
371371

372+
test(
373+
'reusable transition group',
374+
async () => {
375+
const btnSelector = '.reusable-transition-group > button'
376+
const containerSelector = '.reusable-transition-group > div'
377+
378+
expect(await html(containerSelector)).toBe(
379+
`<div class="test">a</div>` +
380+
`<div class="test">b</div>` +
381+
`<div class="test">c</div>`,
382+
)
383+
384+
expect(
385+
(await transitionStart(btnSelector, containerSelector)).innerHTML,
386+
).toBe(
387+
`<div class="test group-enter-from group-enter-active">d</div>` +
388+
`<div class="test">b</div>` +
389+
`<div class="test group-move" style="">a</div>` +
390+
`<div class="test group-leave-from group-leave-active group-move" style="">c</div>`,
391+
)
392+
393+
await nextFrame()
394+
expect(await html(containerSelector)).toBe(
395+
`<div class="test group-enter-active group-enter-to">d</div>` +
396+
`<div class="test">b</div>` +
397+
`<div class="test group-move" style="">a</div>` +
398+
`<div class="test group-leave-active group-move group-leave-to" style="">c</div>`,
399+
)
400+
await transitionFinish(duration * 2)
401+
expect(await html(containerSelector)).toBe(
402+
`<div class="test">d</div>` +
403+
`<div class="test">b</div>` +
404+
`<div class="test" style="">a</div>`,
405+
)
406+
},
407+
E2E_TIMEOUT,
408+
)
409+
372410
test('interop: render vdom component', async () => {
373411
const btnSelector = '.interop > button'
374412
const containerSelector = '.interop > div'

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<script setup vapor>
22
import { ref } from 'vue'
33
import VdomComp from './components/VdomComp.vue'
4+
import MyTransitionGroup from './components/MyTransitionGroup.vue'
45
56
const items = ref(['a', 'b', 'c'])
67
const enterClick = () => items.value.push('d', 'e')
@@ -108,6 +109,14 @@ const interopClick = () => (items.value = ['b', 'c', 'd'])
108109
</transition-group>
109110
</div>
110111
</div>
112+
<div class="reusable-transition-group">
113+
<button @click="moveClick">reusable button</button>
114+
<div>
115+
<MyTransitionGroup name="group">
116+
<div v-for="item in items" :key="item" class="test">{{ item }}</div>
117+
</MyTransitionGroup>
118+
</div>
119+
</div>
111120
<div class="interop">
112121
<button @click="interopClick">interop button</button>
113122
<div>
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<script setup vapor></script>
2+
3+
<template>
4+
<TransitionGroup>
5+
<slot />
6+
</TransitionGroup>
7+
</template>

0 commit comments

Comments
 (0)