]> source.dussan.org Git - sonarqube.git/blob
684f2153e933fee7a9707b9a83989f21974c9e24
[sonarqube.git] /
1 /*
2  * SonarQube
3  * Copyright (C) 2009-2023 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 { click } from '../../../../../helpers/testUtils';
23 import PendingPluginsActionNotif from '../PendingPluginsActionNotif';
24
25 jest.mock('../../../../../api/plugins', () => ({
26   cancelPendingPlugins: jest.fn(() => Promise.resolve()),
27 }));
28
29 const cancelPendingPlugins = require('../../../../../api/plugins')
30   .cancelPendingPlugins as jest.Mock<any>;
31
32 beforeEach(() => {
33   cancelPendingPlugins.mockClear();
34 });
35
36 it('should display pending actions', () => {
37   expect(getWrapper()).toMatchSnapshot();
38 });
39
40 it('should not display anything', () => {
41   expect(getWrapper({ pending: { installing: [], updating: [], removing: [] } }).type()).toBeNull();
42 });
43
44 it('should cancel all pending and refresh them', async () => {
45   const refreshPending = jest.fn();
46   const wrapper = getWrapper({ refreshPending });
47   click(wrapper.find('.js-cancel-all'));
48   expect(cancelPendingPlugins).toHaveBeenCalled();
49   await new Promise(setImmediate);
50
51   expect(refreshPending).toHaveBeenCalled();
52 });
53
54 function getWrapper(props = {}) {
55   return shallow(
56     <PendingPluginsActionNotif
57       fetchSystemStatus={jest.fn()}
58       pending={{
59         installing: [
60           {
61             key: 'foo',
62             name: 'Foo',
63             description: 'foo description',
64             version: 'fooversion',
65             implementationBuild: 'foobuild',
66           },
67           {
68             key: 'bar',
69             name: 'Bar',
70             description: 'bar description',
71             version: 'barversion',
72             implementationBuild: 'barbuild',
73           },
74         ],
75         updating: [],
76         removing: [
77           {
78             key: 'baz',
79             name: 'Baz',
80             description: 'baz description',
81             version: 'bazversion',
82             implementationBuild: 'bazbuild',
83           },
84         ],
85       }}
86       refreshPending={() => {}}
87       systemStatus="UP"
88       {...props}
89     />,
90   );
91 }