-
Notifications
You must be signed in to change notification settings - Fork 120
/
Copy pathVuePdfEmbed.test.ts
77 lines (69 loc) · 1.94 KB
/
VuePdfEmbed.test.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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import { expect, test, vi } from 'vitest'
import { flushPromises, mount } from '@vue/test-utils'
import VuePdfEmbed from '../src/VuePdfEmbed.vue'
HTMLCanvasElement.prototype.getContext = () => null
vi.mock('pdfjs-dist/legacy/build/pdf.mjs', () => ({
GlobalWorkerOptions: {},
getDocument: () => ({
promise: {
numPages: 3,
getPage: () => ({
view: [],
getViewport: () => ({
clone: () => ({}),
}),
render: () => ({}),
}),
},
}),
}))
vi.mock('pdfjs-dist/web/pdf_viewer.mjs', () => ({}))
test('sets correct data', async () => {
const wrapper = mount(VuePdfEmbed, {
props: {
source: 'SOURCE',
},
})
await flushPromises()
expect(wrapper.vm.doc).toBeTruthy()
expect(wrapper.vm.doc?.numPages).toBe(3)
})
test('sets page IDs', async () => {
const wrapper = mount(VuePdfEmbed, {
props: {
id: 'ID',
source: 'SOURCE',
},
})
await flushPromises()
expect(wrapper.find('#ID.vue-pdf-embed').exists()).toBe(true)
expect(wrapper.find('#ID-0.vue-pdf-embed__page').exists()).toBe(false)
expect(wrapper.find('#ID-1.vue-pdf-embed__page').exists()).toBe(true)
expect(wrapper.find('#ID-2.vue-pdf-embed__page').exists()).toBe(true)
expect(wrapper.find('#ID-3.vue-pdf-embed__page').exists()).toBe(true)
expect(wrapper.find('#ID-4.vue-pdf-embed__page').exists()).toBe(false)
})
test('emits successful events', async () => {
const wrapper = mount(VuePdfEmbed, {
props: {
source: 'SOURCE',
},
})
await flushPromises()
expect(wrapper.emitted()).toHaveProperty('loaded')
expect(wrapper.emitted()).toHaveProperty('rendered')
})
test('renders slots content', async () => {
const wrapper = mount(VuePdfEmbed, {
props: {
source: 'SOURCE',
},
slots: {
'after-page': 'AFTER',
'before-page': 'BEFORE',
},
})
await flushPromises()
expect(wrapper.html()).toMatch('AFTER')
expect(wrapper.html()).toMatch('BEFORE')
})