gitlab-org--gitlab-foss/spec/javascripts/right_sidebar_spec.js

89 lines
2.9 KiB
JavaScript
Raw Normal View History

/* eslint-disable space-before-function-paren, no-var, one-var, one-var-declaration-per-line, new-parens, no-return-assign, new-cap, vars-on-top, max-len */
/* global Sidebar */
2016-07-24 20:45:11 +00:00
import '~/commons/bootstrap';
import '~/right_sidebar';
2016-08-08 21:19:46 +00:00
2016-07-24 20:45:11 +00:00
(function() {
var $aside, $icon, $labelsIcon, $page, $toggle, assertSidebarState;
this.sidebar = null;
$aside = null;
$toggle = null;
$icon = null;
$page = null;
$labelsIcon = null;
assertSidebarState = function(state) {
var shouldBeCollapsed, shouldBeExpanded;
shouldBeExpanded = state === 'expanded';
shouldBeCollapsed = state === 'collapsed';
expect($aside.hasClass('right-sidebar-expanded')).toBe(shouldBeExpanded);
expect($page.hasClass('right-sidebar-expanded')).toBe(shouldBeExpanded);
expect($icon.hasClass('fa-angle-double-right')).toBe(shouldBeExpanded);
expect($aside.hasClass('right-sidebar-collapsed')).toBe(shouldBeCollapsed);
expect($page.hasClass('right-sidebar-collapsed')).toBe(shouldBeCollapsed);
return expect($icon.hasClass('fa-angle-double-left')).toBe(shouldBeCollapsed);
};
describe('RightSidebar', function() {
var fixtureName = 'issues/open-issue.html.raw';
preloadFixtures(fixtureName);
loadJSONFixtures('todos/todos.json');
2016-07-24 20:45:11 +00:00
beforeEach(function() {
loadFixtures(fixtureName);
2016-07-24 20:45:11 +00:00
this.sidebar = new Sidebar;
$aside = $('.right-sidebar');
$page = $('.page-with-sidebar');
$icon = $aside.find('i');
$toggle = $aside.find('.js-sidebar-toggle');
return $labelsIcon = $aside.find('.sidebar-collapsed-icon');
});
it('should expand/collapse the sidebar when arrow is clicked', function() {
assertSidebarState('expanded');
2016-07-24 20:45:11 +00:00
$toggle.click();
assertSidebarState('collapsed');
2016-07-24 20:45:11 +00:00
$toggle.click();
assertSidebarState('expanded');
});
it('should float over the page and when sidebar icons clicked', function() {
$labelsIcon.click();
return assertSidebarState('expanded');
});
2016-08-08 21:19:46 +00:00
it('should collapse when the icon arrow clicked while it is floating on page', function() {
2016-07-24 20:45:11 +00:00
$labelsIcon.click();
assertSidebarState('expanded');
$toggle.click();
return assertSidebarState('collapsed');
});
2016-08-08 21:19:46 +00:00
it('should broadcast todo:toggle event when add todo clicked', function() {
var todos = getJSONFixture('todos/todos.json');
2016-08-08 21:19:46 +00:00
spyOn(jQuery, 'ajax').and.callFake(function() {
var d = $.Deferred();
2017-01-03 22:38:53 +00:00
var response = todos;
2016-08-08 21:19:46 +00:00
d.resolve(response);
return d.promise();
});
var todoToggleSpy = spyOnEvent(document, 'todo:toggle');
2017-03-27 15:02:20 +00:00
$('.issuable-sidebar-header .js-issuable-todo').click();
2016-08-08 21:19:46 +00:00
expect(todoToggleSpy.calls.count()).toEqual(1);
});
it('should not hide collapsed icons', () => {
[].forEach.call(document.querySelectorAll('.sidebar-collapsed-icon'), (el) => {
expect(el.querySelector('.fa, svg').classList.contains('hidden')).toBeFalsy();
});
});
2016-07-24 20:45:11 +00:00
});
}).call(window);