Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/javascripts/persistent_user_callout_spec.js')
-rw-r--r--spec/javascripts/persistent_user_callout_spec.js175
1 files changed, 0 insertions, 175 deletions
diff --git a/spec/javascripts/persistent_user_callout_spec.js b/spec/javascripts/persistent_user_callout_spec.js
deleted file mode 100644
index d4cb92cacfd..00000000000
--- a/spec/javascripts/persistent_user_callout_spec.js
+++ /dev/null
@@ -1,175 +0,0 @@
-import MockAdapter from 'axios-mock-adapter';
-import setTimeoutPromise from 'spec/helpers/set_timeout_promise_helper';
-import axios from '~/lib/utils/axios_utils';
-import PersistentUserCallout from '~/persistent_user_callout';
-
-describe('PersistentUserCallout', () => {
- const dismissEndpoint = '/dismiss';
- const featureName = 'feature';
-
- function createFixture() {
- const fixture = document.createElement('div');
- fixture.innerHTML = `
- <div
- class="container"
- data-dismiss-endpoint="${dismissEndpoint}"
- data-feature-id="${featureName}"
- >
- <button type="button" class="js-close"></button>
- </div>
- `;
-
- return fixture;
- }
-
- function createDeferredLinkFixture() {
- const fixture = document.createElement('div');
- fixture.innerHTML = `
- <div
- class="container"
- data-dismiss-endpoint="${dismissEndpoint}"
- data-feature-id="${featureName}"
- data-defer-links="true"
- >
- <button type="button" class="js-close"></button>
- <a href="/somewhere-pleasant" target="_blank" class="deferred-link">A link</a>
- <a href="/somewhere-else" target="_blank" class="normal-link">Another link</a>
- </div>
- `;
-
- return fixture;
- }
-
- describe('dismiss', () => {
- let button;
- let mockAxios;
- let persistentUserCallout;
-
- beforeEach(() => {
- const fixture = createFixture();
- const container = fixture.querySelector('.container');
- button = fixture.querySelector('.js-close');
- mockAxios = new MockAdapter(axios);
- persistentUserCallout = new PersistentUserCallout(container);
- spyOn(persistentUserCallout.container, 'remove');
- });
-
- afterEach(() => {
- mockAxios.restore();
- });
-
- it('POSTs endpoint and removes container when clicking close', done => {
- mockAxios.onPost(dismissEndpoint).replyOnce(200);
-
- button.click();
-
- setTimeoutPromise()
- .then(() => {
- expect(persistentUserCallout.container.remove).toHaveBeenCalled();
- expect(mockAxios.history.post[0].data).toBe(
- JSON.stringify({ feature_name: featureName }),
- );
- })
- .then(done)
- .catch(done.fail);
- });
-
- it('invokes Flash when the dismiss request fails', done => {
- const Flash = spyOnDependency(PersistentUserCallout, 'Flash');
- mockAxios.onPost(dismissEndpoint).replyOnce(500);
-
- button.click();
-
- setTimeoutPromise()
- .then(() => {
- expect(persistentUserCallout.container.remove).not.toHaveBeenCalled();
- expect(Flash).toHaveBeenCalledWith(
- 'An error occurred while dismissing the alert. Refresh the page and try again.',
- );
- })
- .then(done)
- .catch(done.fail);
- });
- });
-
- describe('deferred links', () => {
- let button;
- let deferredLink;
- let normalLink;
- let mockAxios;
- let persistentUserCallout;
- let windowSpy;
-
- beforeEach(() => {
- const fixture = createDeferredLinkFixture();
- const container = fixture.querySelector('.container');
- button = fixture.querySelector('.js-close');
- deferredLink = fixture.querySelector('.deferred-link');
- normalLink = fixture.querySelector('.normal-link');
- mockAxios = new MockAdapter(axios);
- persistentUserCallout = new PersistentUserCallout(container);
- spyOn(persistentUserCallout.container, 'remove');
- windowSpy = spyOn(window, 'open').and.callFake(() => {});
- });
-
- afterEach(() => {
- mockAxios.restore();
- });
-
- it('defers loading of a link until callout is dismissed', done => {
- const { href, target } = deferredLink;
- mockAxios.onPost(dismissEndpoint).replyOnce(200);
-
- deferredLink.click();
-
- setTimeoutPromise()
- .then(() => {
- expect(windowSpy).toHaveBeenCalledWith(href, target);
- expect(persistentUserCallout.container.remove).toHaveBeenCalled();
- expect(mockAxios.history.post[0].data).toBe(
- JSON.stringify({ feature_name: featureName }),
- );
- })
- .then(done)
- .catch(done.fail);
- });
-
- it('does not dismiss callout on non-deferred links', done => {
- normalLink.click();
-
- setTimeoutPromise()
- .then(() => {
- expect(windowSpy).not.toHaveBeenCalled();
- expect(persistentUserCallout.container.remove).not.toHaveBeenCalled();
- })
- .then(done)
- .catch(done.fail);
- });
-
- it('does not follow link when notification is closed', done => {
- mockAxios.onPost(dismissEndpoint).replyOnce(200);
-
- button.click();
-
- setTimeoutPromise()
- .then(() => {
- expect(windowSpy).not.toHaveBeenCalled();
- expect(persistentUserCallout.container.remove).toHaveBeenCalled();
- })
- .then(done)
- .catch(done.fail);
- });
- });
-
- describe('factory', () => {
- it('returns an instance of PersistentUserCallout with the provided container property', () => {
- const fixture = createFixture();
-
- expect(PersistentUserCallout.factory(fixture) instanceof PersistentUserCallout).toBe(true);
- });
-
- it('returns undefined if container is falsey', () => {
- expect(PersistentUserCallout.factory()).toBe(undefined);
- });
- });
-});