foreman_rh_cloud 2.0.12 → 2.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/controllers/foreman_inventory_upload/accounts_controller.rb +2 -0
- data/app/controllers/foreman_inventory_upload/uploads_controller.rb +18 -0
- data/app/helpers/foreman_inventory_upload_host_helper.rb +2 -3
- data/app/models/concerns/rh_cloud_host.rb +4 -1
- data/app/models/insights_hit.rb +1 -1
- data/app/models/setting/rh_cloud.rb +2 -0
- data/app/overrides/hosts_list.rb +1 -1
- data/app/services/foreman_rh_cloud/cloud_auth.rb +28 -0
- data/app/views/foreman_rh_cloud/react/insights_cloud.html.erb +1 -6
- data/app/views/foreman_rh_cloud/react/inventory_upload.html.erb +1 -1
- data/app/views/hosts/_insights_tab.html.erb +1 -7
- data/app/views/layouts/foreman_rh_cloud/application.html.erb +0 -1
- data/config/routes.rb +2 -0
- data/db/migrate/20201007115752_add_hits_count_to_insights_facets_table.foreman_rh_cloud.rb +5 -0
- data/db/migrate/20201007121540_setup_hits_count_cache.foreman_rh_cloud.rb +10 -0
- data/lib/foreman_inventory_upload/generators/fact_helpers.rb +35 -0
- data/lib/foreman_inventory_upload/generators/json_stream.rb +7 -2
- data/lib/foreman_inventory_upload/generators/queries.rb +2 -0
- data/lib/foreman_inventory_upload/generators/slice.rb +26 -24
- data/lib/foreman_rh_cloud.rb +2 -1
- data/lib/foreman_rh_cloud/engine.rb +3 -2
- data/lib/foreman_rh_cloud/version.rb +1 -1
- data/lib/insights_cloud/async/insights_full_sync.rb +4 -25
- data/lib/inventory_sync/async/inventory_full_sync.rb +2 -23
- data/package.json +1 -1
- data/test/unit/fact_helpers_test.rb +22 -0
- data/test/unit/insights_facet_test.rb +7 -0
- data/test/unit/slice_generator_test.rb +106 -1
- data/webpack/ForemanInventoryUpload/Components/AccountList/AccountList.fixtures.js +14 -1
- data/webpack/ForemanInventoryUpload/Components/AccountList/AccountListActions.js +22 -18
- data/webpack/ForemanInventoryUpload/Components/AccountList/AccountListReducer.js +16 -0
- data/webpack/ForemanInventoryUpload/Components/AccountList/AccountListSelectors.js +6 -0
- data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountListActions.test.js +7 -0
- data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountListReducer.test.js +12 -8
- data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountListSelectors.test.js +9 -0
- data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/__snapshots__/AccountListActions.test.js.snap +19 -0
- data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/__snapshots__/AccountListReducer.test.js.snap +11 -0
- data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/__snapshots__/AccountListSelectors.test.js.snap +6 -0
- data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/AutoUploadSwitcher.fixtures.js +2 -0
- data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/AutoUploadSwitcherActions.js +10 -11
- data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/AutoUploadSwitcherConstants.js +0 -1
- data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/__tests__/AutoUploadSwitcherActions.test.js +12 -2
- data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/__tests__/__snapshots__/AutoUploadSwitcherActions.test.js.snap +17 -0
- data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/ExcludePackagesSwitcher.fixtures.js +1 -0
- data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/ExcludePackagesSwitcher.js +30 -0
- data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/ExcludePackagesSwitcherActions.js +29 -0
- data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/ExcludePackagesSwitcherConstants.js +1 -0
- data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/__tests__/ExcludePackagesSwitcher.test.js +13 -0
- data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/__tests__/ExcludePackagesSwitcherActions.test.js +21 -0
- data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/__tests__/__snapshots__/ExcludePackagesSwitcher.test.js.snap +38 -0
- data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/__tests__/__snapshots__/ExcludePackagesSwitcherActions.test.js.snap +31 -0
- data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/__tests__/__snapshots__/integration.test.js.snap +41 -0
- data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/__tests__/integration.test.js +36 -0
- data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/excludePackagesSwitcher.scss +3 -0
- data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/index.js +20 -0
- data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcher.fixtures.js +2 -1
- data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcher.js +1 -0
- data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcher.scss +3 -0
- data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcherActions.js +10 -11
- data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcherConstants.js +0 -2
- data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/__tests__/HostObfuscationSwitcherActions.test.js +12 -2
- data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/__tests__/__snapshots__/HostObfuscationSwitcherActions.test.js.snap +18 -1
- data/webpack/ForemanInventoryUpload/Components/InventorySettings/InventorySettings.js +4 -0
- data/webpack/ForemanInventoryUpload/Components/InventorySettings/__tests__/__snapshots__/InventorySettings.test.js.snap +2 -0
- data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/IpsObfuscationSwitcher.fixtures.js +1 -0
- data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/IpsObfuscationSwitcher.js +29 -0
- data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/IpsObfuscationSwitcherActions.js +29 -0
- data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/IpsObfuscationSwitcherConstants.js +1 -0
- data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/__tests__/IpsObfuscationSwitcher.test.js +13 -0
- data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/__tests__/IpsObfuscationSwitcherActions.test.js +21 -0
- data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/__tests__/__snapshots__/IpsObfuscationSwitcher.test.js.snap +38 -0
- data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/__tests__/__snapshots__/IpsObfuscationSwitcherActions.test.js.snap +31 -0
- data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/index.js +20 -0
- data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/SyncButton.js +8 -2
- data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/SyncButtonActions.js +9 -11
- data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/SyncButtonConstants.js +1 -1
- data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/SyncButtonReducer.js +2 -2
- data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/__tests__/SyncButtonActions.test.js +18 -0
- data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/__tests__/SyncButtonReducer.test.js +1 -8
- data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/__tests__/__snapshots__/SyncButtonActions.test.js.snap +62 -0
- data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/__tests__/__snapshots__/SyncButtonReducer.test.js.snap +0 -7
- data/webpack/ForemanInventoryUpload/Components/TabHeader/TabHeader.js +6 -1
- data/webpack/ForemanInventoryUpload/Components/Terminal/Terminal.js +2 -4
- data/webpack/ForemanInventoryUpload/ForemanInventoryHelpers.js +8 -0
- data/webpack/InsightsCloudSync/Components/InsightsSettings/InsightsSettingsActions.js +17 -20
- data/webpack/InsightsCloudSync/Components/InsightsSettings/InsightsSettingsConstants.js +0 -6
- data/webpack/InsightsCloudSync/Components/InsightsSettings/InsightsSettingsReducer.js +0 -4
- data/webpack/InsightsCloudSync/Components/InsightsSettings/__tests__/InsightsSettingsActions.test.js +16 -0
- data/webpack/InsightsCloudSync/Components/InsightsSettings/__tests__/InsightsSettingsReducer.test.js +1 -24
- data/webpack/InsightsCloudSync/Components/InsightsSettings/__tests__/__snapshots__/InsightsSettingsActions.test.js.snap +38 -4
- data/webpack/InsightsCloudSync/Components/InsightsSettings/__tests__/__snapshots__/InsightsSettingsReducer.test.js.snap +0 -14
- data/webpack/InsightsCloudSync/InsightsCloudSync.js +2 -4
- data/webpack/InsightsCloudSync/InsightsCloudSync.test.js +1 -3
- data/webpack/InsightsCloudSync/InsightsCloudSyncActions.js +10 -11
- data/webpack/InsightsCloudSync/InsightsCloudSyncConstants.js +0 -2
- data/webpack/InsightsHostDetailsTab/InsightsTab.js +8 -6
- data/webpack/InsightsHostDetailsTab/InsightsTab.scss +1 -1
- data/webpack/InsightsHostDetailsTab/InsightsTabActions.js +9 -8
- data/webpack/InsightsHostDetailsTab/InsightsTabConstants.js +0 -1
- data/webpack/InsightsHostDetailsTab/InsightsTabReducer.js +2 -9
- data/webpack/InsightsHostDetailsTab/__tests__/InsightsTabActions.test.js +7 -1
- data/webpack/InsightsHostDetailsTab/__tests__/InsightsTabReducer.test.js +0 -9
- data/webpack/InsightsHostDetailsTab/__tests__/__snapshots__/InsightsTab.test.js.snap +26 -22
- data/webpack/InsightsHostDetailsTab/__tests__/__snapshots__/InsightsTabActions.test.js.snap +40 -2
- data/webpack/InsightsHostDetailsTab/__tests__/__snapshots__/InsightsTabReducer.test.js.snap +0 -7
- metadata +39 -15
- data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/hostObfuscationSwitcher.scss +0 -0
data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountListSelectors.test.js
CHANGED
|
@@ -5,12 +5,16 @@ import {
|
|
|
5
5
|
selectPollingProcessID,
|
|
6
6
|
selectAutoUploadEnabled,
|
|
7
7
|
selectHostObfuscationEnabled,
|
|
8
|
+
selectCloudToken,
|
|
9
|
+
selectExcludePackages,
|
|
8
10
|
} from '../AccountListSelectors';
|
|
9
11
|
import {
|
|
10
12
|
pollingProcessID,
|
|
11
13
|
accounts,
|
|
12
14
|
autoUploadEnabled,
|
|
13
15
|
hostObfuscationEnabled,
|
|
16
|
+
cloudToken,
|
|
17
|
+
excludePackages,
|
|
14
18
|
} from '../AccountList.fixtures';
|
|
15
19
|
import { rhCloudStateWrapper } from '../../../../ForemanRhCloudTestHelpers';
|
|
16
20
|
|
|
@@ -20,6 +24,8 @@ const state = rhCloudStateWrapper({
|
|
|
20
24
|
pollingProcessID,
|
|
21
25
|
autoUploadEnabled,
|
|
22
26
|
hostObfuscationEnabled,
|
|
27
|
+
cloudToken,
|
|
28
|
+
excludePackages,
|
|
23
29
|
},
|
|
24
30
|
});
|
|
25
31
|
|
|
@@ -32,6 +38,9 @@ const fixtures = {
|
|
|
32
38
|
selectAutoUploadEnabled(state),
|
|
33
39
|
'should return AccountList hostObfuscationEnabled': () =>
|
|
34
40
|
selectHostObfuscationEnabled(state),
|
|
41
|
+
'should return AccountList cloudToken': () => selectCloudToken(state),
|
|
42
|
+
'should return AccountList excludePackages': () =>
|
|
43
|
+
selectExcludePackages(state),
|
|
35
44
|
};
|
|
36
45
|
|
|
37
46
|
describe('AccountList selectors', () =>
|
|
@@ -24,7 +24,9 @@ Array [
|
|
|
24
24
|
},
|
|
25
25
|
"autoUploadEnabled": true,
|
|
26
26
|
"cloudToken": "some-cloud-token",
|
|
27
|
+
"excludePackages": false,
|
|
27
28
|
"hostObfuscationEnabled": true,
|
|
29
|
+
"ipsObfuscationEnabled": true,
|
|
28
30
|
},
|
|
29
31
|
"type": "INVENTORY_ACCOUNT_STATUS_POLLING",
|
|
30
32
|
},
|
|
@@ -32,6 +34,23 @@ Array [
|
|
|
32
34
|
]
|
|
33
35
|
`;
|
|
34
36
|
|
|
37
|
+
exports[`AccountList actions should invoke toast notification upon failure 1`] = `
|
|
38
|
+
Array [
|
|
39
|
+
Array [
|
|
40
|
+
Object {
|
|
41
|
+
"payload": Object {
|
|
42
|
+
"message": Object {
|
|
43
|
+
"message": "test error",
|
|
44
|
+
"sticky": true,
|
|
45
|
+
"type": "error",
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
"type": "TOASTS_ADD",
|
|
49
|
+
},
|
|
50
|
+
],
|
|
51
|
+
]
|
|
52
|
+
`;
|
|
53
|
+
|
|
35
54
|
exports[`AccountList actions should restartProcess 1`] = `
|
|
36
55
|
Array [
|
|
37
56
|
Array [
|
|
@@ -40,7 +40,9 @@ Object {
|
|
|
40
40
|
"autoUploadEnabled": true,
|
|
41
41
|
"cloudToken": "some-cloud-token",
|
|
42
42
|
"error": null,
|
|
43
|
+
"excludePackages": false,
|
|
43
44
|
"hostObfuscationEnabled": true,
|
|
45
|
+
"ipsObfuscationEnabled": true,
|
|
44
46
|
"pollingProcessID": 0,
|
|
45
47
|
}
|
|
46
48
|
`;
|
|
@@ -81,6 +83,15 @@ Object {
|
|
|
81
83
|
}
|
|
82
84
|
`;
|
|
83
85
|
|
|
86
|
+
exports[`AccountList reducer should handle IPS_OBFUSCATION_TOGGLE 1`] = `
|
|
87
|
+
Object {
|
|
88
|
+
"accounts": Object {},
|
|
89
|
+
"error": null,
|
|
90
|
+
"ipsObfuscationEnabled": true,
|
|
91
|
+
"pollingProcessID": 0,
|
|
92
|
+
}
|
|
93
|
+
`;
|
|
94
|
+
|
|
84
95
|
exports[`AccountList reducer should return the initial state 1`] = `
|
|
85
96
|
Object {
|
|
86
97
|
"accounts": Object {},
|
|
@@ -22,6 +22,10 @@ Object {
|
|
|
22
22
|
|
|
23
23
|
exports[`AccountList selectors should return AccountList autoUploadEnabled 1`] = `true`;
|
|
24
24
|
|
|
25
|
+
exports[`AccountList selectors should return AccountList cloudToken 1`] = `"some-cloud-token"`;
|
|
26
|
+
|
|
27
|
+
exports[`AccountList selectors should return AccountList excludePackages 1`] = `false`;
|
|
28
|
+
|
|
25
29
|
exports[`AccountList selectors should return AccountList hostObfuscationEnabled 1`] = `true`;
|
|
26
30
|
|
|
27
31
|
exports[`AccountList selectors should return AccountList pollingProcessID 1`] = `0`;
|
|
@@ -46,6 +50,8 @@ Object {
|
|
|
46
50
|
},
|
|
47
51
|
},
|
|
48
52
|
"autoUploadEnabled": true,
|
|
53
|
+
"cloudToken": "some-cloud-token",
|
|
54
|
+
"excludePackages": false,
|
|
49
55
|
"hostObfuscationEnabled": true,
|
|
50
56
|
"pollingProcessID": 0,
|
|
51
57
|
}
|
data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/AutoUploadSwitcherActions.js
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import API from 'foremanReact/API';
|
|
2
|
+
import { addToast } from 'foremanReact/redux/actions/toasts';
|
|
2
3
|
import { inventoryUrl } from '../../ForemanInventoryHelpers';
|
|
3
|
-
import {
|
|
4
|
-
AUTO_UPLOAD_TOGGLE,
|
|
5
|
-
AUTO_UPLOAD_TOGGLE_ERROR,
|
|
6
|
-
} from './AutoUploadSwitcherConstants';
|
|
4
|
+
import { AUTO_UPLOAD_TOGGLE } from './AutoUploadSwitcherConstants';
|
|
7
5
|
|
|
8
6
|
export const handleToggle = currentAutoUploadEnabled => async dispatch => {
|
|
9
7
|
const toggledAutoUploadEnabled = !currentAutoUploadEnabled;
|
|
@@ -19,12 +17,13 @@ export const handleToggle = currentAutoUploadEnabled => async dispatch => {
|
|
|
19
17
|
autoUploadEnabled,
|
|
20
18
|
},
|
|
21
19
|
});
|
|
22
|
-
} catch (
|
|
23
|
-
dispatch(
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
20
|
+
} catch ({ message }) {
|
|
21
|
+
dispatch(
|
|
22
|
+
addToast({
|
|
23
|
+
sticky: true,
|
|
24
|
+
type: 'error',
|
|
25
|
+
message,
|
|
26
|
+
})
|
|
27
|
+
);
|
|
29
28
|
}
|
|
30
29
|
};
|
|
@@ -1,13 +1,23 @@
|
|
|
1
1
|
import { testActionSnapshotWithFixtures } from '@theforeman/test';
|
|
2
2
|
import API from 'foremanReact/API';
|
|
3
3
|
import { handleToggle } from '../AutoUploadSwitcherActions';
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
handleToggleResponse,
|
|
6
|
+
currentAutoUploadEnabled,
|
|
7
|
+
} from '../AutoUploadSwitcher.fixtures';
|
|
5
8
|
|
|
6
9
|
jest.mock('foremanReact/API');
|
|
7
10
|
API.post.mockImplementation(async () => handleToggleResponse);
|
|
8
11
|
|
|
9
12
|
const fixtures = {
|
|
10
|
-
'should handleToggle': () => handleToggle(),
|
|
13
|
+
'should handleToggle': () => handleToggle(currentAutoUploadEnabled),
|
|
14
|
+
'should handleToggle with error': () => {
|
|
15
|
+
API.post.mockImplementationOnce(() =>
|
|
16
|
+
Promise.reject(new Error('Network error!'))
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
return handleToggle(currentAutoUploadEnabled);
|
|
20
|
+
},
|
|
11
21
|
};
|
|
12
22
|
|
|
13
23
|
describe('AutoUploadSwitcher actions', () =>
|
|
@@ -12,3 +12,20 @@ Array [
|
|
|
12
12
|
],
|
|
13
13
|
]
|
|
14
14
|
`;
|
|
15
|
+
|
|
16
|
+
exports[`AutoUploadSwitcher actions should handleToggle with error 1`] = `
|
|
17
|
+
Array [
|
|
18
|
+
Array [
|
|
19
|
+
Object {
|
|
20
|
+
"payload": Object {
|
|
21
|
+
"message": Object {
|
|
22
|
+
"message": "Network error!",
|
|
23
|
+
"sticky": true,
|
|
24
|
+
"type": "error",
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
"type": "TOASTS_ADD",
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
]
|
|
31
|
+
`;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const handleToggleResponse = { data: { excludePackages: true } };
|
data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/ExcludePackagesSwitcher.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import { Switch, FieldLevelHelp } from 'patternfly-react';
|
|
4
|
+
import { translate as __ } from 'foremanReact/common/I18n';
|
|
5
|
+
import './excludePackagesSwitcher.scss';
|
|
6
|
+
|
|
7
|
+
const ExcludePackagesSwitcher = ({ excludePackages, handleToggle }) => (
|
|
8
|
+
<div className="exclude_packages_switcher">
|
|
9
|
+
<span>Exclude Packages</span>
|
|
10
|
+
<FieldLevelHelp
|
|
11
|
+
content={__('Exclude packages from being uploaded to the Red Hat cloud')}
|
|
12
|
+
/>
|
|
13
|
+
<Switch
|
|
14
|
+
size="mini"
|
|
15
|
+
value={excludePackages}
|
|
16
|
+
onChange={() => handleToggle(excludePackages)}
|
|
17
|
+
/>
|
|
18
|
+
</div>
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
ExcludePackagesSwitcher.propTypes = {
|
|
22
|
+
excludePackages: PropTypes.bool,
|
|
23
|
+
handleToggle: PropTypes.func.isRequired,
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
ExcludePackagesSwitcher.defaultProps = {
|
|
27
|
+
excludePackages: false,
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export default ExcludePackagesSwitcher;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import API from 'foremanReact/API';
|
|
2
|
+
import { addToast } from 'foremanReact/redux/actions/toasts';
|
|
3
|
+
import { inventoryUrl } from '../../ForemanInventoryHelpers';
|
|
4
|
+
import { EXCLUDE_PACKAGES_TOGGLE } from './ExcludePackagesSwitcherConstants';
|
|
5
|
+
|
|
6
|
+
export const handleToggle = currentExcludePackages => async dispatch => {
|
|
7
|
+
const toggledExcludePackages = !currentExcludePackages;
|
|
8
|
+
try {
|
|
9
|
+
const {
|
|
10
|
+
data: { excludePackages },
|
|
11
|
+
} = await API.post(inventoryUrl('installed_packages_inclusion'), {
|
|
12
|
+
value: toggledExcludePackages,
|
|
13
|
+
});
|
|
14
|
+
dispatch({
|
|
15
|
+
type: EXCLUDE_PACKAGES_TOGGLE,
|
|
16
|
+
payload: {
|
|
17
|
+
excludePackages,
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
} catch (error) {
|
|
21
|
+
dispatch(
|
|
22
|
+
addToast({
|
|
23
|
+
sticky: true,
|
|
24
|
+
type: 'error',
|
|
25
|
+
message: error.message,
|
|
26
|
+
})
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const EXCLUDE_PACKAGES_TOGGLE = 'EXCLUDE_PACKAGES_TOGGLE';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { testComponentSnapshotsWithFixtures } from '@theforeman/test';
|
|
2
|
+
import { noop } from 'patternfly-react';
|
|
3
|
+
|
|
4
|
+
import ExcludePackagesSwitcher from '../ExcludePackagesSwitcher';
|
|
5
|
+
|
|
6
|
+
const fixtures = {
|
|
7
|
+
'render with props': { excludePackages: true, handleToggle: noop },
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
describe('ExcludePackagesSwitcher', () => {
|
|
11
|
+
describe('rendering', () =>
|
|
12
|
+
testComponentSnapshotsWithFixtures(ExcludePackagesSwitcher, fixtures));
|
|
13
|
+
});
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { testActionSnapshotWithFixtures } from '@theforeman/test';
|
|
2
|
+
import API from 'foremanReact/API';
|
|
3
|
+
import { handleToggle } from '../ExcludePackagesSwitcherActions';
|
|
4
|
+
import { handleToggleResponse } from '../ExcludePackagesSwitcher.fixtures';
|
|
5
|
+
|
|
6
|
+
jest.mock('foremanReact/API');
|
|
7
|
+
API.post.mockImplementation(async () => handleToggleResponse);
|
|
8
|
+
|
|
9
|
+
const fixtures = {
|
|
10
|
+
'should handleToggle': () => handleToggle(),
|
|
11
|
+
'should invoke toast notification upon failure of handleToggle': () => {
|
|
12
|
+
API.post.mockImplementationOnce(() =>
|
|
13
|
+
Promise.reject(new Error('test error'))
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
return handleToggle();
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
describe('ExcludePackagesSwitcher actions', () =>
|
|
21
|
+
testActionSnapshotWithFixtures(fixtures));
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
+
|
|
3
|
+
exports[`ExcludePackagesSwitcher rendering render with props 1`] = `
|
|
4
|
+
<div
|
|
5
|
+
className="exclude_packages_switcher"
|
|
6
|
+
>
|
|
7
|
+
<span>
|
|
8
|
+
Exclude Packages
|
|
9
|
+
</span>
|
|
10
|
+
<FieldLevelHelp
|
|
11
|
+
buttonClass=""
|
|
12
|
+
content="Exclude packages from being uploaded to the Red Hat cloud"
|
|
13
|
+
placement="top"
|
|
14
|
+
rootClose={true}
|
|
15
|
+
/>
|
|
16
|
+
<Switch
|
|
17
|
+
animate={true}
|
|
18
|
+
baseClass="bootstrap-switch"
|
|
19
|
+
bsSize={null}
|
|
20
|
+
defaultValue={true}
|
|
21
|
+
disabled={false}
|
|
22
|
+
handleWidth="auto"
|
|
23
|
+
inverse={false}
|
|
24
|
+
labelText=" "
|
|
25
|
+
labelWidth="auto"
|
|
26
|
+
offColor="default"
|
|
27
|
+
offText="OFF"
|
|
28
|
+
onChange={[Function]}
|
|
29
|
+
onColor="primary"
|
|
30
|
+
onText="ON"
|
|
31
|
+
readonly={false}
|
|
32
|
+
size="mini"
|
|
33
|
+
tristate={false}
|
|
34
|
+
value={true}
|
|
35
|
+
wrapperClass="wrapper"
|
|
36
|
+
/>
|
|
37
|
+
</div>
|
|
38
|
+
`;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
+
|
|
3
|
+
exports[`ExcludePackagesSwitcher actions should handleToggle 1`] = `
|
|
4
|
+
Array [
|
|
5
|
+
Array [
|
|
6
|
+
Object {
|
|
7
|
+
"payload": Object {
|
|
8
|
+
"excludePackages": true,
|
|
9
|
+
},
|
|
10
|
+
"type": "EXCLUDE_PACKAGES_TOGGLE",
|
|
11
|
+
},
|
|
12
|
+
],
|
|
13
|
+
]
|
|
14
|
+
`;
|
|
15
|
+
|
|
16
|
+
exports[`ExcludePackagesSwitcher actions should invoke toast notification upon failure of handleToggle 1`] = `
|
|
17
|
+
Array [
|
|
18
|
+
Array [
|
|
19
|
+
Object {
|
|
20
|
+
"payload": Object {
|
|
21
|
+
"message": Object {
|
|
22
|
+
"message": "test error",
|
|
23
|
+
"sticky": true,
|
|
24
|
+
"type": "error",
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
"type": "TOASTS_ADD",
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
]
|
|
31
|
+
`;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
+
|
|
3
|
+
exports[`ExcludePackagesSwitcher integration test should flow: switcher was toggled 1`] = `
|
|
4
|
+
Object {
|
|
5
|
+
"action": Array [
|
|
6
|
+
Array [
|
|
7
|
+
Object {
|
|
8
|
+
"payload": Object {
|
|
9
|
+
"excludePackages": false,
|
|
10
|
+
},
|
|
11
|
+
"type": "EXCLUDE_PACKAGES_TOGGLE",
|
|
12
|
+
},
|
|
13
|
+
],
|
|
14
|
+
],
|
|
15
|
+
"state": Object {
|
|
16
|
+
"ForemanRhCloud": Object {
|
|
17
|
+
"InsightsCloudSync": Object {
|
|
18
|
+
"settings": Object {
|
|
19
|
+
"insightsSyncEnabled": false,
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
"hostInsights": Object {
|
|
23
|
+
"hits": Array [],
|
|
24
|
+
},
|
|
25
|
+
"inventoryUpload": Object {
|
|
26
|
+
"accountsList": Object {
|
|
27
|
+
"accounts": Object {},
|
|
28
|
+
"error": null,
|
|
29
|
+
"excludePackages": false,
|
|
30
|
+
"pollingProcessID": 0,
|
|
31
|
+
},
|
|
32
|
+
"dashboard": Object {},
|
|
33
|
+
"inventoryFilter": Object {
|
|
34
|
+
"filterTerm": "",
|
|
35
|
+
},
|
|
36
|
+
"inventorySync": Object {},
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
}
|
|
41
|
+
`;
|
data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/__tests__/integration.test.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { IntegrationTestHelper } from '@theforeman/test';
|
|
3
|
+
import API from 'foremanReact/API';
|
|
4
|
+
import ExcludePackagesSwitcher from '../index';
|
|
5
|
+
import reducers from '../../../../ForemanRhCloudReducers';
|
|
6
|
+
|
|
7
|
+
jest.mock('foremanReact/API');
|
|
8
|
+
API.post.mockImplementation(async () => ({
|
|
9
|
+
data: {
|
|
10
|
+
excludePackages: false,
|
|
11
|
+
},
|
|
12
|
+
}));
|
|
13
|
+
|
|
14
|
+
jest.mock('../../AccountList/AccountListSelectors', () => ({
|
|
15
|
+
selectExcludePackages: jest.fn(() => true),
|
|
16
|
+
}));
|
|
17
|
+
|
|
18
|
+
describe('ExcludePackagesSwitcher integration test', () => {
|
|
19
|
+
it('should flow', async () => {
|
|
20
|
+
const integrationTestHelper = new IntegrationTestHelper(reducers);
|
|
21
|
+
const wrapper = integrationTestHelper.mount(<ExcludePackagesSwitcher />);
|
|
22
|
+
const switcher = wrapper.find('Switch').first();
|
|
23
|
+
switcher.props().onChange();
|
|
24
|
+
await IntegrationTestHelper.flushAllPromises();
|
|
25
|
+
wrapper.update();
|
|
26
|
+
integrationTestHelper.takeStoreAndLastActionSnapshot(
|
|
27
|
+
'switcher was toggled'
|
|
28
|
+
);
|
|
29
|
+
expect(API.post).toBeCalledWith(
|
|
30
|
+
'/foreman_inventory_upload/installed_packages_inclusion',
|
|
31
|
+
{
|
|
32
|
+
value: false,
|
|
33
|
+
}
|
|
34
|
+
);
|
|
35
|
+
});
|
|
36
|
+
});
|