diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-07-15 15:15:01 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-07-15 15:15:01 +0000 |
commit | b616fd825faac3e7f194e1f942ef30730021e463 (patch) | |
tree | 8e187d885200ee5dd7958d7ef32383918ba8e99f /spec/frontend/header_search | |
parent | 1a129420d6bd3e5223e8ba4a5b7749764118a885 (diff) | |
download | gitlab-ce-b616fd825faac3e7f194e1f942ef30730021e463.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/frontend/header_search')
-rw-r--r-- | spec/frontend/header_search/init_spec.js | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/spec/frontend/header_search/init_spec.js b/spec/frontend/header_search/init_spec.js new file mode 100644 index 00000000000..2feef79e8d1 --- /dev/null +++ b/spec/frontend/header_search/init_spec.js @@ -0,0 +1,73 @@ +import { setHTMLFixture, resetHTMLFixture } from 'helpers/fixtures'; + +import initHeaderSearch, { eventHandler } from '~/header_search/init'; + +describe('Header Search EventListener', () => { + beforeEach(() => { + jest.resetModules(); + jest.restoreAllMocks(); + setHTMLFixture(` + <div class="js-header-content"> + <div class="header-search" id="js-header-search" data-autocomplete-path="/search/autocomplete" data-issues-path="/dashboard/issues" data-mr-path="/dashboard/merge_requests" data-search-context="{}" data-search-path="/search"> + <input autocomplete="off" class="form-control gl-form-input gl-search-box-by-type-input" data-qa-selector="search_box" id="search" name="search" placeholder="Search GitLab" type="text"> + </div> + </div>`); + }); + + afterEach(() => { + resetHTMLFixture(); + jest.clearAllMocks(); + }); + + it('attached event listener', () => { + const searchInputBox = document?.querySelector('#search'); + const addEventListener = jest.spyOn(searchInputBox, 'addEventListener'); + initHeaderSearch(); + + expect(addEventListener).toBeCalled(); + }); + + it('removes event listener ', async () => { + const removeEventListener = jest.fn(); + jest.mock('~/header_search', () => ({ initHeaderSearchApp: jest.fn() })); + await eventHandler.apply( + { + newHeaderSearchFeatureFlag: true, + searchInputBox: document.querySelector('#search'), + }, + [removeEventListener], + ); + + expect(removeEventListener).toBeCalled(); + }); + + it('attaches new vue dropdown when feature flag is enabled', async () => { + const mockVueApp = jest.fn(); + jest.mock('~/header_search', () => ({ initHeaderSearchApp: mockVueApp })); + await eventHandler.apply( + { + newHeaderSearchFeatureFlag: true, + searchInputBox: document.querySelector('#search'), + }, + () => {}, + ); + + expect(mockVueApp).toBeCalled(); + }); + + it('attaches old vue dropdown when feature flag is disabled', async () => { + const mockLegacyApp = jest.fn(() => ({ + onSearchInputFocus: jest.fn(), + })); + jest.mock('~/search_autocomplete', () => mockLegacyApp); + await eventHandler.apply( + { + newHeaderSearchFeatureFlag: false, + searchInputBox: document.querySelector('#search'), + }, + () => {}, + ); + + expect(mockLegacyApp).toBeCalled(); + }); +}); |