import { createLocalVue } from '@vue/test-utils' ; import Vuex from 'vuex' ; import i18n from '~/src/config/i18n' ; import router from '@/router' ; import Jump , { JumpState , Channel } from '~/src/renderer/store/TimelineSpace/Modals/Jump' ; const state = ( ) : JumpState => { return { modalOpen : true , channel : '' , defaultChannelList : [ { name : i18n . t ( 'side_menu.home' ) , path : 'home' } , { name : i18n . t ( 'side_menu.notification' ) , path : 'notifications' } , { name : i18n . t ( 'side_menu.favourite' ) , path : 'favourites' } , { name : i18n . t ( 'side_menu.local' ) , path : 'local' } , { name : i18n . t ( 'side_menu.public' ) , path : 'public' } , { name : i18n . t ( 'side_menu.hashtag' ) , path : 'hashtag' } , { name : i18n . t ( 'side_menu.search' ) , path : 'search' } , { name : i18n . t ( 'side_menu.direct' ) , path : 'direct-messages' } ] , listChannelList : [ ] , tagChannelList : [ ] , selectedChannel : { name : i18n . t ( 'side_menu.home' ) , path : 'home' } } ; } ; const initStore = ( ) => { return { namespaced : true , state : state ( ) , actions : Jump . actions , mutations : Jump . mutations } ; } ; const timelineState = { namespaced : true , state : { account : { _id : '0' } } } ; describe ( 'Jump' , ( ) => { let store ; let localVue ; beforeEach ( ( ) => { localVue = createLocalVue ( ) ; localVue . use ( Vuex ) ; store = new Vuex . Store ( { modules : { Jump : initStore ( ) , TimelineSpace : timelineState } } ) ; } ) ; describe ( 'jumpCurrentSelected' , ( ) => { it ( 'should be changed' , ( ) => { store . dispatch ( 'Jump/jumpCurrentSelected' ) ; expect ( store . state . Jump . modalOpen ) . toEqual ( false ) ; expect ( router . push ) . toHaveBeenCalledWith ( { path : '/0/home' } ) ; } ) ; } ) ; describe ( 'jump' , ( ) => { it ( 'should be changed' , ( ) => { const channel = { name : 'public' , path : 'public' } ; store . dispatch ( 'Jump/jump' , channel ) ; expect ( store . state . Jump . modalOpen ) . toEqual ( false ) ; expect ( router . push ) . toHaveBeenCalledWith ( { path : '/0/public' } ) ; } ) ; } ) ; } ) ;