55 lines
1.5 KiB
JavaScript
55 lines
1.5 KiB
JavaScript
import Vue from 'vue'
|
|
import { shallowMount } from '@vue/test-utils';
|
|
import CoreuiVue from '@coreui/vue'
|
|
import ProgressBars from '@/views/base/ProgressBars'
|
|
|
|
Vue.use(CoreuiVue)
|
|
|
|
jest.useFakeTimers()
|
|
|
|
describe('ProgressBars.vue', () => {
|
|
// mount it once, to make test efficient & faster
|
|
const wrapper = shallowMount(ProgressBars)
|
|
|
|
it('has a name', () => {
|
|
expect(ProgressBars.name).toBe('ProgressBars')
|
|
})
|
|
it('has a created hook', () => {
|
|
expect(typeof ProgressBars.data).toMatch('function')
|
|
})
|
|
it('sets the correct default data', () => {
|
|
expect(typeof ProgressBars.data).toMatch('function')
|
|
})
|
|
it('is Vue instance', () => {
|
|
expect(wrapper.vm).toBeTruthy()
|
|
})
|
|
it('is ProgressBars', () => {
|
|
expect(wrapper.findComponent(ProgressBars)).toBeTruthy()
|
|
})
|
|
test('renders correctly', () => {
|
|
// mock Math.random() to always return 1
|
|
jest.spyOn(global.Math, 'random').mockReturnValue(1)
|
|
|
|
expect(wrapper.element).toMatchSnapshot()
|
|
|
|
// restore Math.random()
|
|
jest.spyOn(global.Math, 'random').mockRestore()
|
|
})
|
|
it('should have methods', () => {
|
|
expect(typeof ProgressBars.methods.clicked ).toEqual('function')
|
|
expect(ProgressBars.methods.clicked()).toBeUndefined()
|
|
})
|
|
it('should execute mounted', () => {
|
|
// mock interval 2000 ms
|
|
jest.advanceTimersByTime(2000);
|
|
|
|
expect(setInterval).toHaveBeenCalled();
|
|
expect(setInterval).toHaveBeenLastCalledWith(expect.any(Function), 2000)
|
|
})
|
|
|
|
// this test should be the last
|
|
it('should be destroyed', () => {
|
|
wrapper.destroy()
|
|
})
|
|
})
|