summaryrefslogtreecommitdiff
path: root/spec/javascripts/ide/stores/actions/merge_request_spec.js
blob: b4ec4a0b1737fe36bb161fe91b176807a34fe0d8 (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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
import store from '~/ide/stores';
import service from '~/ide/services';
import { resetStore } from '../../helpers';

describe('IDE store merge request actions', () => {
  beforeEach(() => {
    store.state.projects.abcproject = {
      mergeRequests: {},
    };
  });

  afterEach(() => {
    resetStore(store);
  });

  describe('getMergeRequestData', () => {
    beforeEach(() => {
      spyOn(service, 'getProjectMergeRequestData').and.returnValue(
        Promise.resolve({ data: { title: 'mergerequest' } }),
      );
    });

    it('calls getProjectMergeRequestData service method', done => {
      store
        .dispatch('getMergeRequestData', { projectId: 'abcproject', mergeRequestId: 1 })
        .then(() => {
          expect(service.getProjectMergeRequestData).toHaveBeenCalledWith('abcproject', 1);

          done();
        })
        .catch(done.fail);
    });

    it('sets the Merge Request Object', done => {
      store
        .dispatch('getMergeRequestData', { projectId: 'abcproject', mergeRequestId: 1 })
        .then(() => {
          expect(store.state.projects.abcproject.mergeRequests['1'].title).toBe('mergerequest');
          expect(store.state.currentMergeRequestId).toBe(1);

          done();
        })
        .catch(done.fail);
    });
  });

  describe('getMergeRequestChanges', () => {
    beforeEach(() => {
      spyOn(service, 'getProjectMergeRequestChanges').and.returnValue(
        Promise.resolve({ data: { title: 'mergerequest' } }),
      );

      store.state.projects.abcproject.mergeRequests['1'] = { changes: [] };
    });

    it('calls getProjectMergeRequestChanges service method', done => {
      store
        .dispatch('getMergeRequestChanges', { projectId: 'abcproject', mergeRequestId: 1 })
        .then(() => {
          expect(service.getProjectMergeRequestChanges).toHaveBeenCalledWith('abcproject', 1);

          done();
        })
        .catch(done.fail);
    });

    it('sets the Merge Request Changes Object', done => {
      store
        .dispatch('getMergeRequestChanges', { projectId: 'abcproject', mergeRequestId: 1 })
        .then(() => {
          expect(store.state.projects.abcproject.mergeRequests['1'].changes.title).toBe(
            'mergerequest',
          );
          done();
        })
        .catch(done.fail);
    });
  });

  describe('getMergeRequestVersions', () => {
    beforeEach(() => {
      spyOn(service, 'getProjectMergeRequestVersions').and.returnValue(
        Promise.resolve({ data: [{ id: 789 }] }),
      );

      store.state.projects.abcproject.mergeRequests['1'] = { versions: [] };
    });

    it('calls getProjectMergeRequestVersions service method', done => {
      store
        .dispatch('getMergeRequestVersions', { projectId: 'abcproject', mergeRequestId: 1 })
        .then(() => {
          expect(service.getProjectMergeRequestVersions).toHaveBeenCalledWith('abcproject', 1);

          done();
        })
        .catch(done.fail);
    });

    it('sets the Merge Request Versions Object', done => {
      store
        .dispatch('getMergeRequestVersions', { projectId: 'abcproject', mergeRequestId: 1 })
        .then(() => {
          expect(store.state.projects.abcproject.mergeRequests['1'].versions.length).toBe(1);
          done();
        })
        .catch(done.fail);
    });
  });
});