87 lines
2.6 KiB
JavaScript
87 lines
2.6 KiB
JavaScript
require('~/sidebar');
|
|
|
|
(() => {
|
|
describe('Project dashboard page', () => {
|
|
let $pageWithSidebar = null;
|
|
let $sidebarToggle = null;
|
|
let sidebar = null;
|
|
const fixtureTemplate = 'projects/dashboard.html.raw';
|
|
|
|
const assertSidebarStateExpanded = (shouldBeExpanded) => {
|
|
expect(sidebar.isExpanded).toBe(shouldBeExpanded);
|
|
expect($pageWithSidebar.hasClass('page-sidebar-expanded')).toBe(shouldBeExpanded);
|
|
};
|
|
|
|
preloadFixtures(fixtureTemplate);
|
|
beforeEach(() => {
|
|
loadFixtures(fixtureTemplate);
|
|
|
|
$pageWithSidebar = $('.page-with-sidebar');
|
|
$sidebarToggle = $('.toggle-nav-collapse');
|
|
|
|
// otherwise instantiating the Sidebar for the second time
|
|
// won't do anything, as the Sidebar is a singleton class
|
|
gl.Sidebar.singleton = null;
|
|
sidebar = new gl.Sidebar();
|
|
});
|
|
|
|
it('can show the sidebar when the toggler is clicked', () => {
|
|
assertSidebarStateExpanded(false);
|
|
$sidebarToggle.click();
|
|
assertSidebarStateExpanded(true);
|
|
});
|
|
|
|
it('should dismiss the sidebar when clone button clicked', () => {
|
|
$sidebarToggle.click();
|
|
assertSidebarStateExpanded(true);
|
|
|
|
const cloneButton = $('.project-clone-holder a.clone-dropdown-btn');
|
|
cloneButton.click();
|
|
assertSidebarStateExpanded(false);
|
|
});
|
|
|
|
it('should dismiss the sidebar when download button clicked', () => {
|
|
$sidebarToggle.click();
|
|
assertSidebarStateExpanded(true);
|
|
|
|
const downloadButton = $('.project-action-button .btn:has(i.fa-download)');
|
|
downloadButton.click();
|
|
assertSidebarStateExpanded(false);
|
|
});
|
|
|
|
it('should dismiss the sidebar when add button clicked', () => {
|
|
$sidebarToggle.click();
|
|
assertSidebarStateExpanded(true);
|
|
|
|
const addButton = $('.project-action-button .btn:has(i.fa-plus)');
|
|
addButton.click();
|
|
assertSidebarStateExpanded(false);
|
|
});
|
|
|
|
it('should dismiss the sidebar when notification button clicked', () => {
|
|
$sidebarToggle.click();
|
|
assertSidebarStateExpanded(true);
|
|
|
|
const notifButton = $('.js-notification-toggle-btns .notifications-btn');
|
|
notifButton.click();
|
|
assertSidebarStateExpanded(false);
|
|
});
|
|
|
|
it('should dismiss the sidebar when clicking on the body', () => {
|
|
$sidebarToggle.click();
|
|
assertSidebarStateExpanded(true);
|
|
|
|
$('body').click();
|
|
assertSidebarStateExpanded(false);
|
|
});
|
|
|
|
it('should dismiss the sidebar when clicking on the project description header', () => {
|
|
$sidebarToggle.click();
|
|
assertSidebarStateExpanded(true);
|
|
|
|
$('.project-home-panel').click();
|
|
assertSidebarStateExpanded(false);
|
|
});
|
|
});
|
|
})();
|