Welcome to mirror list, hosted at ThFree Co, Russian Federation.

discussion_counter_spec.js « components « notes « javascripts « spec - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 9c7aed43a3bb6111d394e14ca18c82ecac8f9884 (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
import Vue from 'vue';
import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import createStore from '~/notes/stores';
import DiscussionCounter from '~/notes/components/discussion_counter.vue';
import { noteableDataMock, discussionMock, notesDataMock } from '../mock_data';

describe('DiscussionCounter component', () => {
  let store;
  let vm;
  const notes = { currentDiscussionId: null };

  beforeEach(() => {
    window.mrTabs = {};

    const Component = Vue.extend(DiscussionCounter);

    store = createStore();
    store.dispatch('setNoteableData', noteableDataMock);
    store.dispatch('setNotesData', notesDataMock);

    vm = createComponentWithStore(Component, store);
  });

  afterEach(() => {
    vm.$destroy();
  });

  describe('methods', () => {
    describe('jumpToNextDiscussion', () => {
      it('expands unresolved discussion', () => {
        window.mrTabs.currentAction = 'show';

        spyOn(vm, 'expandDiscussion').and.stub();
        const discussions = [
          {
            ...discussionMock,
            id: discussionMock.id,
            notes: [{ ...discussionMock.notes[0], resolvable: true, resolved: true }],
            resolved: true,
          },
          {
            ...discussionMock,
            id: discussionMock.id + 1,
            notes: [{ ...discussionMock.notes[0], resolvable: true, resolved: false }],
            resolved: false,
          },
        ];
        const firstDiscussionId = discussionMock.id + 1;
        store.replaceState({
          ...store.state,
          discussions,
          notes,
        });
        vm.jumpToNextDiscussion();

        expect(vm.expandDiscussion).toHaveBeenCalledWith({ discussionId: firstDiscussionId });
      });

      it('jumps to next unresolved discussion from diff tab if all diff discussions are resolved', () => {
        window.mrTabs.currentAction = 'diff';
        spyOn(vm, 'switchToDiscussionsTabAndJumpTo').and.stub();

        const unresolvedId = discussionMock.id + 1;
        const discussions = [
          {
            ...discussionMock,
            id: discussionMock.id,
            diff_discussion: true,
            notes: [{ ...discussionMock.notes[0], resolvable: true, resolved: true }],
            resolved: true,
          },
          {
            ...discussionMock,
            id: unresolvedId,
            notes: [{ ...discussionMock.notes[0], resolvable: true, resolved: false }],
            resolved: false,
          },
        ];
        store.replaceState({
          ...store.state,
          discussions,
          notes,
        });
        vm.jumpToNextDiscussion();

        expect(vm.switchToDiscussionsTabAndJumpTo).toHaveBeenCalledWith(unresolvedId);
      });
    });
  });
});