]> source.dussan.org Git - sonarqube.git/blob
69327953ec2dfb46dae1a73b77d7e317ed45593b
[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 ProjectActivityGraphs from '../ProjectActivityGraphs';
23
24 const ANALYSES = [
25   {
26     key: 'A1',
27     date: '2016-10-27T16:33:50+0200',
28     events: [
29       {
30         key: 'E1',
31         category: 'VERSION',
32         name: '6.5-SNAPSHOT'
33       }
34     ]
35   },
36   {
37     key: 'A2',
38     date: '2016-10-27T12:21:15+0200',
39     events: []
40   },
41   {
42     key: 'A3',
43     date: '2016-10-26T12:17:29+0200',
44     events: [
45       {
46         key: 'E2',
47         category: 'VERSION',
48         name: '6.4'
49       },
50       {
51         key: 'E3',
52         category: 'OTHER',
53         name: 'foo'
54       }
55     ]
56   }
57 ];
58
59 const METRICS = [{ key: 'code_smells', name: 'Code Smells', type: 'INT' }];
60
61 const DEFAULT_PROPS = {
62   analyses: ANALYSES,
63   leakPeriodDate: '2017-05-16T13:50:02+0200',
64   loading: false,
65   measuresHistory: [
66     {
67       metric: 'code_smells',
68       history: [
69         { date: new Date('2016-10-26T12:17:29+0200'), value: '2286' },
70         { date: new Date('2016-10-27T12:21:15+0200'), value: '1749' },
71         { date: new Date('2016-10-27T16:33:50+0200'), value: '500' }
72       ]
73     }
74   ],
75   metrics: METRICS,
76   query: { category: '', graph: 'overview', project: 'org.sonarsource.sonarqube:sonarqube' },
77   updateQuery: () => {}
78 };
79
80 it('should render correctly the graph and legends', () => {
81   expect(shallow(<ProjectActivityGraphs {...DEFAULT_PROPS} />)).toMatchSnapshot();
82 });
83
84 it('should render correctly with filter history on dates', () => {
85   const wrapper = shallow(
86     <ProjectActivityGraphs
87       {...DEFAULT_PROPS}
88       query={{ ...DEFAULT_PROPS.query, from: '2016-10-27T12:21:15+0200' }}
89     />
90   );
91   expect(wrapper.state()).toMatchSnapshot();
92 });
93
94 it('should show a loading view instead of the graph', () => {
95   expect(
96     shallow(<ProjectActivityGraphs {...DEFAULT_PROPS} loading={true} />).find('.spinner')
97   ).toHaveLength(1);
98 });
99
100 it('should show that there is no history data', () => {
101   expect(
102     shallow(
103       <ProjectActivityGraphs
104         {...DEFAULT_PROPS}
105         measuresHistory={[{ metric: 'code_smells', history: [] }]}
106       />
107     )
108   ).toMatchSnapshot();
109   expect(
110     shallow(
111       <ProjectActivityGraphs
112         {...DEFAULT_PROPS}
113         measuresHistory={[
114           {
115             metric: 'code_smells',
116             history: [{ date: new Date('2016-10-26T12:17:29+0200'), value: undefined }]
117           }
118         ]}
119         query={{
120           category: '',
121           graph: 'custom',
122           project: 'org.sonarsource.sonarqube:sonarqube',
123           customMetrics: ['code_smells']
124         }}
125       />
126     )
127   ).toMatchSnapshot();
128 });