1
0
mirror of https://github.com/h3poteto/whalebird-desktop synced 2025-02-02 18:36:56 +01:00

Fix invoke/handle in integration spec

This commit is contained in:
AkiraFukushima 2020-11-30 22:30:06 +09:00
parent ec3cb47c5d
commit c00ff94f07
13 changed files with 160 additions and 94 deletions

View File

@ -244,7 +244,7 @@
"electron-builder": "^22.9.1", "electron-builder": "^22.9.1",
"electron-debug": "^3.1.0", "electron-debug": "^3.1.0",
"electron-devtools-installer": "^3.1.1", "electron-devtools-installer": "^3.1.1",
"electron-mock-ipc": "^0.3.7", "electron-mock-ipc": "^0.3.9",
"electron-packager": "^15.0.0", "electron-packager": "^15.0.0",
"eslint": "^7.12.1", "eslint": "^7.12.1",
"eslint-config-prettier": "^6.15.0", "eslint-config-prettier": "^6.15.0",

View File

@ -57,19 +57,20 @@ describe('App', () => {
describe('loadPreferences', () => { describe('loadPreferences', () => {
describe('error', () => { describe('error', () => {
it('should not change', async () => { it('should not change', async () => {
ipcMain.once('get-preferences', (event: any, _) => { ipcMain.handle('get-preferences', async () => {
event.sender.send('error-get-preferences', new Error()) throw new Error()
}) })
await store.dispatch('App/loadPreferences').catch(err => { await store.dispatch('App/loadPreferences').catch(err => {
expect(err instanceof Error).toEqual(true) expect(err instanceof Error).toEqual(true)
expect(store.state.App.theme).toEqual(LightTheme) expect(store.state.App.theme).toEqual(LightTheme)
}) })
ipcMain.removeHandler('get-preferences')
}) })
}) })
describe('success', () => { describe('success', () => {
it('should be changed', async () => { it('should be changed', async () => {
ipcMain.once('get-preferences', (event: any, _) => { ipcMain.handle('get-preferences', () => {
event.sender.send('response-get-preferences', { return {
general: { general: {
timeline: { timeline: {
cw: true, cw: true,
@ -95,13 +96,14 @@ describe('App', () => {
customThemeColor: LightTheme, customThemeColor: LightTheme,
font: DefaultFonts[0] font: DefaultFonts[0]
} }
}) }
}) })
await store.dispatch('App/loadPreferences') await store.dispatch('App/loadPreferences')
expect(store.state.App.fontSize).toEqual(13) expect(store.state.App.fontSize).toEqual(13)
expect(store.state.App.theme).toEqual(DarkTheme) expect(store.state.App.theme).toEqual(DarkTheme)
expect(store.state.App.ignoreCW).toEqual(true) expect(store.state.App.ignoreCW).toEqual(true)
expect(store.state.App.ignoreNFSW).toEqual(true) expect(store.state.App.ignoreNFSW).toEqual(true)
ipcMain.removeHandler('get-preferences')
}) })
}) })
}) })

View File

@ -48,10 +48,13 @@ describe('GlobalHeader', () => {
describe('listAccounts', () => { describe('listAccounts', () => {
beforeEach(() => { beforeEach(() => {
ipcMain.once('list-accounts', (event, _) => { ipcMain.handle('list-accounts', () => {
event.sender.send('response-list-accounts', ['account']) return ['account']
}) })
}) })
afterEach(() => {
ipcMain.removeHandler('list-accounts')
})
it('should be updated', async () => { it('should be updated', async () => {
await store.dispatch('GlobalHeader/listAccounts') await store.dispatch('GlobalHeader/listAccounts')
expect(store.state.GlobalHeader.accounts).toEqual(['account']) expect(store.state.GlobalHeader.accounts).toEqual(['account'])
@ -60,10 +63,13 @@ describe('GlobalHeader', () => {
describe('refreshAccounts', () => { describe('refreshAccounts', () => {
beforeEach(() => { beforeEach(() => {
ipcMain.once('refresh-accounts', (event, _) => { ipcMain.handle('refresh-accounts', () => {
event.sender.send('response-refresh-accounts', ['accounts']) return ['accounts']
}) })
}) })
afterEach(() => {
ipcMain.removeHandler('refresh-accounts')
})
it('should be refreshed', async () => { it('should be refreshed', async () => {
await store.dispatch('GlobalHeader/refreshAccounts') await store.dispatch('GlobalHeader/refreshAccounts')
expect(store.state.GlobalHeader.accounts).toEqual(['accounts']) expect(store.state.GlobalHeader.accounts).toEqual(['accounts'])
@ -79,10 +85,13 @@ describe('GlobalHeader', () => {
describe('loadHide', () => { describe('loadHide', () => {
beforeEach(() => { beforeEach(() => {
ipcMain.once('get-global-header', (event, _) => { ipcMain.handle('get-global-header', () => {
event.sender.send('response-get-global-header', true) return true
}) })
}) })
afterEach(() => {
ipcMain.removeHandler('get-global-header')
})
it('should be changed', async () => { it('should be changed', async () => {
await store.dispatch('GlobalHeader/loadHide') await store.dispatch('GlobalHeader/loadHide')
expect(store.state.GlobalHeader.hide).toEqual(true) expect(store.state.GlobalHeader.hide).toEqual(true)
@ -91,10 +100,13 @@ describe('GlobalHeader', () => {
describe('switchHide', () => { describe('switchHide', () => {
beforeEach(() => { beforeEach(() => {
ipcMain.once('change-global-header', (event, value) => { ipcMain.handle('change-global-header', (_, value) => {
event.sender.send('response-change-global-header', value) return value
}) })
}) })
afterEach(() => {
ipcMain.removeHandler('change-global-header')
})
it('should be switched', async () => { it('should be switched', async () => {
const hide = await store.dispatch('GlobalHeader/switchHide', true) const hide = await store.dispatch('GlobalHeader/switchHide', true)
expect(hide).toEqual(true) expect(hide).toEqual(true)

View File

@ -53,21 +53,23 @@ describe('Login', () => {
describe('fetchLogin', () => { describe('fetchLogin', () => {
describe('error', () => { describe('error', () => {
it('should return error', async () => { it('should return error', async () => {
ipcMain.once('get-auth-url', event => { ipcMain.handle('get-auth-url', () => {
event.sender.send('error-get-auth-url', new Error()) throw new Error()
}) })
await store.dispatch('Login/fetchLogin', 'pleroma.io').catch((err: Error) => { await store.dispatch('Login/fetchLogin', 'pleroma.io').catch((err: Error) => {
expect(err instanceof Error).toEqual(true) expect(err instanceof Error).toEqual(true)
}) })
ipcMain.removeHandler('get-auth-url')
}) })
}) })
describe('success', () => { describe('success', () => {
it('should return url', async () => { it('should return url', async () => {
ipcMain.once('get-auth-url', event => { ipcMain.handle('get-auth-url', () => {
event.sender.send('response-get-auth-url', 'http://example.com/auth') return 'http://example.com/auth'
}) })
const url = await store.dispatch('Login/fetchLogin', 'pleroma.io') const url = await store.dispatch('Login/fetchLogin', 'pleroma.io')
expect(url).toEqual('http://example.com/auth') expect(url).toEqual('http://example.com/auth')
ipcMain.removeHandler('get-auth-url')
}) })
}) })
}) })

View File

@ -52,92 +52,102 @@ describe('Account', () => {
describe('loadAccounts', () => { describe('loadAccounts', () => {
it('error', async () => { it('error', async () => {
ipcMain.once('list-accounts', (event: any, _) => { ipcMain.handle('list-accounts', async () => {
event.sender.send('error-list-accounts', new Error()) throw new Error()
}) })
await store.dispatch('Account/loadAccounts').catch((err: Error) => { await store.dispatch('Account/loadAccounts').catch((err: Error) => {
expect(err instanceof Error).toEqual(true) expect(err instanceof Error).toEqual(true)
}) })
ipcMain.removeHandler('list-accounts')
}) })
it('success', async () => { it('success', async () => {
ipcMain.once('list-accounts', (event: any, _) => { ipcMain.handle('list-accounts', () => {
event.sender.send('response-list-accounts', [account]) return [account]
}) })
await store.dispatch('Account/loadAccounts') await store.dispatch('Account/loadAccounts')
expect(store.state.Account.accounts).toEqual([account]) expect(store.state.Account.accounts).toEqual([account])
ipcMain.removeHandler('list-accounts')
}) })
}) })
describe('removeAccount', () => { describe('removeAccount', () => {
it('error', async () => { it('error', async () => {
ipcMain.once('remove-account', (event: any, _) => { ipcMain.handle('remove-account', async () => {
event.sender.send('error-remove-account', new Error()) throw new Error()
}) })
await store.dispatch('Account/removeAccount', account).catch((err: Error) => { await store.dispatch('Account/removeAccount', account).catch((err: Error) => {
expect(err instanceof Error).toEqual(true) expect(err instanceof Error).toEqual(true)
}) })
ipcMain.removeHandler('remove-account')
}) })
it('success', async () => { it('success', async () => {
ipcMain.once('remove-account', (event: any, _) => { ipcMain.handle('remove-account', () => {
event.sender.send('response-remove-account') return true
}) })
const res = await store.dispatch('Account/removeAccount', account) const res = await store.dispatch('Account/removeAccount', account)
expect(res).toEqual(undefined) expect(res).toEqual(undefined)
ipcMain.removeHandler('remove-account')
}) })
}) })
describe('forwardAccount', () => { describe('forwardAccount', () => {
it('error', async () => { it('error', async () => {
ipcMain.once('forward-account', (event: any, _) => { ipcMain.handle('forward-account', async () => {
event.sender.send('error-forward-account', new Error()) throw new Error()
}) })
await store.dispatch('Account/forwardAccount', account).catch((err: Error) => { await store.dispatch('Account/forwardAccount', account).catch((err: Error) => {
expect(err instanceof Error).toEqual(true) expect(err instanceof Error).toEqual(true)
}) })
ipcMain.removeHandler('forward-account')
}) })
it('success', async () => { it('success', async () => {
ipcMain.once('forward-account', (event: any, _) => { ipcMain.handle('forward-account', () => {
event.sender.send('response-forward-account') return {}
}) })
const res = await store.dispatch('Account/forwardAccount', account) const res = await store.dispatch('Account/forwardAccount', account)
expect(res).toEqual(undefined) expect(res).toEqual(undefined)
ipcMain.removeHandler('forward-account')
}) })
}) })
describe('backwardAccount', () => { describe('backwardAccount', () => {
it('error', async () => { it('error', async () => {
ipcMain.once('backward-account', (event: any, _) => { ipcMain.handle('backward-account', () => {
event.sender.send('error-backward-account', new Error()) throw new Error()
}) })
await store.dispatch('Account/backwardAccount', account).catch((err: Error) => { await store.dispatch('Account/backwardAccount', account).catch((err: Error) => {
expect(err instanceof Error).toEqual(true) expect(err instanceof Error).toEqual(true)
}) })
ipcMain.removeHandler('backward-account')
}) })
it('success', async () => { it('success', async () => {
ipcMain.once('backward-account', (event: any, _) => { ipcMain.handle('backward-account', () => {
event.sender.send('response-backward-account') return {}
}) })
const res = await store.dispatch('Account/backwardAccount', account) const res = await store.dispatch('Account/backwardAccount', account)
expect(res).toEqual(undefined) expect(res).toEqual(undefined)
ipcMain.removeHandler('backward-account')
}) })
}) })
describe('removeAllAccounts', () => { describe('removeAllAccounts', () => {
it('error', async () => { it('error', async () => {
ipcMain.once('remove-all-accounts', (event: any, _) => { ipcMain.handle('remove-all-accounts', () => {
event.sender.send('error-remove-all-accounts', new Error()) throw new Error()
}) })
await store.dispatch('Account/removeAllAccounts', account).catch((err: Error) => { await store.dispatch('Account/removeAllAccounts', account).catch((err: Error) => {
expect(err instanceof Error).toEqual(true) expect(err instanceof Error).toEqual(true)
}) })
ipcMain.removeHandler('remove-all-accounts')
}) })
it('success', async () => { it('success', async () => {
ipcMain.once('remove-all-accounts', (event: any, _) => { ipcMain.handle('remove-all-accounts', () => {
event.sender.send('response-remove-all-accounts') return {}
}) })
const res = await store.dispatch('Account/removeAllAccounts', account) const res = await store.dispatch('Account/removeAllAccounts', account)
expect(res).toEqual(undefined) expect(res).toEqual(undefined)
ipcMain.removeHandler('remove-all-accounts')
}) })
}) })
}) })

View File

@ -1,4 +1,4 @@
import { IpcMainEvent } from 'electron' import { IpcMainInvokeEvent } from 'electron'
import { createLocalVue } from '@vue/test-utils' import { createLocalVue } from '@vue/test-utils'
import Vuex from 'vuex' import Vuex from 'vuex'
import Theme from '~/src/constants/theme' import Theme from '~/src/constants/theme'
@ -60,15 +60,18 @@ describe('Preferences/Appearance', () => {
describe('load', () => { describe('load', () => {
describe('loadAppearance', () => { describe('loadAppearance', () => {
beforeEach(() => { beforeEach(() => {
ipcMain.once('get-preferences', (event: IpcMainEvent, _) => { ipcMain.handle('get-preferences', () => {
event.sender.send('response-get-preferences', { return {
appearance: { appearance: {
theme: Theme.Dark.key, theme: Theme.Dark.key,
fontSize: 15 fontSize: 15
} }
}) }
}) })
}) })
afterEach(() => {
ipcMain.removeHandler('get-preferences')
})
it('should be loaded', async () => { it('should be loaded', async () => {
await store.dispatch('Preferences/loadAppearance') await store.dispatch('Preferences/loadAppearance')
expect(store.state.Preferences.appearance.theme).toEqual(Theme.Dark.key) expect(store.state.Preferences.appearance.theme).toEqual(Theme.Dark.key)
@ -77,10 +80,13 @@ describe('Preferences/Appearance', () => {
}) })
describe('loadFonts', () => { describe('loadFonts', () => {
beforeEach(() => { beforeEach(() => {
ipcMain.once('list-fonts', (event: IpcMainEvent, _) => { ipcMain.handle('list-fonts', () => {
event.sender.send('response-list-fonts', ['my-font']) return ['my-font']
}) })
}) })
afterEach(() => {
ipcMain.removeHandler('list-fonts')
})
it('should be loaded', async () => { it('should be loaded', async () => {
await store.dispatch('Preferences/loadFonts') await store.dispatch('Preferences/loadFonts')
expect(store.state.Preferences.fonts).toEqual([DefaultFonts[0], 'my-font']) expect(store.state.Preferences.fonts).toEqual([DefaultFonts[0], 'my-font'])
@ -90,10 +96,13 @@ describe('Preferences/Appearance', () => {
describe('update', () => { describe('update', () => {
beforeEach(() => { beforeEach(() => {
ipcMain.once('update-preferences', (event: IpcMainEvent, config: any) => { ipcMain.handle('update-preferences', (_: IpcMainInvokeEvent, config: any) => {
event.sender.send('response-update-preferences', config) return config
}) })
}) })
afterEach(() => {
ipcMain.removeHandler('update-preferences')
})
it('updateTheme', async () => { it('updateTheme', async () => {
await store.dispatch('Preferences/updateTheme', Theme.Dark.key) await store.dispatch('Preferences/updateTheme', Theme.Dark.key)
expect(store.state.Preferences.appearance.theme).toEqual(Theme.Dark.key) expect(store.state.Preferences.appearance.theme).toEqual(Theme.Dark.key)

View File

@ -3,6 +3,7 @@ import Vuex from 'vuex'
import { ipcMain, ipcRenderer } from '~/spec/mock/electron' import { ipcMain, ipcRenderer } from '~/spec/mock/electron'
import General, { GeneralState } from '@/store/Preferences/General' import General, { GeneralState } from '@/store/Preferences/General'
import { MyWindow } from '~/src/types/global' import { MyWindow } from '~/src/types/global'
import { IpcMainInvokeEvent } from 'electron'
;((window as any) as MyWindow).ipcRenderer = ipcRenderer ;((window as any) as MyWindow).ipcRenderer = ipcRenderer
const state = (): GeneralState => { const state = (): GeneralState => {
@ -59,17 +60,20 @@ describe('Preferences/General', () => {
describe('loadGeneral', () => { describe('loadGeneral', () => {
beforeEach(() => { beforeEach(() => {
ipcMain.once('get-preferences', (event, _) => { ipcMain.handle('get-preferences', () => {
event.sender.send('response-get-preferences', { return {
general: { general: {
sound: { sound: {
fav_rb: false, fav_rb: false,
toot: false toot: false
} }
} }
}) }
}) })
}) })
afterEach(() => {
ipcMain.removeHandler('get-preferences')
})
it('should be updated', async () => { it('should be updated', async () => {
await store.dispatch('Preferences/loadGeneral') await store.dispatch('Preferences/loadGeneral')
expect(store.state.Preferences.general.sound.fav_rb).toEqual(false) expect(store.state.Preferences.general.sound.fav_rb).toEqual(false)
@ -80,10 +84,13 @@ describe('Preferences/General', () => {
describe('updateSound', () => { describe('updateSound', () => {
beforeEach(() => { beforeEach(() => {
ipcMain.once('update-preferences', (event, config) => { ipcMain.handle('update-preferences', (_: IpcMainInvokeEvent, config: any) => {
event.sender.send('response-update-preferences', config) return config
}) })
}) })
afterEach(() => {
ipcMain.removeHandler('update-preferences')
})
it('should be updated', async () => { it('should be updated', async () => {
await store.dispatch('Preferences/updateSound', { await store.dispatch('Preferences/updateSound', {
fav_rb: false, fav_rb: false,
@ -97,10 +104,13 @@ describe('Preferences/General', () => {
describe('updateTimeline', () => { describe('updateTimeline', () => {
beforeEach(() => { beforeEach(() => {
ipcMain.once('update-preferences', (event, config) => { ipcMain.handle('update-preferences', (_: IpcMainInvokeEvent, config: any) => {
event.sender.send('response-update-preferences', config) return config
}) })
}) })
afterEach(() => {
ipcMain.removeHandler('update-preferences')
})
it('should be updated', async () => { it('should be updated', async () => {
await store.dispatch('Preferences/updateTimeline', { await store.dispatch('Preferences/updateTimeline', {
cw: true, cw: true,

View File

@ -39,14 +39,17 @@ describe('Preferences/Language', () => {
describe('loadLanguage', () => { describe('loadLanguage', () => {
beforeEach(() => { beforeEach(() => {
ipcMain.once('get-preferences', (event: any, _) => { ipcMain.handle('get-preferences', () => {
event.sender.send('response-get-preferences', { return {
language: { language: {
language: DefaultLanguage.ja.key language: DefaultLanguage.ja.key
} }
}) }
}) })
}) })
afterEach(() => {
ipcMain.removeHandler('get-preferences')
})
it('should be updated', async () => { it('should be updated', async () => {
await store.dispatch('Language/loadLanguage') await store.dispatch('Language/loadLanguage')
expect(store.state.Language.language.language).toEqual(DefaultLanguage.ja.key) expect(store.state.Language.language.language).toEqual(DefaultLanguage.ja.key)
@ -55,10 +58,13 @@ describe('Preferences/Language', () => {
describe('changeLanguage', () => { describe('changeLanguage', () => {
beforeEach(() => { beforeEach(() => {
ipcMain.once('change-language', (event: any, key: string) => { ipcMain.handle('change-language', (_, key: string) => {
event.sender.send('response-change-language', key) return key
}) })
}) })
afterEach(() => {
ipcMain.removeHandler('change-language')
})
it('should be changed', async () => { it('should be changed', async () => {
await store.dispatch('Language/changeLanguage', DefaultLanguage.ja.key) await store.dispatch('Language/changeLanguage', DefaultLanguage.ja.key)
expect(store.state.Language.language.language).toEqual(DefaultLanguage.ja.key) expect(store.state.Language.language.language).toEqual(DefaultLanguage.ja.key)

View File

@ -53,8 +53,8 @@ describe('Preferences/Notification', () => {
describe('loadNotification', () => { describe('loadNotification', () => {
beforeEach(() => { beforeEach(() => {
ipcMain.once('get-preferences', (event: any, _) => { ipcMain.handle('get-preferences', () => {
event.sender.send('response-get-preferences', { return {
notification: { notification: {
notify: { notify: {
reply: false, reply: false,
@ -65,7 +65,10 @@ describe('Preferences/Notification', () => {
reaction: false reaction: false
} }
} }
}) }
})
afterEach(() => {
ipcMain.removeHandler('get-preferences')
}) })
it('should be updated', async () => { it('should be updated', async () => {
await store.dispatch('Notification/loadNotification') await store.dispatch('Notification/loadNotification')
@ -85,10 +88,13 @@ describe('Preferences/Notification', () => {
describe('updateNotify', () => { describe('updateNotify', () => {
beforeEach(() => { beforeEach(() => {
ipcMain.once('update-preferences', (event: any, conf: object) => { ipcMain.handle('update-preferences', (_, conf: object) => {
event.sender.send('response-update-preferences', conf) return conf
}) })
}) })
afterEach(() => {
ipcMain.removeHandler('update-preferences')
})
it('should be updated', async () => { it('should be updated', async () => {
await store.dispatch('Notification/updateNotify', { await store.dispatch('Notification/updateNotify', {
reply: false, reply: false,

View File

@ -182,12 +182,15 @@ describe('TimelineSpace', () => {
describe('localAccount', () => { describe('localAccount', () => {
describe('account already exists', () => { describe('account already exists', () => {
beforeEach(() => { beforeEach(() => {
ipcMain.once('get-local-account', (event: any) => { ipcMain.handle('get-local-account', () => {
event.sender.send('response-get-local-account', { return {
username: 'test' username: 'test'
}) }
}) })
}) })
afterEach(() => {
ipcMain.removeHandler('get-local-account')
})
it('should be updated', async () => { it('should be updated', async () => {
await store.dispatch('TimelineSpace/localAccount', 1) await store.dispatch('TimelineSpace/localAccount', 1)
expect(store.state.TimelineSpace.account.username).toEqual('test') expect(store.state.TimelineSpace.account.username).toEqual('test')
@ -196,15 +199,19 @@ describe('TimelineSpace', () => {
describe('account does not exist', () => { describe('account does not exist', () => {
beforeEach(() => { beforeEach(() => {
ipcMain.once('get-local-account', (event: any) => { ipcMain.handle('get-local-account', () => {
event.sender.send('response-get-local-account', {}) return {}
}) })
ipcMain.once('update-account', (event: any) => { ipcMain.handle('update-account', () => {
event.sender.send('response-update-account', { return {
username: 'fetched' username: 'fetched'
}) }
}) })
}) })
afterEach(() => {
ipcMain.removeHandler('get-local-account')
ipcMain.removeHandler('update-account')
})
it('should be fetched', async () => { it('should be fetched', async () => {
await store.dispatch('TimelineSpace/localAccount', 1) await store.dispatch('TimelineSpace/localAccount', 1)
expect(store.state.TimelineSpace.account.username).toEqual('fetched') expect(store.state.TimelineSpace.account.username).toEqual('fetched')
@ -238,12 +245,12 @@ describe('TimelineSpace', () => {
describe('loadUnreadNotification', () => { describe('loadUnreadNotification', () => {
describe('success', () => { describe('success', () => {
it('should be updated', async () => { it('should be updated', async () => {
ipcMain.once('get-unread-notification', (event: any) => { ipcMain.handle('get-unread-notification', () => {
event.sender.send('response-get-unread-notification', { return {
direct: false, direct: false,
local: false, local: false,
public: false public: false
}) }
}) })
await store.dispatch('TimelineSpace/loadUnreadNotification') await store.dispatch('TimelineSpace/loadUnreadNotification')
expect(store.state.TimelineSpace.unreadNotification).toEqual({ expect(store.state.TimelineSpace.unreadNotification).toEqual({
@ -251,12 +258,13 @@ describe('TimelineSpace', () => {
local: false, local: false,
public: false public: false
}) })
ipcMain.removeHandler('get-unread-notification')
}) })
}) })
describe('error', () => { describe('error', () => {
it('should be set default', async () => { it('should be set default', async () => {
ipcMain.once('get-unread-notification', (event: any) => { ipcMain.handle('get-unread-notification', async () => {
event.sender.send('error-get-unread-notification', new Error()) throw new Error()
}) })
await store.dispatch('TimelineSpace/loadUnreadNotification') await store.dispatch('TimelineSpace/loadUnreadNotification')
expect(store.state.TimelineSpace.unreadNotification).toEqual({ expect(store.state.TimelineSpace.unreadNotification).toEqual({
@ -264,6 +272,7 @@ describe('TimelineSpace', () => {
local: unreadSettings.Local.default, local: unreadSettings.Local.default,
public: unreadSettings.Public.default public: unreadSettings.Public.default
}) })
ipcMain.removeHandler('get-unread-notification')
}) })
}) })
}) })

View File

@ -1,4 +1,4 @@
import { IpcMainEvent } from 'electron' import { IpcMainInvokeEvent } from 'electron'
import { createLocalVue } from '@vue/test-utils' import { createLocalVue } from '@vue/test-utils'
import { ipcMain, ipcRenderer } from '~/spec/mock/electron' import { ipcMain, ipcRenderer } from '~/spec/mock/electron'
import Vuex from 'vuex' import Vuex from 'vuex'
@ -48,8 +48,11 @@ describe('Hashtag/List', () => {
describe('listTags', () => { describe('listTags', () => {
it('should be updated', async () => { it('should be updated', async () => {
ipcMain.once('list-hashtags', (event: IpcMainEvent) => { ipcMain.handle('list-hashtags', () => {
event.sender.send('response-list-hashtags', [tag1, tag2]) return [tag1, tag2]
})
afterEach(() => {
ipcMain.removeHandler('list-hashtags')
}) })
await store.dispatch('List/listTags') await store.dispatch('List/listTags')
expect(store.state.List.tags).toEqual([tag1, tag2]) expect(store.state.List.tags).toEqual([tag1, tag2])
@ -58,13 +61,10 @@ describe('Hashtag/List', () => {
describe('removeTag', () => { describe('removeTag', () => {
it('should be updated', async () => { it('should be updated', async () => {
ipcMain.once('remove-hashtag', async () => { ipcMain.handle('remove-hashtag', (_: IpcMainInvokeEvent, tag: LocalTag) => {
ipcMain.once('remove-hashtag', (event: IpcMainEvent, tag: LocalTag) => { expect(tag).toEqual(tag1)
expect(tag).toEqual(tag1)
event.sender.send('response-remove-hashtag')
})
await store.dispatch('List/removeTag', tag1)
}) })
await store.dispatch('List/removeTag', tag1)
}) })
}) })
}) })

View File

@ -139,8 +139,8 @@ describe('SideMenu', () => {
describe('readCollapse', () => { describe('readCollapse', () => {
it('should be read', async () => { it('should be read', async () => {
ipcMain.once('get-collapse', (event: any, _) => { ipcMain.handle('get-collapse', () => {
event.sender.send('response-get-collapse', true) return true
}) })
await store.dispatch('SideMenu/readCollapse') await store.dispatch('SideMenu/readCollapse')
expect(store.state.SideMenu.collapse).toEqual(true) expect(store.state.SideMenu.collapse).toEqual(true)
@ -155,8 +155,8 @@ describe('SideMenu', () => {
const tag2: LocalTag = { const tag2: LocalTag = {
tagName: 'tag2' tagName: 'tag2'
} }
ipcMain.once('list-hashtags', (event: any, _) => { ipcMain.handle('list-hashtags', () => {
event.sender.send('response-list-hashtags', [tag1, tag2]) return [tag1, tag2]
}) })
await store.dispatch('SideMenu/listTags') await store.dispatch('SideMenu/listTags')
expect(store.state.SideMenu.tags).toEqual([tag1, tag2]) expect(store.state.SideMenu.tags).toEqual([tag1, tag2])

View File

@ -4597,10 +4597,10 @@ electron-log@^4.2.2:
resolved "https://registry.yarnpkg.com/electron-log/-/electron-log-4.2.4.tgz#a13e42a9fc42ca2cc7d2603c3746352efa82112e" resolved "https://registry.yarnpkg.com/electron-log/-/electron-log-4.2.4.tgz#a13e42a9fc42ca2cc7d2603c3746352efa82112e"
integrity sha512-CXbDU+Iwi+TjKzugKZmTRIORIPe3uQRqgChUl19fkW/reFUn5WP7dt+cNGT3bkLV8xfPilpkPFv33HgtmLLewQ== integrity sha512-CXbDU+Iwi+TjKzugKZmTRIORIPe3uQRqgChUl19fkW/reFUn5WP7dt+cNGT3bkLV8xfPilpkPFv33HgtmLLewQ==
electron-mock-ipc@^0.3.7: electron-mock-ipc@^0.3.9:
version "0.3.8" version "0.3.9"
resolved "https://registry.yarnpkg.com/electron-mock-ipc/-/electron-mock-ipc-0.3.8.tgz#96aaf48b229e7b7e6d5366bc08f8a320c2e55c00" resolved "https://registry.yarnpkg.com/electron-mock-ipc/-/electron-mock-ipc-0.3.9.tgz#aae1adbc94f7d95a4c6534f7a0497904a338dd5d"
integrity sha512-MqjZQtAzb7BNb6GB89v+CWZlt7uQsVa5zgq23FMtpmQw272nzFqqC0mvyB1ikW4Z5fcwsnSvAxAcZg9jbvbxJQ== integrity sha512-KLcIfdDfA+DnK29/269zfBF4UxpIpkwj2ZVXdOtMvkPRutlpQZqa+hs24wXc/0DHiTKSKlapGHfPTlcZKGSh6A==
electron-notarize@^1.0.0: electron-notarize@^1.0.0:
version "1.0.0" version "1.0.0"
@ -11226,7 +11226,7 @@ schema-utils@^1.0.0:
ajv-errors "^1.0.0" ajv-errors "^1.0.0"
ajv-keywords "^3.1.0" ajv-keywords "^3.1.0"
schema-utils@^2.6.5, schema-utils@^2.7.1: schema-utils@^2.6.5:
version "2.7.1" version "2.7.1"
resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7"
integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==