1*aeb19816SDamian Celicoimport { mount, createLocalVue, createWrapper } from '@vue/test-utils';
298059c92SSukanya Pandeyimport AppNavigation from '@/components/AppNavigation';
398059c92SSukanya Pandeyimport Vue from 'vue';
4*aeb19816SDamian Celicoimport Vuex from 'vuex';
5fba4d625SSukanya Pandeyimport VueRouter from 'vue-router';
698059c92SSukanya Pandeyimport { BootstrapVue } from 'bootstrap-vue';
798059c92SSukanya Pandey
8*aeb19816SDamian Celicoconst localVue = createLocalVue();
9*aeb19816SDamian CelicolocalVue.use(Vuex);
10*aeb19816SDamian Celico
1198059c92SSukanya Pandeydescribe('AppNavigation.vue', () => {
1298059c92SSukanya Pandey  let wrapper;
13*aeb19816SDamian Celico  const router = new VueRouter();
14*aeb19816SDamian Celico  const actions = {
15*aeb19816SDamian Celico    'global/userPrivilege': jest.fn(),
16*aeb19816SDamian Celico  };
17*aeb19816SDamian Celico  const store = new Vuex.Store({ actions });
1898059c92SSukanya Pandey  Vue.use(BootstrapVue);
19fba4d625SSukanya Pandey  Vue.use(VueRouter);
2098059c92SSukanya Pandey
2198059c92SSukanya Pandey  wrapper = mount(AppNavigation, {
22*aeb19816SDamian Celico    store,
23fba4d625SSukanya Pandey    router,
2498059c92SSukanya Pandey    mocks: {
25602e98aaSDerick Montague      $t: (key) => key,
26602e98aaSDerick Montague    },
2798059c92SSukanya Pandey  });
2898059c92SSukanya Pandey
29ad2ceb6dSDerick Montague  it('should exist', async () => {
30ad2ceb6dSDerick Montague    expect(wrapper.exists()).toBe(true);
3198059c92SSukanya Pandey  });
3298059c92SSukanya Pandey
33ad2ceb6dSDerick Montague  it('should render correctly', () => {
34ad2ceb6dSDerick Montague    expect(wrapper.element).toMatchSnapshot();
35ad2ceb6dSDerick Montague  });
36ad2ceb6dSDerick Montague
37ad2ceb6dSDerick Montague  it('should render with nav-container open', () => {
3898059c92SSukanya Pandey    wrapper.vm.isNavigationOpen = true;
39ad2ceb6dSDerick Montague    expect(wrapper.element).toMatchSnapshot();
4098059c92SSukanya Pandey  });
4198059c92SSukanya Pandey
42edb8a774SSukanya Pandey  it('Nav Overlay click should emit change-is-navigation-open event', async () => {
43ad2ceb6dSDerick Montague    const rootWrapper = createWrapper(wrapper.vm.$root);
44ad2ceb6dSDerick Montague    const navOverlay = wrapper.find('#nav-overlay');
45ad2ceb6dSDerick Montague    navOverlay.trigger('click');
46ad2ceb6dSDerick Montague    await wrapper.vm.$nextTick();
47edb8a774SSukanya Pandey    expect(rootWrapper.emitted('change-is-navigation-open')).toBeTruthy();
48ad2ceb6dSDerick Montague  });
49ad2ceb6dSDerick Montague
50edb8a774SSukanya Pandey  it('toggle-navigation event should toggle isNavigation data prop value', async () => {
51ad2ceb6dSDerick Montague    const rootWrapper = createWrapper(wrapper.vm.$root);
5298059c92SSukanya Pandey    wrapper.vm.isNavigationOpen = false;
53edb8a774SSukanya Pandey    rootWrapper.vm.$emit('toggle-navigation');
54ad2ceb6dSDerick Montague    expect(wrapper.vm.isNavigationOpen).toBe(true);
55edb8a774SSukanya Pandey    rootWrapper.vm.$emit('toggle-navigation');
56ad2ceb6dSDerick Montague    expect(wrapper.vm.isNavigationOpen).toBe(false);
5798059c92SSukanya Pandey  });
5898059c92SSukanya Pandey});
59