text: import { createLocalVue, mount } from '@vue/test-utils';
  import Vuex from 'vuex';
  import VueI18n from 'vue-i18n';
  import VTooltip from 'v-tooltip';
  
  import Button from 'dashboard/components/buttons/Button';
  import i18n from 'dashboard/i18n';
  import FluentIcon from 'shared/components/FluentIcon/DashboardIcon';
  import MoreActions from '../MoreActions';
  
  const localVue = createLocalVue();
  localVue.use(Vuex);
  localVue.use(VueI18n);
  localVue.use(VTooltip);
  
  localVue.component('fluent-icon', FluentIcon);
  localVue.component('woot-button', Button);
  
  const i18nConfig = new VueI18n({
    locale: 'en',
    messages: i18n,
  });
  
  describe('MoveActions', () => {
    let currentChat = { id: 8, muted: false };
    let state = null;
    let muteConversation = null;
    let unmuteConversation = null;
    let modules = null;
    let getters = null;
    let store = null;
    let moreActions = null;
  
    beforeEach(() => {
      window.bus = {
        $emit: jest.fn(),
        $on: jest.fn(),
        $off: jest.fn(),
      };
  
      state = {
        authenticated: true,
        currentChat,
      };
  
      muteConversation = jest.fn(() => Promise.resolve());
      unmuteConversation = jest.fn(() => Promise.resolve());
  
      modules = {
        conversations: {
          actions: {
            muteConversation,
            unmuteConversation,
          },
        },
      };
  
      getters = {
        getSelectedChat: () => currentChat,
      };
  
      store = new Vuex.Store({
        state,
        modules,
        getters,
      });
  
      moreActions = mount(MoreActions, { store, localVue, i18n: i18nConfig });
    });
  
    describe('muting discussion', () => {
      it('triggers "muteConversation"', async () => {
        await moreActions.find('button:first-child').trigger('click');
  
        expect(muteConversation).toBeCalledWith(
          expect.any(Object),
          currentChat.id,
          undefined
        );
      });
  
      it('shows alert', async () => {
        await moreActions.find('button:first-child').trigger('click');
  
        expect(window.bus.$emit).toBeCalledWith(
          'newToastMessage',
          'This conversation is muted for 6 hours'
        );
      });
    });
  
    describe('unmuting discussion', () => {
      beforeEach(() => {
        currentChat.muted = true;
      });
  
      it('triggers "unmuteConversation"', async () => {
        await moreActions.find('button:first-child').trigger('click');
  
        expect(unmuteConversation).toBeCalledWith(
          expect.any(Object),
          currentChat.id,
          undefined
        );
      });
  
      it('shows alert', async () => {
        await moreActions.find('button:first-child').trigger('click');
  
        expect(window.bus.$emit).toBeCalledWith(
          'newToastMessage',
          'This conversation is unmuted'
        );
      });
    });
  });
  