BigW Consortium Gitlab

right_sidebar_spec.js 2.67 KB
Newer Older
1
/* 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 */
2
/* global Sidebar */
Fatih Acet committed
3

4 5
require('~/right_sidebar');
require('~/extensions/jquery.js');
Clement Ho committed
6

Fatih Acet committed
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
(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() {
35
    var fixtureName = 'issues/open-issue.html.raw';
36
    preloadFixtures(fixtureName);
37 38
    loadJSONFixtures('todos.json');

Fatih Acet committed
39
    beforeEach(function() {
40
      loadFixtures(fixtureName);
Fatih Acet committed
41 42 43 44 45 46 47
      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');
    });
48 49
    it('should expand/collapse the sidebar when arrow is clicked', function() {
      assertSidebarState('expanded');
Fatih Acet committed
50
      $toggle.click();
51
      assertSidebarState('collapsed');
Fatih Acet committed
52 53 54 55 56 57 58
      $toggle.click();
      assertSidebarState('expanded');
    });
    it('should float over the page and when sidebar icons clicked', function() {
      $labelsIcon.click();
      return assertSidebarState('expanded');
    });
Clement Ho committed
59
    it('should collapse when the icon arrow clicked while it is floating on page', function() {
Fatih Acet committed
60 61 62 63 64
      $labelsIcon.click();
      assertSidebarState('expanded');
      $toggle.click();
      return assertSidebarState('collapsed');
    });
Clement Ho committed
65 66

    it('should broadcast todo:toggle event when add todo clicked', function() {
67
      var todos = getJSONFixture('todos.json');
Clement Ho committed
68 69
      spyOn(jQuery, 'ajax').and.callFake(function() {
        var d = $.Deferred();
70
        var response = todos;
Clement Ho committed
71 72 73 74 75 76 77 78 79
        d.resolve(response);
        return d.promise();
      });

      var todoToggleSpy = spyOnEvent(document, 'todo:toggle');

      $('.js-issuable-todo').click();

      expect(todoToggleSpy.calls.count()).toEqual(1);
80
    });
Fatih Acet committed
81 82
  });
}).call(this);