]> source.dussan.org Git - sonarqube.git/blob
0e1cf612c5a9762cd77af4d7eeb8931a65827c64
[sonarqube.git] /
1 /*
2  * SonarQube
3  * Copyright (C) 2009-2021 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 { shallow } from 'enzyme';
21 import * as React from 'react';
22 import { mockMainBranch } from '../../../../helpers/mocks/branch-like';
23 import ProjectBaselineSelector, { ProjectBaselineSelectorProps } from '../ProjectBaselineSelector';
24
25 it('should render correctly', () => {
26   expect(shallowRender()).toMatchSnapshot();
27   expect(
28     shallowRender({
29       branchesEnabled: false,
30       generalSetting: { type: 'NUMBER_OF_DAYS', value: '23' }
31     })
32   ).toMatchSnapshot();
33   expect(
34     shallowRender({ branchesEnabled: false, generalSetting: { type: 'NUMBER_OF_DAYS', value: '' } })
35   ).toMatchSnapshot();
36 });
37
38 it('should not show save button when unchanged', () => {
39   const wrapper = shallowRender({
40     currentSetting: 'PREVIOUS_VERSION',
41     selected: 'PREVIOUS_VERSION',
42     overrideGeneralSetting: true
43   });
44   expect(
45     wrapper
46       .find('SubmitButton')
47       .parent()
48       .hasClass('invisible')
49   ).toBe(true);
50 });
51
52 it('should show save button when changed', () => {
53   const wrapper = shallowRender({
54     currentSetting: 'PREVIOUS_VERSION',
55     selected: 'NUMBER_OF_DAYS',
56     overrideGeneralSetting: true
57   });
58   expect(wrapper.find('SubmitButton')).toHaveLength(1);
59 });
60
61 it('should show save button when value changed', () => {
62   const wrapper = shallowRender({
63     currentSetting: 'NUMBER_OF_DAYS',
64     currentSettingValue: '23',
65     days: '25',
66     selected: 'NUMBER_OF_DAYS',
67     overrideGeneralSetting: true
68   });
69   expect(wrapper.find('SubmitButton')).toHaveLength(1);
70 });
71
72 it('should disable the save button when saving', () => {
73   const wrapper = shallowRender({
74     currentSetting: 'NUMBER_OF_DAYS',
75     currentSettingValue: '25',
76     saving: true,
77     selected: 'PREVIOUS_VERSION',
78     overrideGeneralSetting: true
79   });
80
81   expect(
82     wrapper
83       .find('SubmitButton')
84       .first()
85       .prop('disabled')
86   ).toBe(true);
87 });
88
89 it('should disable the save button when date is invalid', () => {
90   const wrapper = shallowRender({
91     currentSetting: 'PREVIOUS_VERSION',
92     days: 'hello',
93     selected: 'NUMBER_OF_DAYS',
94     overrideGeneralSetting: true
95   });
96
97   expect(
98     wrapper
99       .find('SubmitButton')
100       .first()
101       .prop('disabled')
102   ).toBe(true);
103 });
104
105 function shallowRender(props: Partial<ProjectBaselineSelectorProps> = {}) {
106   return shallow(
107     <ProjectBaselineSelector
108       branchList={[mockMainBranch()]}
109       branchesEnabled={true}
110       component=""
111       days="12"
112       generalSetting={{}}
113       onCancel={jest.fn()}
114       onSelectAnalysis={jest.fn()}
115       onSelectDays={jest.fn()}
116       onSelectReferenceBranch={jest.fn()}
117       onSelectSetting={jest.fn()}
118       onSubmit={jest.fn()}
119       onToggleSpecificSetting={jest.fn()}
120       overrideGeneralSetting={false}
121       referenceBranch="master"
122       saving={false}
123       {...props}
124     />
125   );
126 }