]> source.dussan.org Git - sonarqube.git/blob
762c2d5efe3186225f42916ab1052e2168a57cc2
[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
24 const ANALYSES = [
25   {
26     key: 'A1',
27     date: new Date('2016-10-27T16:33:50+0000'),
28     events: [
29       {
30         key: 'E1',
31         category: 'VERSION',
32         name: '6.5-SNAPSHOT'
33       }
34     ]
35   },
36   {
37     key: 'A2',
38     date: new Date('2016-10-27T12:21:15+0000'),
39     events: []
40   },
41   {
42     key: 'A3',
43     date: new Date('2016-10-26T12:17:29+0000'),
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     key: 'A4',
59     date: new Date('2016-10-24T16:33:50+0000'),
60     events: [
61       {
62         key: 'E1',
63         category: 'QUALITY_GATE',
64         name: 'Quality gate changed to red...'
65       }
66     ]
67   }
68 ];
69
70 const DEFAULT_PROPS = {
71   addCustomEvent: () => {},
72   addVersion: () => {},
73   analyses: ANALYSES,
74   analysesLoading: false,
75   canAdmin: false,
76   changeEvent: () => {},
77   deleteAnalysis: () => {},
78   deleteEvent: () => {},
79   loading: false,
80   query: { category: '', graph: 'overview', project: 'org.sonarsource.sonarqube:sonarqube' },
81   updateQuery: () => {}
82 };
83
84 jest.mock('moment', () => date => ({
85   startOf: () => {
86     return {
87       valueOf: () => `${date.getFullYear()}-${date.getMonth()}-${date.getDate()}`
88     };
89   },
90   toDate: () => new Date(date),
91   format: format => `Formated.${format}:${date}`
92 }));
93
94 window.Number = val => val;
95
96 it('should render correctly', () => {
97   expect(shallow(<ProjectActivityAnalysesList {...DEFAULT_PROPS} />)).toMatchSnapshot();
98 });
99
100 it('should correctly filter analyses by category', () => {
101   const wrapper = shallow(<ProjectActivityAnalysesList {...DEFAULT_PROPS} />);
102   wrapper.setProps({ query: { ...DEFAULT_PROPS.query, category: 'QUALITY_GATE' } });
103   expect(wrapper).toMatchSnapshot();
104 });
105
106 it('should correctly filter analyses by date range', () => {
107   const wrapper = shallow(<ProjectActivityAnalysesList {...DEFAULT_PROPS} />);
108   wrapper.setProps({
109     query: {
110       ...DEFAULT_PROPS.query,
111       from: new Date('2016-10-27T16:33:50+0000'),
112       to: new Date('2016-10-27T16:33:50+0000')
113     }
114   });
115   expect(wrapper).toMatchSnapshot();
116 });