github.com/covergates/covergates@v0.2.2-0.20201009050117-42ef8a19fb95/web/src/components/__tests__/ReportOverview.spec.ts (about) 1 import Vue from 'vue'; 2 import { createLocalVue, shallowMount, Wrapper } from '@vue/test-utils'; 3 import Vuex, { Store } from 'vuex'; 4 import { cloneDeep } from 'lodash'; 5 import Vuetify from 'vuetify'; 6 import flushPromises from 'flush-promises'; 7 import ReportOverview from '@/components/ReportOverview.vue'; 8 import { AxiosPlugin } from '@/plugins/http'; 9 import { Mutations, storeConfig, RootState } from '@/store'; 10 11 jest.mock('axios'); 12 Vue.use(Vuetify); 13 Vue.use(AxiosPlugin); 14 15 describe('ReportOverview.vue', () => { 16 console.warn = jest.fn(); 17 const localVue = createLocalVue(); 18 let vuetify: typeof Vuetify; 19 let store: Store<RootState>; 20 beforeEach(() => { 21 vuetify = new Vuetify(); 22 store = new Vuex.Store(cloneDeep(storeConfig)); 23 }); 24 25 localVue.use(Vuetify); 26 it('update file count when current report is set', async () => { 27 const wrapper = shallowMount(ReportOverview, { 28 localVue, 29 vuetify, 30 store 31 }) as Wrapper<ReportOverview & { filesCount: number }>; 32 expect(wrapper.vm.$store.state.report.current).toBeUndefined(); 33 expect(wrapper.vm.filesCount).toEqual(0); 34 wrapper.vm.$store.commit(Mutations.SET_REPORT_CURRENT, { 35 files: ['a', 'b', 'c'] 36 } as Report); 37 await flushPromises(); 38 expect(wrapper.vm.filesCount).toEqual(3); 39 }); 40 41 it('round coverage rate', async () => { 42 const wrapper = shallowMount(ReportOverview, { 43 localVue, 44 vuetify, 45 store 46 }) as Wrapper<ReportOverview & { $coverage: number }>; 47 expect(wrapper.vm.$store.state.report.current).toBeUndefined(); 48 expect(wrapper.vm.$coverage).toEqual(0); 49 wrapper.vm.$store.commit(Mutations.SET_REPORT_CURRENT, { 50 coverages: [ 51 { 52 statementCoverage: 0.8995 53 } 54 ] 55 } as Report); 56 await flushPromises(); 57 expect(wrapper.vm.$coverage).toEqual(89.95); 58 }); 59 });