summaryrefslogtreecommitdiff
path: root/spec/frontend/contributors/store/getters_spec.js
blob: a4202e0ef4b6dd54189021096483dc6e70fc5514 (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
import * as getters from '~/contributors/stores/getters';

describe('Contributors Store Getters', () => {
  const state = {};

  describe('showChart', () => {
    it('should NOT show chart if loading', () => {
      state.loading = true;

      expect(getters.showChart(state)).toEqual(false);
    });

    it('should NOT show chart there is not data', () => {
      state.loading = false;
      state.chartData = null;

      expect(getters.showChart(state)).toEqual(false);
    });

    it('should show the chart in case loading complated and there is data', () => {
      state.loading = false;
      state.chartData = true;

      expect(getters.showChart(state)).toEqual(true);
    });

    describe('parsedData', () => {
      let parsed;

      beforeAll(() => {
        state.chartData = [
          { author_name: 'John Smith', author_email: 'jawnnypoo@gmail.com', date: '2019-05-05' },
          { author_name: 'John', author_email: 'jawnnypoo@gmail.com', date: '2019-05-05' },
          { author_name: 'Carlson', author_email: 'carlson123@gitlab.com', date: '2019-03-03' },
          { author_name: 'Carlson', author_email: 'carlson123@gmail.com', date: '2019-05-05' },
          { author_name: 'John', author_email: 'jawnnypoo@gmail.com', date: '2019-04-04' },
          { author_name: 'Johan', author_email: 'jawnnypoo@gmail.com', date: '2019-04-04' },
          { author_name: 'John', author_email: 'jawnnypoo@gmail.com', date: '2019-03-03' },
        ];
        parsed = getters.parsedData(state);
      });

      it('should group contributions by date', () => {
        expect(parsed.total).toMatchObject({ '2019-05-05': 3, '2019-03-03': 2, '2019-04-04': 2 });
      });

      it('should group contributions by email and use most recent name', () => {
        expect(parsed.byAuthorEmail).toMatchObject({
          'carlson123@gmail.com': {
            name: 'Carlson',
            commits: 1,
            dates: {
              '2019-05-05': 1,
            },
          },
          'carlson123@gitlab.com': {
            name: 'Carlson',
            commits: 1,
            dates: {
              '2019-03-03': 1,
            },
          },
          'jawnnypoo@gmail.com': {
            name: 'John Smith',
            commits: 5,
            dates: {
              '2019-03-03': 1,
              '2019-04-04': 2,
              '2019-05-05': 2,
            },
          },
        });
      });
    });
  });
});