mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-10-31 02:57:57 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			72 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import AvailabilityStatus from '../AvailabilityStatus.vue';
 | |
| import { createLocalVue, mount } from '@vue/test-utils';
 | |
| import Vuex from 'vuex';
 | |
| import VueI18n from 'vue-i18n';
 | |
| 
 | |
| import WootButton from 'dashboard/components/ui/WootButton';
 | |
| import WootDropdownItem from 'shared/components/ui/dropdown/DropdownItem';
 | |
| import WootDropdownMenu from 'shared/components/ui/dropdown/DropdownMenu';
 | |
| import WootDropdownHeader from 'shared/components/ui/dropdown/DropdownHeader';
 | |
| import WootDropdownDivider from 'shared/components/ui/dropdown/DropdownDivider';
 | |
| import i18n from 'dashboard/i18n';
 | |
| 
 | |
| const localVue = createLocalVue();
 | |
| localVue.use(Vuex);
 | |
| localVue.use(VueI18n);
 | |
| localVue.component('woot-button', WootButton);
 | |
| localVue.component('woot-dropdown-header', WootDropdownHeader);
 | |
| localVue.component('woot-dropdown-menu', WootDropdownMenu);
 | |
| localVue.component('woot-dropdown-divider', WootDropdownDivider);
 | |
| localVue.component('woot-dropdown-item', WootDropdownItem);
 | |
| 
 | |
| const i18nConfig = new VueI18n({ locale: 'en', messages: i18n });
 | |
| 
 | |
| describe('AvailabilityStatus', () => {
 | |
|   const currentAvailability = 'online';
 | |
|   const currentAccountId = '1';
 | |
|   let store = null;
 | |
|   let actions = null;
 | |
|   let modules = null;
 | |
|   let availabilityStatus = null;
 | |
| 
 | |
|   beforeEach(() => {
 | |
|     actions = {
 | |
|       updateAvailability: jest.fn(() => {
 | |
|         return Promise.resolve();
 | |
|       }),
 | |
|     };
 | |
| 
 | |
|     modules = {
 | |
|       auth: {
 | |
|         getters: {
 | |
|           getCurrentUserAvailability: () => currentAvailability,
 | |
|           getCurrentAccountId: () => currentAccountId,
 | |
|         },
 | |
|       },
 | |
|     };
 | |
| 
 | |
|     store = new Vuex.Store({ actions, modules });
 | |
| 
 | |
|     availabilityStatus = mount(AvailabilityStatus, {
 | |
|       store,
 | |
|       localVue,
 | |
|       i18n: i18nConfig,
 | |
|       stubs: { WootSwitch: { template: '<button />' } },
 | |
|     });
 | |
|   });
 | |
| 
 | |
|   it('dispatches an action when user changes status', async () => {
 | |
|     await availabilityStatus;
 | |
|     availabilityStatus
 | |
|       .findAll('.status-change--dropdown-button')
 | |
|       .at(2)
 | |
|       .trigger('click');
 | |
| 
 | |
|     expect(actions.updateAvailability).toBeCalledWith(
 | |
|       expect.any(Object),
 | |
|       { availability: 'offline', account_id: currentAccountId },
 | |
|       undefined
 | |
|     );
 | |
|   });
 | |
| });
 | 
