quasar
Version:
Build high-performance VueJS user interfaces (SPA, PWA, SSR, Mobile and Desktop) in record time
130 lines (106 loc) • 3.63 kB
JavaScript
import { mount, flushPromises } from '@vue/test-utils'
import { describe, test, expect } from 'vitest'
import QVideo from './QVideo.js'
describe('[QVideo API]', () => {
describe('[Props]', () => {
describe('[(prop)ratio]', () => {
test.each([
['String', '5'],
['Number', 5]
])('type %s has effect', async (_, propVal) => {
const wrapper = mount(QVideo, {
props: {
src: 'https://www.youtube.com/embed/k3_tw44QsZQ'
}
})
expect(wrapper.get('.q-video').$style('padding-bottom')).toBe('')
await wrapper.setProps({ ratio: propVal })
await flushPromises()
expect(wrapper.get('.q-video').$style('padding-bottom')).toBe('20%')
})
})
describe('[(prop)src]', () => {
test('type String has effect', () => {
const propVal = 'https://www.youtube.com/embed/k3_tw44QsZQ'
const wrapper = mount(QVideo, {
props: {
src: propVal
}
})
expect(wrapper.get('iframe').attributes('src')).toBe(propVal)
})
})
describe('[(prop)title]', () => {
test('type String has effect', async () => {
const wrapper = mount(QVideo, {
props: {
src: 'https://www.youtube.com/embed/k3_tw44QsZQ'
}
})
expect(wrapper.get('iframe').attributes('title')).toBeUndefined()
const propVal = 'My Daily Marathon'
await wrapper.setProps({ title: propVal })
await flushPromises()
expect(wrapper.get('iframe').attributes('title')).toBe(propVal)
})
})
describe('[(prop)fetchpriority]', () => {
test.each([['high'], ['low'], ['auto']])(
'value "%s" has effect',
async propVal => {
const wrapper = mount(QVideo, {
props: {
src: 'https://www.youtube.com/embed/k3_tw44QsZQ'
}
})
expect(wrapper.get('iframe').attributes('fetchpriority')).toBe('auto')
await wrapper.setProps({ fetchpriority: propVal })
await flushPromises()
expect(wrapper.get('iframe').attributes('fetchpriority')).toBe(
propVal
)
}
)
})
describe('[(prop)loading]', () => {
test.each([['eager'], ['lazy']])(
'value "%s" has effect',
async propVal => {
const wrapper = mount(QVideo, {
props: {
src: 'https://www.youtube.com/embed/k3_tw44QsZQ'
}
})
expect(wrapper.get('iframe').attributes('loading')).toBe('eager')
await wrapper.setProps({ loading: propVal })
await flushPromises()
expect(wrapper.get('iframe').attributes('loading')).toBe(propVal)
}
)
})
describe('[(prop)referrerpolicy]', () => {
test.each([
['no-referrer'],
['no-referrer-when-downgrade'],
['origin'],
['origin-when-cross-origin'],
['same-origin'],
['strict-origin'],
['strict-origin-when-cross-origin'],
['unsafe-url']
])('value "%s" has effect', async propVal => {
const wrapper = mount(QVideo, {
props: {
src: 'https://www.youtube.com/embed/k3_tw44QsZQ'
}
})
expect(wrapper.get('iframe').attributes('referrerpolicy')).toBe(
'strict-origin-when-cross-origin'
)
await wrapper.setProps({ referrerpolicy: propVal })
await flushPromises()
expect(wrapper.get('iframe').attributes('referrerpolicy')).toBe(propVal)
})
})
})
})