3 * Copyright (C) 2009-2023 SonarSource SA
4 * mailto:info AT sonarsource DOT com
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.
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.
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.
20 import { shallow } from 'enzyme';
21 import * as React from 'react';
22 import { click } from '../../../../../helpers/testUtils';
23 import PendingPluginsActionNotif from '../PendingPluginsActionNotif';
25 jest.mock('../../../../../api/plugins', () => ({
26 cancelPendingPlugins: jest.fn(() => Promise.resolve()),
29 const cancelPendingPlugins = require('../../../../../api/plugins')
30 .cancelPendingPlugins as jest.Mock<any>;
33 cancelPendingPlugins.mockClear();
36 it('should display pending actions', () => {
37 expect(getWrapper()).toMatchSnapshot();
40 it('should not display anything', () => {
41 expect(getWrapper({ pending: { installing: [], updating: [], removing: [] } }).type()).toBeNull();
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);
51 expect(refreshPending).toHaveBeenCalled();
54 function getWrapper(props = {}) {
56 <PendingPluginsActionNotif
57 fetchSystemStatus={jest.fn()}
63 description: 'foo description',
64 version: 'fooversion',
65 implementationBuild: 'foobuild',
70 description: 'bar description',
71 version: 'barversion',
72 implementationBuild: 'barbuild',
80 description: 'baz description',
81 version: 'bazversion',
82 implementationBuild: 'bazbuild',
86 refreshPending={() => {}}