50 lines
1.5 KiB
JavaScript
50 lines
1.5 KiB
JavaScript
import Cookies from 'js-cookie';
|
|
import UserCallout from '~/user_callout';
|
|
|
|
const USER_CALLOUT_COOKIE = 'user_callout_dismissed';
|
|
|
|
describe('UserCallout', function () {
|
|
const fixtureName = 'dashboard/user-callout.html.raw';
|
|
preloadFixtures(fixtureName);
|
|
|
|
beforeEach(() => {
|
|
loadFixtures(fixtureName);
|
|
Cookies.remove(USER_CALLOUT_COOKIE);
|
|
|
|
this.userCallout = new UserCallout();
|
|
this.closeButton = $('.js-close-callout.close');
|
|
this.userCalloutBtn = $('.js-close-callout:not(.close)');
|
|
});
|
|
|
|
it('hides when user clicks on the dismiss-icon', (done) => {
|
|
this.closeButton.click();
|
|
expect(Cookies.get(USER_CALLOUT_COOKIE)).toBe('true');
|
|
|
|
setTimeout(() => {
|
|
expect(
|
|
document.querySelector('.user-callout'),
|
|
).toBeNull();
|
|
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('hides when user clicks on the "check it out" button', () => {
|
|
this.userCalloutBtn.click();
|
|
expect(Cookies.get(USER_CALLOUT_COOKIE)).toBe('true');
|
|
});
|
|
|
|
describe('Sets cookie with setCalloutPerProject', () => {
|
|
beforeEach(() => {
|
|
spyOn(Cookies, 'set').and.callFake(() => {});
|
|
document.querySelector('.user-callout').setAttribute('data-project-path', 'foo/bar');
|
|
this.userCallout = new UserCallout({ setCalloutPerProject: true });
|
|
});
|
|
|
|
it('sets a cookie when the user clicks the close button', () => {
|
|
this.userCalloutBtn.click();
|
|
expect(Cookies.set).toHaveBeenCalledWith('user_callout_dismissed', 'true', Object({ expires: 365, path: 'foo/bar' }));
|
|
});
|
|
});
|
|
});
|