forked from vuejs/test-utils
/
renderToString.spec.ts
55 lines (43 loc) · 1.36 KB
/
renderToString.spec.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import { defineComponent, onMounted, onServerPrefetch, ref } from 'vue'
import { renderToString } from '../src'
describe('renderToString', () => {
it('returns a promise', async () => {
const Component = defineComponent({
template: '<div>{{ text }}</div>',
setup() {
return { text: 'Text content' }
}
})
const wrapper = await renderToString(Component)
expect(wrapper).toBe('<div>Text content</div>')
})
it('returns correct html on multi root nodes', async () => {
const Component = defineComponent({
template: '<div>foo</div><div>bar</div>'
})
const wrapper = await renderToString(Component)
expect(wrapper).toBe('<!--[--><div>foo</div><div>bar</div><!--]-->')
})
it('returns correct html when onServerPrefetch is used', async () => {
const Component = defineComponent({
template: '<div>{{ text }}</div>',
setup() {
const text = ref('')
onServerPrefetch(() => {
return new Promise((resolve) => {
setTimeout(() => {
text.value = 'Text content'
resolve(true)
}, 100)
})
})
onMounted(() => {
text.value = 'Text content'
})
return { text }
}
})
const wrapper = await renderToString(Component)
expect(wrapper).toBe('<div>Text content</div>')
})
})