diff options
Diffstat (limited to 'spec/frontend/frequent_items/components/frequent_items_search_input_spec.js')
-rw-r--r-- | spec/frontend/frequent_items/components/frequent_items_search_input_spec.js | 42 |
1 files changed, 37 insertions, 5 deletions
diff --git a/spec/frontend/frequent_items/components/frequent_items_search_input_spec.js b/spec/frontend/frequent_items/components/frequent_items_search_input_spec.js index c5155315bb9..f5e654e6bcb 100644 --- a/spec/frontend/frequent_items/components/frequent_items_search_input_spec.js +++ b/spec/frontend/frequent_items/components/frequent_items_search_input_spec.js @@ -1,23 +1,35 @@ import { shallowMount } from '@vue/test-utils'; +import { mockTracking, unmockTracking } from 'helpers/tracking_helper'; import searchComponent from '~/frequent_items/components/frequent_items_search_input.vue'; +import { createStore } from '~/frequent_items/store'; import eventHub from '~/frequent_items/event_hub'; -const createComponent = (namespace = 'projects') => - shallowMount(searchComponent, { - propsData: { namespace }, - }); - describe('FrequentItemsSearchInputComponent', () => { let wrapper; + let trackingSpy; let vm; + let store; + + const createComponent = (namespace = 'projects') => + shallowMount(searchComponent, { + store, + propsData: { namespace }, + }); beforeEach(() => { + store = createStore({ dropdownType: 'project' }); + jest.spyOn(store, 'dispatch').mockImplementation(() => {}); + + trackingSpy = mockTracking('_category_', document, jest.spyOn); + trackingSpy.mockImplementation(() => {}); + wrapper = createComponent(); ({ vm } = wrapper); }); afterEach(() => { + unmockTracking(); vm.$destroy(); }); @@ -76,4 +88,24 @@ describe('FrequentItemsSearchInputComponent', () => { ); }); }); + + describe('tracking', () => { + it('tracks when search query is entered', async () => { + expect(trackingSpy).not.toHaveBeenCalled(); + expect(store.dispatch).not.toHaveBeenCalled(); + + const value = 'my project'; + + const input = wrapper.find('input'); + input.setValue(value); + input.trigger('input'); + + await wrapper.vm.$nextTick(); + + expect(trackingSpy).toHaveBeenCalledWith(undefined, 'type_search_query', { + label: 'project_dropdown_frequent_items_search_input', + }); + expect(store.dispatch).toHaveBeenCalledWith('setSearchQuery', value); + }); + }); }); |