summaryrefslogtreecommitdiff
path: root/spec/javascripts/project_title_spec.js
blob: cc336180ff77fd90c400e4eae850a6f9c0e20e3b (plain)
1
2
3
4
5
6
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/* global Project */

import 'select2/select2';
import '~/gl_dropdown';
import '~/api';
import '~/project_select';
import '~/project';

describe('Project Title', () => {
  preloadFixtures('issues/open-issue.html.raw');
  loadJSONFixtures('projects.json');

  beforeEach(() => {
    loadFixtures('issues/open-issue.html.raw');

    window.gon = {};
    window.gon.api_version = 'v3';

    // eslint-disable-next-line no-new
    new Project();
  });

  describe('project list', () => {
    let reqUrl;
    let reqData;

    beforeEach(() => {
      const fakeResponseData = getJSONFixture('projects.json');
      spyOn(jQuery, 'ajax').and.callFake((req) => {
        const def = $.Deferred();
        reqUrl = req.url;
        reqData = req.data;
        def.resolve(fakeResponseData);
        return def.promise();
      });
    });

    it('toggles dropdown', () => {
      const $menu = $('.js-dropdown-menu-projects');
      $('.js-projects-dropdown-toggle').click();
      expect($menu).toHaveClass('open');
      expect(reqUrl).toBe('/api/v3/projects.json?simple=true');
      expect(reqData).toEqual({
        search: '',
        order_by: 'last_activity_at',
        per_page: 20,
        membership: true,
      });
      $menu.find('.dropdown-menu-close-icon').click();
      expect($menu).not.toHaveClass('open');
    });
  });

  afterEach(() => {
    window.gon = {};
  });
});