element-plus/packages/components/skeleton/__tests__/skeleton.vitest.ts

104 lines
2.1 KiB
TypeScript
Raw Normal View History

2020-12-21 20:07:48 +08:00
import { nextTick } from 'vue'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
2020-12-21 20:07:48 +08:00
import makeMount from '@element-plus/test-utils/make-mount'
import Skeleton from '../src/skeleton.vue'
import type { SkeletonInstance } from '../src/skeleton'
2020-12-21 20:07:48 +08:00
const AXIOM = 'AXIOM is the best girl'
describe('Skeleton.vue', () => {
beforeEach(() => {
vi.useFakeTimers()
})
afterEach(() => {
vi.restoreAllMocks()
})
const mount = makeMount(Skeleton, {})
it('render test', () => {
2020-12-21 20:07:48 +08:00
const wrapper = mount()
expect(wrapper.findAll('.el-skeleton__p')).toHaveLength(4)
expect(wrapper.classes()).toMatchInlineSnapshot(`
[
"el-skeleton",
]
`)
2020-12-21 20:07:48 +08:00
})
it('should render with animation', () => {
2020-12-21 20:07:48 +08:00
const wrapper = mount({
props: {
animated: true,
},
})
expect(wrapper.classes()).toMatchInlineSnapshot(`
[
"el-skeleton",
"is-animated",
]
`)
2020-12-21 20:07:48 +08:00
})
it('should render x times', async () => {
2020-12-21 20:07:48 +08:00
const wrapper = mount()
expect(wrapper.findAll('.el-skeleton__p')).toHaveLength(4)
await wrapper.setProps({
count: 2,
})
expect(wrapper.findAll('.el-skeleton__p')).toHaveLength(8)
})
it('should render x rows', () => {
2020-12-21 20:07:48 +08:00
const wrapper = mount({
props: {
rows: 4,
},
})
expect(wrapper.findAll('.el-skeleton__p')).toHaveLength(5)
})
it('should render default slots', () => {
2020-12-21 20:07:48 +08:00
const wrapper = mount({
slots: {
default: () => AXIOM,
},
props: {
loading: false,
},
})
expect(wrapper.text()).toBe(AXIOM)
})
it('should render templates', () => {
2020-12-21 20:07:48 +08:00
const wrapper = mount({
slots: {
template: () => AXIOM,
},
})
expect(wrapper.text()).toBe(AXIOM)
})
it('should throttle rendering', async () => {
2020-12-21 20:07:48 +08:00
const wrapper = mount({
props: {
throttle: 500,
},
})
expect((wrapper.vm as SkeletonInstance).uiLoading).toBe(false)
2020-12-21 20:07:48 +08:00
vi.runAllTimers()
2020-12-21 20:07:48 +08:00
await nextTick()
expect((wrapper.vm as SkeletonInstance).uiLoading).toBe(true)
2020-12-21 20:07:48 +08:00
})
})