Whalebird-desktop-client-ma.../spec/renderer/integration/store/GlobalHeader.spec.ts

116 lines
2.7 KiB
TypeScript

import { createLocalVue } from '@vue/test-utils'
import Vuex from 'vuex'
import { ipcMain, ipcRenderer } from '~/spec/mock/electron'
import GlobalHeader, { GlobalHeaderState } from '~/src/renderer/store/GlobalHeader'
import { MyWindow } from '~/src/types/global'
;((window as any) as MyWindow).ipcRenderer = ipcRenderer
const state = (): GlobalHeaderState => {
return {
accounts: [],
changing: false,
hide: false
}
}
const initStore = () => {
return {
namespaced: true,
state: state(),
actions: GlobalHeader.actions,
mutations: GlobalHeader.mutations
}
}
const routerState = {
namespaced: true,
state: {
params: {
id: 'account_id'
}
}
}
describe('GlobalHeader', () => {
let store
let localVue
beforeEach(() => {
localVue = createLocalVue()
localVue.use(Vuex)
store = new Vuex.Store({
modules: {
GlobalHeader: initStore(),
route: routerState
}
})
})
describe('listAccounts', () => {
beforeEach(() => {
ipcMain.handle('list-accounts', () => {
return ['account']
})
})
afterEach(() => {
ipcMain.removeHandler('list-accounts')
})
it('should be updated', async () => {
await store.dispatch('GlobalHeader/listAccounts')
expect(store.state.GlobalHeader.accounts).toEqual(['account'])
})
})
describe('refreshAccounts', () => {
beforeEach(() => {
ipcMain.handle('refresh-accounts', () => {
return ['accounts']
})
})
afterEach(() => {
ipcMain.removeHandler('refresh-accounts')
})
it('should be refreshed', async () => {
await store.dispatch('GlobalHeader/refreshAccounts')
expect(store.state.GlobalHeader.accounts).toEqual(['accounts'])
})
})
describe('removeShortcutEvents', () => {
it('should be removed', async () => {
const removed = await store.dispatch('GlobalHeader/removeShortcutEvents')
expect(removed).toEqual(true)
})
})
describe('loadHide', () => {
beforeEach(() => {
ipcMain.handle('get-global-header', () => {
return true
})
})
afterEach(() => {
ipcMain.removeHandler('get-global-header')
})
it('should be changed', async () => {
await store.dispatch('GlobalHeader/loadHide')
expect(store.state.GlobalHeader.hide).toEqual(true)
})
})
describe('switchHide', () => {
beforeEach(() => {
ipcMain.handle('change-global-header', (_, value) => {
return value
})
})
afterEach(() => {
ipcMain.removeHandler('change-global-header')
})
it('should be switched', async () => {
const hide = await store.dispatch('GlobalHeader/switchHide', true)
expect(hide).toEqual(true)
})
})
})