diff options
Diffstat (limited to 'spec/frontend/onboarding_issues/index_spec.js')
-rw-r--r-- | spec/frontend/onboarding_issues/index_spec.js | 137 |
1 files changed, 0 insertions, 137 deletions
diff --git a/spec/frontend/onboarding_issues/index_spec.js b/spec/frontend/onboarding_issues/index_spec.js deleted file mode 100644 index d476ba1cf5a..00000000000 --- a/spec/frontend/onboarding_issues/index_spec.js +++ /dev/null @@ -1,137 +0,0 @@ -import $ from 'jquery'; -import setWindowLocation from 'helpers/set_window_location_helper'; -import { showLearnGitLabIssuesPopover } from '~/onboarding_issues'; -import { getCookie, setCookie, removeCookie } from '~/lib/utils/common_utils'; -import Tracking from '~/tracking'; - -describe('Onboarding Issues Popovers', () => { - const COOKIE_NAME = 'onboarding_issues_settings'; - const getCookieValue = () => JSON.parse(getCookie(COOKIE_NAME)); - - beforeEach(() => { - jest.spyOn($.fn, 'popover'); - }); - - afterEach(() => { - $.fn.popover.mockRestore(); - document.getElementsByTagName('html')[0].innerHTML = ''; - removeCookie(COOKIE_NAME); - }); - - const setupShowLearnGitLabIssuesPopoverTest = ({ - currentPath = 'group/learn-gitlab', - isIssuesBoardsLinkShown = true, - isCookieSet = true, - cookieValue = true, - } = {}) => { - setWindowLocation(`http://example.com/${currentPath}`); - - if (isIssuesBoardsLinkShown) { - const elem = document.createElement('a'); - elem.setAttribute('data-qa-selector', 'issue_boards_link'); - document.body.appendChild(elem); - } - - if (isCookieSet) { - setCookie(COOKIE_NAME, { previous: true, 'issues#index': cookieValue }); - } - - showLearnGitLabIssuesPopover(); - }; - - describe('showLearnGitLabIssuesPopover', () => { - describe('when on another project', () => { - beforeEach(() => { - setupShowLearnGitLabIssuesPopoverTest({ - currentPath: 'group/another-project', - }); - }); - - it('does not show a popover', () => { - expect($.fn.popover).not.toHaveBeenCalled(); - }); - }); - - describe('when the issues boards link is not shown', () => { - beforeEach(() => { - setupShowLearnGitLabIssuesPopoverTest({ - isIssuesBoardsLinkShown: false, - }); - }); - - it('does not show a popover', () => { - expect($.fn.popover).not.toHaveBeenCalled(); - }); - }); - - describe('when the cookie is not set', () => { - beforeEach(() => { - setupShowLearnGitLabIssuesPopoverTest({ - isCookieSet: false, - }); - }); - - it('does not show a popover', () => { - expect($.fn.popover).not.toHaveBeenCalled(); - }); - }); - - describe('when the cookie value is false', () => { - beforeEach(() => { - setupShowLearnGitLabIssuesPopoverTest({ - cookieValue: false, - }); - }); - - it('does not show a popover', () => { - expect($.fn.popover).not.toHaveBeenCalled(); - }); - }); - - describe('with all the right conditions', () => { - beforeEach(() => { - setupShowLearnGitLabIssuesPopoverTest(); - }); - - it('shows a popover', () => { - expect($.fn.popover).toHaveBeenCalled(); - }); - - it('does not change the cookie value', () => { - expect(getCookieValue()['issues#index']).toBe(true); - }); - - it('disables the previous popover', () => { - expect(getCookieValue().previous).toBe(false); - }); - - describe('when clicking the issues boards link', () => { - beforeEach(() => { - document.querySelector('a[data-qa-selector="issue_boards_link"]').click(); - }); - - it('deletes the cookie', () => { - expect(getCookie(COOKIE_NAME)).toBe(undefined); - }); - }); - - describe('when dismissing the popover', () => { - beforeEach(() => { - jest.spyOn(Tracking, 'event'); - document.querySelector('.learn-gitlab.popover .close').click(); - }); - - it('deletes the cookie', () => { - expect(getCookie(COOKIE_NAME)).toBe(undefined); - }); - - it('sends a tracking event', () => { - expect(Tracking.event).toHaveBeenCalledWith( - 'Growth::Conversion::Experiment::OnboardingIssues', - 'dismiss_popover', - ); - }); - }); - }); - }); -}); |