]> source.dussan.org Git - sonarqube.git/blob
c3d7833dd5dca8eef347e67f37d60de06ef1857f
[sonarqube.git] /
1 /*
2  * SonarQube
3  * Copyright (C) 2009-2017 SonarSource SA
4  * mailto:info AT sonarsource DOT com
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 3 of the License, or (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public License
17  * along with this program; if not, write to the Free Software Foundation,
18  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
19  */
20 import React from 'react';
21 import { shallow } from 'enzyme';
22 import ProjectActivityAnalysesList from '../ProjectActivityAnalysesList';
23 import { DEFAULT_GRAPH } from '../../utils';
24
25 const ANALYSES = [
26   {
27     key: 'A1',
28     date: new Date('2016-10-27T16:33:50+0000'),
29     events: [
30       {
31         key: 'E1',
32         category: 'VERSION',
33         name: '6.5-SNAPSHOT'
34       }
35     ]
36   },
37   {
38     key: 'A2',
39     date: new Date('2016-10-27T12:21:15+0000'),
40     events: []
41   },
42   {
43     key: 'A3',
44     date: new Date('2016-10-26T12:17:29+0000'),
45     events: [
46       {
47         key: 'E2',
48         category: 'VERSION',
49         name: '6.4'
50       },
51       {
52         key: 'E3',
53         category: 'OTHER',
54         name: 'foo'
55       }
56     ]
57   },
58   {
59     key: 'A4',
60     date: new Date('2016-10-24T16:33:50+0000'),
61     events: [
62       {
63         key: 'E1',
64         category: 'QUALITY_GATE',
65         name: 'Quality gate changed to red...'
66       }
67     ]
68   }
69 ];
70
71 const DEFAULT_PROPS = {
72   addCustomEvent: () => {},
73   addVersion: () => {},
74   analyses: ANALYSES,
75   analysesLoading: false,
76   canAdmin: false,
77   changeEvent: () => {},
78   deleteAnalysis: () => {},
79   deleteEvent: () => {},
80   loading: false,
81   project: { qualifier: 'TRK' },
82   query: { category: '', graph: DEFAULT_GRAPH, project: 'org.sonarsource.sonarqube:sonarqube' },
83   updateQuery: () => {}
84 };
85
86 jest.mock('moment', () => date => ({
87   startOf: () => {
88     return {
89       valueOf: () => `${date.getFullYear()}-${date.getMonth()}-${date.getDate()}`
90     };
91   },
92   toDate: () => new Date(date),
93   format: format => `Formated.${format}:${date}`
94 }));
95
96 window.Number = val => val;
97
98 it('should render correctly', () => {
99   expect(shallow(<ProjectActivityAnalysesList {...DEFAULT_PROPS} />)).toMatchSnapshot();
100 });
101
102 it('should correctly filter analyses by category', () => {
103   const wrapper = shallow(<ProjectActivityAnalysesList {...DEFAULT_PROPS} />);
104   wrapper.setProps({ query: { ...DEFAULT_PROPS.query, category: 'QUALITY_GATE' } });
105   expect(wrapper).toMatchSnapshot();
106 });
107
108 it('should correctly filter analyses by date range', () => {
109   const wrapper = shallow(<ProjectActivityAnalysesList {...DEFAULT_PROPS} />);
110   wrapper.setProps({
111     query: {
112       ...DEFAULT_PROPS.query,
113       from: new Date('2016-10-27T16:33:50+0000'),
114       to: new Date('2016-10-27T16:33:50+0000')
115     }
116   });
117   expect(wrapper).toMatchSnapshot();
118 });