summaryrefslogtreecommitdiff
path: root/spec/javascripts/comment_type_toggle_spec.js
blob: d68c221f0ea8fb48ddc91390e14fcbcb5124878a (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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import CommentTypeToggle from '~/comment_type_toggle';
import DropLab from '@gitlab-org/droplab';
import InputSetter from '@gitlab-org/droplab/dist/plugins/InputSetter';

describe('CommentTypeToggle', function () {
  describe('class constructor', function () {
    beforeEach(function () {
      this.trigger = {};
      this.list = {};
      this.input = {};
      this.button = {};

      this.commentTypeToggle = new CommentTypeToggle(
        this.trigger,
        this.list,
        this.input,
        this.button,
      );
    });

    it('should set .trigger', function () {
      expect(this.commentTypeToggle.trigger).toBe(this.trigger);
    });

    it('should set .list', function () {
      expect(this.commentTypeToggle.list).toBe(this.list);
    });

    it('should set .input', function () {
      expect(this.commentTypeToggle.input).toBe(this.input);
    });

    it('should set .button', function () {
      expect(this.commentTypeToggle.button).toBe(this.button);
    });
  });

  describe('initDroplab', function () {
    beforeEach(function () {
      this.commentTypeToggle = {
        trigger: {},
        list: {},
        input: {},
        button: {},
      };

      this.droplab = jasmine.createSpyObj('droplab', ['addHook']);

      spyOn(window, 'DropLab').and.returnValue(this.droplab);

      this.initDroplab = CommentTypeToggle.prototype.initDroplab.call(this.commentTypeToggle);
    });

    it('should instantiate a DropLab instance', function () {
      expect(window.DropLab).toHaveBeenCalled();
    });

    it('should set .droplab', function () {
      expect(this.commentTypeToggle.droplab).toBe(this.droplab);
    });

    it('should call DropLab.prototype.addHook', function () {
      expect(this.droplab.addHook).toHaveBeenCalledWith(
        this.commentTypeToggle.trigger,
        this.commentTypeToggle.list,
        [InputSetter],
        {
          InputSetter: [{
            input: this.commentTypeToggle.input,
            valueAttribute: 'data-value',
          }, {
            input: this.commentTypeToggle.button,
            valueAttribute: 'data-button-text',
          }],
        },
      );
    });
  });
});