diff options
Diffstat (limited to 'spec/frontend/project_select_combo_button_spec.js')
-rw-r--r-- | spec/frontend/project_select_combo_button_spec.js | 165 |
1 files changed, 0 insertions, 165 deletions
diff --git a/spec/frontend/project_select_combo_button_spec.js b/spec/frontend/project_select_combo_button_spec.js deleted file mode 100644 index b8d5a1a61f3..00000000000 --- a/spec/frontend/project_select_combo_button_spec.js +++ /dev/null @@ -1,165 +0,0 @@ -import $ from 'jquery'; -import { loadHTMLFixture, resetHTMLFixture } from 'helpers/fixtures'; -import ProjectSelectComboButton from '~/project_select_combo_button'; - -const fixturePath = 'static/project_select_combo_button.html'; - -describe('Project Select Combo Button', () => { - let testContext; - - beforeEach(() => { - testContext = {}; - }); - - beforeEach(() => { - testContext.defaults = { - label: 'Select project to create issue', - groupId: 12345, - projectMeta: { - name: 'My Cool Project', - url: 'http://mycoolproject.com', - }, - newProjectMeta: { - name: 'My Other Cool Project', - url: 'http://myothercoolproject.com', - }, - vulnerableProject: { - name: 'Self XSS', - // eslint-disable-next-line no-script-url - url: 'javascript:alert(1)', - }, - localStorageKey: 'group-12345-new-issue-recent-project', - relativePath: 'issues/new', - }; - - loadHTMLFixture(fixturePath); - - testContext.newItemBtn = document.querySelector('.js-new-project-item-link'); - testContext.projectSelectInput = document.querySelector('.project-item-select'); - }); - - afterEach(() => { - resetHTMLFixture(); - }); - - describe('on page load when localStorage is empty', () => { - beforeEach(() => { - testContext.comboButton = new ProjectSelectComboButton(testContext.projectSelectInput); - }); - - it('newItemBtn href is null', () => { - expect(testContext.newItemBtn.getAttribute('href')).toBe(''); - }); - - it('newItemBtn text is the plain default label', () => { - expect(testContext.newItemBtn.textContent).toBe(testContext.defaults.label); - }); - }); - - describe('on page load when localStorage is filled', () => { - beforeEach(() => { - window.localStorage.setItem( - testContext.defaults.localStorageKey, - JSON.stringify(testContext.defaults.projectMeta), - ); - testContext.comboButton = new ProjectSelectComboButton(testContext.projectSelectInput); - }); - - it('newItemBtn href is correctly set', () => { - expect(testContext.newItemBtn.getAttribute('href')).toBe( - testContext.defaults.projectMeta.url, - ); - }); - - it('newItemBtn text is the cached label', () => { - expect(testContext.newItemBtn.textContent).toBe( - `New issue in ${testContext.defaults.projectMeta.name}`, - ); - }); - - afterEach(() => { - window.localStorage.clear(); - }); - }); - - describe('after selecting a new project', () => { - beforeEach(() => { - testContext.comboButton = new ProjectSelectComboButton(testContext.projectSelectInput); - - // mock the effect of selecting an item from the projects dropdown (select2) - $('.project-item-select') - .val(JSON.stringify(testContext.defaults.newProjectMeta)) - .trigger('change'); - }); - - it('newItemBtn href is correctly set', () => { - expect(testContext.newItemBtn.getAttribute('href')).toBe( - 'http://myothercoolproject.com/issues/new', - ); - }); - - it('newItemBtn text is the selected project label', () => { - expect(testContext.newItemBtn.textContent).toBe( - `New issue in ${testContext.defaults.newProjectMeta.name}`, - ); - }); - - afterEach(() => { - window.localStorage.clear(); - }); - }); - - describe('after selecting a vulnerable project', () => { - beforeEach(() => { - testContext.comboButton = new ProjectSelectComboButton(testContext.projectSelectInput); - - // mock the effect of selecting an item from the projects dropdown (select2) - $('.project-item-select') - .val(JSON.stringify(testContext.defaults.vulnerableProject)) - .trigger('change'); - }); - - it('newItemBtn href is correctly sanitized', () => { - expect(testContext.newItemBtn.getAttribute('href')).toBe('about:blank'); - }); - - afterEach(() => { - window.localStorage.clear(); - }); - }); - - describe('deriveTextVariants', () => { - beforeEach(() => { - testContext.mockExecutionContext = { - resourceType: '', - resourceLabel: '', - }; - - testContext.comboButton = new ProjectSelectComboButton(testContext.projectSelectInput); - - testContext.method = testContext.comboButton.deriveTextVariants.bind( - testContext.mockExecutionContext, - ); - }); - - it('correctly derives test variants for merge requests', () => { - testContext.mockExecutionContext.resourceType = 'merge_requests'; - testContext.mockExecutionContext.resourceLabel = 'New merge request'; - - const returnedVariants = testContext.method(); - - expect(returnedVariants.localStorageItemType).toBe('new-merge-request'); - expect(returnedVariants.presetTextSuffix).toBe('merge request'); - }); - - it('correctly derives text variants for issues', () => { - testContext.mockExecutionContext.resourceType = 'issues'; - testContext.mockExecutionContext.resourceLabel = 'New issue'; - - const returnedVariants = testContext.method(); - - expect(returnedVariants.localStorageItemType).toBe('new-issue'); - expect(returnedVariants.presetTextSuffix).toBe('issue'); - }); - }); -}); |