diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-12-17 11:59:07 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-12-17 11:59:07 +0000 |
commit | 8b573c94895dc0ac0e1d9d59cf3e8745e8b539ca (patch) | |
tree | 544930fb309b30317ae9797a9683768705d664c4 /spec/frontend/frequent_items/components/frequent_items_list_item_spec.js | |
parent | 4b1de649d0168371549608993deac953eb692019 (diff) | |
download | gitlab-ce-8b573c94895dc0ac0e1d9d59cf3e8745e8b539ca.tar.gz |
Add latest changes from gitlab-org/gitlab@13-7-stable-eev13.7.0-rc42
Diffstat (limited to 'spec/frontend/frequent_items/components/frequent_items_list_item_spec.js')
-rw-r--r-- | spec/frontend/frequent_items/components/frequent_items_list_item_spec.js | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/spec/frontend/frequent_items/components/frequent_items_list_item_spec.js b/spec/frontend/frequent_items/components/frequent_items_list_item_spec.js index ab5784b8f7a..1160ed5c84b 100644 --- a/spec/frontend/frequent_items/components/frequent_items_list_item_spec.js +++ b/spec/frontend/frequent_items/components/frequent_items_list_item_spec.js @@ -1,10 +1,14 @@ import { shallowMount } from '@vue/test-utils'; +import { mockTracking, unmockTracking } from 'helpers/tracking_helper'; import { trimText } from 'helpers/text_helper'; import frequentItemsListItemComponent from '~/frequent_items/components/frequent_items_list_item.vue'; -import { mockProject } from '../mock_data'; // can also use 'mockGroup', but not useful to test here +import { createStore } from '~/frequent_items/store'; +import { mockProject } from '../mock_data'; describe('FrequentItemsListItemComponent', () => { let wrapper; + let trackingSpy; + let store = createStore(); const findTitle = () => wrapper.find({ ref: 'frequentItemsItemTitle' }); const findAvatar = () => wrapper.find({ ref: 'frequentItemsItemAvatar' }); @@ -18,6 +22,7 @@ describe('FrequentItemsListItemComponent', () => { const createComponent = (props = {}) => { wrapper = shallowMount(frequentItemsListItemComponent, { + store, propsData: { itemId: mockProject.id, itemName: mockProject.name, @@ -29,7 +34,14 @@ describe('FrequentItemsListItemComponent', () => { }); }; + beforeEach(() => { + store = createStore({ dropdownType: 'project' }); + trackingSpy = mockTracking('_category_', document, jest.spyOn); + trackingSpy.mockImplementation(() => {}); + }); + afterEach(() => { + unmockTracking(); wrapper.destroy(); wrapper = null; }); @@ -97,5 +109,18 @@ describe('FrequentItemsListItemComponent', () => { `('should render $expected $name', ({ selector, expected }) => { expect(selector()).toHaveLength(expected); }); + + it('tracks when item link is clicked', () => { + const link = wrapper.find('a'); + // NOTE: this listener is required to prevent the click from going through and causing: + // `Error: Not implemented: navigation ...` + link.element.addEventListener('click', e => { + e.preventDefault(); + }); + link.trigger('click'); + expect(trackingSpy).toHaveBeenCalledWith(undefined, 'click_link', { + label: 'project_dropdown_frequent_items_list_item', + }); + }); }); }); |