ui: Fix UI unit test failures in master (#4719)

This commit is contained in:
Hoang Nguyen 2021-02-24 16:12:50 +07:00 committed by GitHub
parent 7b2724a0e3
commit 90885730ad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -22,7 +22,7 @@ import mockData from '../../../mockData/MigrateWizard.mock'
jest.mock('axios', () => mockAxios) jest.mock('axios', () => mockAxios)
let wrapper, i18n, store, mocks let wrapper, i18n, store, mocks, router
const state = {} const state = {}
const actions = { const actions = {
@ -62,8 +62,10 @@ const factory = (opts = {}) => {
i18n = opts.i18n || i18n i18n = opts.i18n || i18n
store = opts.store || store store = opts.store || store
mocks = opts.mocks || mocks mocks = opts.mocks || mocks
router = opts.router || router
return common.createFactory(MigrateWizard, { return common.createFactory(MigrateWizard, {
router,
i18n, i18n,
store, store,
mocks, mocks,
@ -81,6 +83,9 @@ describe('Views > compute > MigrateWizard.vue', () => {
if (wrapper) { if (wrapper) {
wrapper.destroy() wrapper.destroy()
} }
if (router && router.currentRoute.name !== 'home') {
router.replace({ name: 'home' })
}
if (i18n.locale !== 'en') { if (i18n.locale !== 'en') {
i18n.locale = 'en' i18n.locale = 'en'
@ -331,7 +336,7 @@ describe('Views > compute > MigrateWizard.vue', () => {
}) })
describe('submitForm()', () => { describe('submitForm()', () => {
it('check api is called when selectedHost.requiresStorageMotion is true', async (done) => { it('check api is called when selectedHost.requiresStorageMotion is true and isUserVm=true', async (done) => {
const mockData = { const mockData = {
migratevirtualmachineresponse: { migratevirtualmachineresponse: {
jobid: 'test-job-id' jobid: 'test-job-id'
@ -344,7 +349,15 @@ describe('Views > compute > MigrateWizard.vue', () => {
} }
} }
router = common.createMockRouter([{
name: 'testRouter1',
path: '/test-router-1',
meta: {
name: 'vm'
}
}])
wrapper = factory({ wrapper = factory({
router: router,
props: { props: {
resource: { resource: {
id: 'test-resource-id', id: 'test-resource-id',
@ -359,6 +372,8 @@ describe('Views > compute > MigrateWizard.vue', () => {
} }
} }
}) })
router.push({ name: 'testRouter1' })
jest.spyOn(wrapper.vm, 'fetchData').mockImplementation(() => {}) jest.spyOn(wrapper.vm, 'fetchData').mockImplementation(() => {})
mockAxios.mockResolvedValue(mockData) mockAxios.mockResolvedValue(mockData)
await wrapper.vm.$nextTick() await wrapper.vm.$nextTick()
@ -382,7 +397,7 @@ describe('Views > compute > MigrateWizard.vue', () => {
}) })
}) })
it('check api is called when selectedHost.requiresStorageMotion is false', async (done) => { it('check api is called when selectedHost.requiresStorageMotion is false and isUserVm=true', async (done) => {
const mockData = { const mockData = {
migratevirtualmachineresponse: { migratevirtualmachineresponse: {
jobid: 'test-job-id' jobid: 'test-job-id'
@ -394,6 +409,14 @@ describe('Views > compute > MigrateWizard.vue', () => {
} }
} }
} }
router = common.createMockRouter([{
name: 'testRouter2',
path: '/test-router-2',
meta: {
name: 'vm'
}
}])
wrapper = factory({ wrapper = factory({
props: { props: {
resource: { resource: {
@ -409,6 +432,7 @@ describe('Views > compute > MigrateWizard.vue', () => {
} }
} }
}) })
router.push({ name: 'testRouter2' })
jest.spyOn(wrapper.vm, 'fetchData').mockImplementation(() => {}) jest.spyOn(wrapper.vm, 'fetchData').mockImplementation(() => {})
mockAxios.mockResolvedValue(mockData) mockAxios.mockResolvedValue(mockData)
@ -434,10 +458,10 @@ describe('Views > compute > MigrateWizard.vue', () => {
}) })
}) })
it('check store dispatch `AddAsyncJob` and $pollJob have successMethod() is called with requiresStorageMotion is true', async (done) => { it('check api is called when isUserVm=false', async (done) => {
const mockData = { const mockData = {
migratevirtualmachinewithvolumeresponse: { migratesystemvmresponse: {
jobid: 'test-job-id-case-1' jobid: 'test-job-id'
}, },
queryasyncjobresultresponse: { queryasyncjobresultresponse: {
jobstatus: 1, jobstatus: 1,
@ -446,7 +470,16 @@ describe('Views > compute > MigrateWizard.vue', () => {
} }
} }
} }
router = common.createMockRouter([{
name: 'testRouter3',
path: '/test-router-3',
meta: {
name: 'test'
}
}])
wrapper = factory({ wrapper = factory({
router: router,
props: { props: {
resource: { resource: {
id: 'test-resource-id', id: 'test-resource-id',
@ -461,8 +494,70 @@ describe('Views > compute > MigrateWizard.vue', () => {
} }
} }
}) })
jest.spyOn(wrapper.vm, 'fetchData').mockImplementation(() => {}) router.push({ name: 'testRouter3' })
jest.spyOn(wrapper.vm, 'fetchData').mockImplementation(() => {})
mockAxios.mockResolvedValue(mockData)
await wrapper.vm.$nextTick()
await wrapper.vm.submitForm()
setTimeout(() => {
expect(mockAxios).toHaveBeenCalled()
expect(mockAxios).toHaveBeenCalledWith({
url: '/',
method: 'GET',
data: new URLSearchParams(),
params: {
command: 'migrateSystemVm',
hostid: 'test-host-id',
virtualmachineid: 'test-resource-id',
response: 'json'
}
})
done()
})
})
it('check store dispatch `AddAsyncJob` and $pollJob have successMethod() is called with requiresStorageMotion is true', async (done) => {
const mockData = {
migratevirtualmachinewithvolumeresponse: {
jobid: 'test-job-id-case-1'
},
queryasyncjobresultresponse: {
jobstatus: 1,
jobresult: {
name: 'test-name-value'
}
}
}
router = common.createMockRouter([{
name: 'testRouter4',
path: '/test-router-4',
meta: {
name: 'vm'
}
}])
wrapper = factory({
router: router,
props: {
resource: {
id: 'test-resource-id',
name: 'test-resource-name'
}
},
data: {
selectedHost: {
requiresStorageMotion: true,
id: 'test-host-id',
name: 'test-host-name'
}
}
})
router.push({ name: 'testRouter4' })
jest.spyOn(wrapper.vm, 'fetchData').mockImplementation(() => {})
mockAxios.mockResolvedValue(mockData) mockAxios.mockResolvedValue(mockData)
await wrapper.vm.$nextTick() await wrapper.vm.$nextTick()
@ -489,7 +584,16 @@ describe('Views > compute > MigrateWizard.vue', () => {
} }
} }
} }
router = common.createMockRouter([{
name: 'testRouter5',
path: '/test-router-5',
meta: {
name: 'vm'
}
}])
wrapper = factory({ wrapper = factory({
router: router,
props: { props: {
resource: { resource: {
id: 'test-resource-id', id: 'test-resource-id',
@ -504,8 +608,62 @@ describe('Views > compute > MigrateWizard.vue', () => {
} }
} }
}) })
jest.spyOn(wrapper.vm, 'fetchData').mockImplementation(() => {}) router.push({ name: 'testRouter5' })
jest.spyOn(wrapper.vm, 'fetchData').mockImplementation(() => {})
mockAxios.mockResolvedValue(mockData)
await wrapper.vm.$nextTick()
await wrapper.vm.submitForm()
setTimeout(() => {
expect(actions.AddAsyncJob).toHaveBeenCalled()
expect(mocks.$pollJob).toHaveBeenCalled()
expect(wrapper.emitted()['close-action'][0]).toEqual([])
done()
})
})
it('check store dispatch `AddAsyncJob` and $pollJob have successMethod() is called with isUserVm is false', async (done) => {
const mockData = {
migratesystemvmresponse: {
jobid: 'test-job-id-case-2'
},
queryasyncjobresultresponse: {
jobstatus: 1,
jobresult: {
name: 'test-name-value'
}
}
}
router = common.createMockRouter([{
name: 'testRouter6',
path: '/test-router-6',
meta: {
name: 'test'
}
}])
wrapper = factory({
router: router,
props: {
resource: {
id: 'test-resource-id',
name: 'test-resource-name'
}
},
data: {
selectedHost: {
requiresStorageMotion: false,
id: 'test-host-id',
name: 'test-host-name'
}
}
})
router.push({ name: 'testRouter6' })
jest.spyOn(wrapper.vm, 'fetchData').mockImplementation(() => {})
mockAxios.mockResolvedValue(mockData) mockAxios.mockResolvedValue(mockData)
await wrapper.vm.$nextTick() await wrapper.vm.$nextTick()
@ -522,7 +680,7 @@ describe('Views > compute > MigrateWizard.vue', () => {
it('check store dispatch `AddAsyncJob` and $pollJob have errorMethod() is called', async (done) => { it('check store dispatch `AddAsyncJob` and $pollJob have errorMethod() is called', async (done) => {
const mockData = { const mockData = {
migratevirtualmachinewithvolumeresponse: { migratesystemvmresponse: {
jobid: 'test-job-id-case-3' jobid: 'test-job-id-case-3'
}, },
queryasyncjobresultresponse: { queryasyncjobresultresponse: {
@ -565,7 +723,7 @@ describe('Views > compute > MigrateWizard.vue', () => {
it('check store dispatch `AddAsyncJob` and $pollJob have catchMethod() is called', async (done) => { it('check store dispatch `AddAsyncJob` and $pollJob have catchMethod() is called', async (done) => {
const mockData = { const mockData = {
migratevirtualmachinewithvolumeresponse: { migratesystemvmresponse: {
jobid: 'test-job-id-case-4' jobid: 'test-job-id-case-4'
} }
} }