]> source.dussan.org Git - sonarqube.git/blob
658024e7145548bd4d8a7d1dbb557a4b96409684
[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 {
23   mockAzureBindingDefinition,
24   mockGithubBindingDefinition
25 } from '../../../../../helpers/mocks/alm-settings';
26 import {
27   AlmBindingDefinition,
28   AlmKeys,
29   AzureBindingDefinition
30 } from '../../../../../types/alm-settings';
31 import AlmTabRenderer, { AlmTabRendererProps } from '../AlmTabRenderer';
32
33 it('should render correctly for multi-ALM binding', () => {
34   expect(shallowRenderAzure({ loadingAlmDefinitions: true })).toMatchSnapshot(
35     'loading ALM definitions'
36   );
37   expect(shallowRenderAzure({ loadingProjectCount: true })).toMatchSnapshot(
38     'loading project count'
39   );
40   expect(shallowRenderAzure({ submitting: true })).toMatchSnapshot('submitting');
41   expect(shallowRenderAzure()).toMatchSnapshot('loaded');
42   expect(shallowRenderAzure({ editedDefinition: mockAzureBindingDefinition() })).toMatchSnapshot(
43     'editing a definition'
44   );
45 });
46
47 it('should render correctly for single-ALM binding', () => {
48   expect(
49     shallowRenderAzure({ loadingAlmDefinitions: true, multipleAlmEnabled: false })
50   ).toMatchSnapshot();
51   expect(shallowRenderAzure({ multipleAlmEnabled: false })).toMatchSnapshot();
52   expect(
53     shallowRenderAzure({ definitions: [mockAzureBindingDefinition()], multipleAlmEnabled: false })
54   ).toMatchSnapshot();
55 });
56
57 it('should render correctly with validation', () => {
58   const githubProps = {
59     alm: AlmKeys.GitHub,
60     defaultBinding: mockGithubBindingDefinition(),
61     definitions: [mockGithubBindingDefinition()]
62   };
63   expect(shallowRender(githubProps)).toMatchSnapshot();
64   expect(shallowRender({ ...githubProps, definitions: [] })).toMatchSnapshot('empty');
65
66   expect(
67     shallowRender({
68       ...githubProps,
69       editedDefinition: mockGithubBindingDefinition()
70     })
71   ).toMatchSnapshot('create a second');
72
73   expect(
74     shallowRender({
75       ...githubProps,
76       definitions: [],
77       editedDefinition: mockGithubBindingDefinition()
78     })
79   ).toMatchSnapshot('create a first');
80 });
81
82 function shallowRenderAzure(props: Partial<AlmTabRendererProps<AzureBindingDefinition>> = {}) {
83   return shallowRender({
84     defaultBinding: mockAzureBindingDefinition(),
85     definitions: [mockAzureBindingDefinition()],
86     ...props
87   });
88 }
89
90 function shallowRender<B extends AlmBindingDefinition>(
91   props: Partial<AlmTabRendererProps<B>> = {}
92 ) {
93   return shallow(
94     <AlmTabRenderer
95       alm={AlmKeys.Azure}
96       defaultBinding={{} as any}
97       definitions={[]}
98       definitionStatus={{}}
99       form={jest.fn()}
100       help={<div />}
101       loadingAlmDefinitions={false}
102       loadingProjectCount={false}
103       multipleAlmEnabled={true}
104       onCancel={jest.fn()}
105       onCheck={jest.fn()}
106       onCreate={jest.fn()}
107       onDelete={jest.fn()}
108       onEdit={jest.fn()}
109       onSubmit={jest.fn()}
110       submitting={true}
111       success={false}
112       {...props}
113     />
114   );
115 }