73 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| import { GlNavItemDropdown } from '@gitlab/ui';
 | |
| import { mount, shallowMount } from '@vue/test-utils';
 | |
| import { mockTracking } from 'helpers/tracking_helper';
 | |
| import TopNavApp from '~/nav/components/top_nav_app.vue';
 | |
| import TopNavDropdownMenu from '~/nav/components/top_nav_dropdown_menu.vue';
 | |
| import { TEST_NAV_DATA } from '../mock_data';
 | |
| 
 | |
| describe('~/nav/components/top_nav_app.vue', () => {
 | |
|   let wrapper;
 | |
| 
 | |
|   const createComponent = () => {
 | |
|     wrapper = mount(TopNavApp, {
 | |
|       propsData: {
 | |
|         navData: TEST_NAV_DATA,
 | |
|       },
 | |
|     });
 | |
|   };
 | |
| 
 | |
|   const createComponentShallow = () => {
 | |
|     wrapper = shallowMount(TopNavApp, {
 | |
|       propsData: {
 | |
|         navData: TEST_NAV_DATA,
 | |
|       },
 | |
|     });
 | |
|   };
 | |
| 
 | |
|   const findNavItemDropdown = () => wrapper.findComponent(GlNavItemDropdown);
 | |
|   const findNavItemDropdowToggle = () => findNavItemDropdown().find('.js-top-nav-dropdown-toggle');
 | |
|   const findMenu = () => wrapper.findComponent(TopNavDropdownMenu);
 | |
| 
 | |
|   afterEach(() => {
 | |
|     wrapper.destroy();
 | |
|   });
 | |
| 
 | |
|   describe('default', () => {
 | |
|     beforeEach(() => {
 | |
|       createComponentShallow();
 | |
|     });
 | |
| 
 | |
|     it('renders nav item dropdown', () => {
 | |
|       expect(findNavItemDropdown().attributes('href')).toBeUndefined();
 | |
|       expect(findNavItemDropdown().attributes()).toMatchObject({
 | |
|         icon: '',
 | |
|         text: '',
 | |
|         'no-flip': '',
 | |
|         'no-caret': '',
 | |
|       });
 | |
|     });
 | |
| 
 | |
|     it('renders top nav dropdown menu', () => {
 | |
|       expect(findMenu().props()).toStrictEqual({
 | |
|         primary: TEST_NAV_DATA.primary,
 | |
|         secondary: TEST_NAV_DATA.secondary,
 | |
|         views: TEST_NAV_DATA.views,
 | |
|       });
 | |
|     });
 | |
|   });
 | |
| 
 | |
|   describe('tracking', () => {
 | |
|     it('emits a tracking event when the toggle is clicked', () => {
 | |
|       const trackingSpy = mockTracking(undefined, wrapper.element, jest.spyOn);
 | |
|       createComponent();
 | |
| 
 | |
|       findNavItemDropdowToggle().trigger('click');
 | |
| 
 | |
|       expect(trackingSpy).toHaveBeenCalledWith(undefined, 'click_nav', {
 | |
|         label: 'hamburger_menu',
 | |
|         property: 'top_navigation',
 | |
|       });
 | |
|     });
 | |
|   });
 | |
| });
 |