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
|
@@ -8,6 +8,24 @@ API.post.mockImplementation(async () => successResponse);
|
|
|
8
8
|
|
|
9
9
|
const fixtures = {
|
|
10
10
|
'should handleSync': () => handleSync(),
|
|
11
|
+
'should handleSync with error message': () => {
|
|
12
|
+
API.post.mockImplementationOnce(() =>
|
|
13
|
+
Promise.reject(new Error('Network error!'))
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
return handleSync();
|
|
17
|
+
},
|
|
18
|
+
'should handleSync with custom error message': () => {
|
|
19
|
+
API.post.mockImplementationOnce(() => {
|
|
20
|
+
const customError = new Error('Server error!');
|
|
21
|
+
customError.response = {
|
|
22
|
+
data: { message: 'Custom error to display in a toast' },
|
|
23
|
+
};
|
|
24
|
+
return Promise.reject(customError);
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
return handleSync();
|
|
28
|
+
},
|
|
11
29
|
};
|
|
12
30
|
|
|
13
31
|
describe('SyncButton actions', () => testActionSnapshotWithFixtures(fixtures));
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { testReducerSnapshotWithFixtures } from '@theforeman/test';
|
|
2
2
|
import reducer from '../SyncButtonReducer';
|
|
3
|
-
import { syncHosts, disconnectHosts
|
|
3
|
+
import { syncHosts, disconnectHosts } from './SyncButtonFixtures';
|
|
4
4
|
import {
|
|
5
5
|
INVENTORY_SYNC_REQUEST,
|
|
6
6
|
INVENTORY_SYNC_SUCCESS,
|
|
7
|
-
INVENTORY_SYNC_FAILURE,
|
|
8
7
|
} from '../SyncButtonConstants';
|
|
9
8
|
|
|
10
9
|
const fixtures = {
|
|
@@ -21,12 +20,6 @@ const fixtures = {
|
|
|
21
20
|
payload: { syncHosts, disconnectHosts },
|
|
22
21
|
},
|
|
23
22
|
},
|
|
24
|
-
'should handle INVENTORY_SYNC_FAILURE': {
|
|
25
|
-
action: {
|
|
26
|
-
type: INVENTORY_SYNC_FAILURE,
|
|
27
|
-
payload: { error },
|
|
28
|
-
},
|
|
29
|
-
},
|
|
30
23
|
};
|
|
31
24
|
|
|
32
25
|
describe('AccountList reducer', () =>
|
|
@@ -34,3 +34,65 @@ Array [
|
|
|
34
34
|
],
|
|
35
35
|
]
|
|
36
36
|
`;
|
|
37
|
+
|
|
38
|
+
exports[`SyncButton actions should handleSync with custom error message 1`] = `
|
|
39
|
+
Array [
|
|
40
|
+
Array [
|
|
41
|
+
Object {
|
|
42
|
+
"payload": Object {},
|
|
43
|
+
"type": "INVENTORY_SYNC_REQUEST",
|
|
44
|
+
},
|
|
45
|
+
],
|
|
46
|
+
Array [
|
|
47
|
+
Object {
|
|
48
|
+
"payload": Object {
|
|
49
|
+
"error": "Server error!",
|
|
50
|
+
},
|
|
51
|
+
"type": "INVENTORY_SYNC_ERROR",
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
Array [
|
|
55
|
+
Object {
|
|
56
|
+
"payload": Object {
|
|
57
|
+
"message": Object {
|
|
58
|
+
"message": "Custom error to display in a toast",
|
|
59
|
+
"sticky": true,
|
|
60
|
+
"type": "error",
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
"type": "TOASTS_ADD",
|
|
64
|
+
},
|
|
65
|
+
],
|
|
66
|
+
]
|
|
67
|
+
`;
|
|
68
|
+
|
|
69
|
+
exports[`SyncButton actions should handleSync with error message 1`] = `
|
|
70
|
+
Array [
|
|
71
|
+
Array [
|
|
72
|
+
Object {
|
|
73
|
+
"payload": Object {},
|
|
74
|
+
"type": "INVENTORY_SYNC_REQUEST",
|
|
75
|
+
},
|
|
76
|
+
],
|
|
77
|
+
Array [
|
|
78
|
+
Object {
|
|
79
|
+
"payload": Object {
|
|
80
|
+
"error": "Network error!",
|
|
81
|
+
},
|
|
82
|
+
"type": "INVENTORY_SYNC_ERROR",
|
|
83
|
+
},
|
|
84
|
+
],
|
|
85
|
+
Array [
|
|
86
|
+
Object {
|
|
87
|
+
"payload": Object {
|
|
88
|
+
"message": Object {
|
|
89
|
+
"message": "Network error!",
|
|
90
|
+
"sticky": true,
|
|
91
|
+
"type": "error",
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
"type": "TOASTS_ADD",
|
|
95
|
+
},
|
|
96
|
+
],
|
|
97
|
+
]
|
|
98
|
+
`;
|
|
@@ -1,12 +1,5 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
|
-
exports[`AccountList reducer should handle INVENTORY_SYNC_FAILURE 1`] = `
|
|
4
|
-
Object {
|
|
5
|
-
"error": "some-error",
|
|
6
|
-
"status": "ERROR",
|
|
7
|
-
}
|
|
8
|
-
`;
|
|
9
|
-
|
|
10
3
|
exports[`AccountList reducer should handle INVENTORY_SYNC_REQUEST 1`] = `
|
|
11
4
|
Object {
|
|
12
5
|
"error": null,
|
|
@@ -2,6 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import { noop, Grid, Button, Icon } from 'patternfly-react';
|
|
4
4
|
import { sprintf, translate as __ } from 'foremanReact/common/I18n';
|
|
5
|
+
import { isExitCodeLoading } from '../../ForemanInventoryHelpers';
|
|
5
6
|
import './tabHeader.scss';
|
|
6
7
|
|
|
7
8
|
const TabHeader = ({ exitCode, onRestart, onDownload, toggleFullScreen }) => (
|
|
@@ -12,7 +13,11 @@ const TabHeader = ({ exitCode, onRestart, onDownload, toggleFullScreen }) => (
|
|
|
12
13
|
<Grid.Col sm={6}>
|
|
13
14
|
<div className="tab-action-buttons">
|
|
14
15
|
{onRestart ? (
|
|
15
|
-
<Button
|
|
16
|
+
<Button
|
|
17
|
+
bsStyle="primary"
|
|
18
|
+
onClick={onRestart}
|
|
19
|
+
disabled={isExitCodeLoading(exitCode)}
|
|
20
|
+
>
|
|
16
21
|
{__('Restart')}
|
|
17
22
|
</Button>
|
|
18
23
|
) : null}
|
|
@@ -4,6 +4,7 @@ import { Grid, Spinner } from 'patternfly-react';
|
|
|
4
4
|
import { isEqual } from 'lodash';
|
|
5
5
|
import './terminal.scss';
|
|
6
6
|
import { isTerminalScrolledDown } from './TerminalHelper';
|
|
7
|
+
import { isExitCodeLoading } from '../../ForemanInventoryHelpers';
|
|
7
8
|
|
|
8
9
|
class Terminal extends React.Component {
|
|
9
10
|
constructor(props) {
|
|
@@ -67,10 +68,7 @@ class Terminal extends React.Component {
|
|
|
67
68
|
} else {
|
|
68
69
|
modifiedLogs = <p>{logs}</p>;
|
|
69
70
|
}
|
|
70
|
-
const
|
|
71
|
-
const loading =
|
|
72
|
-
exitCodeLowerCase.indexOf('running') !== -1 ||
|
|
73
|
-
exitCodeLowerCase.indexOf('restarting') !== -1;
|
|
71
|
+
const loading = isExitCodeLoading(exitCode);
|
|
74
72
|
return (
|
|
75
73
|
<Grid.Col sm={12}>
|
|
76
74
|
<div
|
|
@@ -15,3 +15,11 @@ export const getActionsHistoryUrl = () =>
|
|
|
15
15
|
foremanUrl(
|
|
16
16
|
'/foreman_tasks/tasks?search=action++%3D++ForemanInventoryUpload%3A%3AAsync%3A%3AGenerateReportJob+or+action++%3D++ForemanInventoryUpload%3A%3AAsync%3A%3AGenerateAllReportsJob&page=1'
|
|
17
17
|
);
|
|
18
|
+
|
|
19
|
+
export const isExitCodeLoading = exitCode => {
|
|
20
|
+
const exitCodeLC = exitCode.toLowerCase();
|
|
21
|
+
return (
|
|
22
|
+
exitCodeLC.indexOf('running') !== -1 ||
|
|
23
|
+
exitCodeLC.indexOf('restarting') !== -1
|
|
24
|
+
);
|
|
25
|
+
};
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import API from 'foremanReact/API';
|
|
2
|
+
import { addToast } from 'foremanReact/redux/actions/toasts';
|
|
2
3
|
import { insightsCloudUrl } from '../../InsightsCloudSyncHelpers';
|
|
3
4
|
import {
|
|
4
5
|
INSIGHTS_SYNC_SETTING_SET,
|
|
5
|
-
INSIGHTS_SYNC_SETTING_SET_FAILURE,
|
|
6
6
|
INSIGHTS_SYNC_SETTINGS_GET_SUCCESS,
|
|
7
|
-
INSIGHTS_SYNC_SETTINGS_GET_FAILURE,
|
|
8
7
|
} from './InsightsSettingsConstants';
|
|
9
8
|
|
|
10
9
|
export const getInsightsSyncSettings = () => async dispatch => {
|
|
@@ -20,15 +19,14 @@ export const getInsightsSyncSettings = () => async dispatch => {
|
|
|
20
19
|
},
|
|
21
20
|
},
|
|
22
21
|
});
|
|
23
|
-
} catch (
|
|
24
|
-
dispatch(
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
});
|
|
22
|
+
} catch ({ message }) {
|
|
23
|
+
dispatch(
|
|
24
|
+
addToast({
|
|
25
|
+
sticky: true,
|
|
26
|
+
type: 'error',
|
|
27
|
+
message,
|
|
28
|
+
})
|
|
29
|
+
);
|
|
32
30
|
}
|
|
33
31
|
};
|
|
34
32
|
|
|
@@ -47,14 +45,13 @@ export const setInsightsSyncEnabled = currentInsightsSyncEnabled => async dispat
|
|
|
47
45
|
},
|
|
48
46
|
},
|
|
49
47
|
});
|
|
50
|
-
} catch (
|
|
51
|
-
dispatch(
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
});
|
|
48
|
+
} catch ({ message }) {
|
|
49
|
+
dispatch(
|
|
50
|
+
addToast({
|
|
51
|
+
sticky: true,
|
|
52
|
+
type: 'error',
|
|
53
|
+
message,
|
|
54
|
+
})
|
|
55
|
+
);
|
|
59
56
|
}
|
|
60
57
|
};
|
|
@@ -1,10 +1,4 @@
|
|
|
1
1
|
export const INSIGHTS_SYNC_SETTING_SET = 'INSIGHTS_SYNC_SETTING_SET';
|
|
2
2
|
|
|
3
|
-
export const INSIGHTS_SYNC_SETTING_SET_FAILURE =
|
|
4
|
-
'INSIGHTS_SYNC_SETTING_SET_FAILURE';
|
|
5
|
-
|
|
6
3
|
export const INSIGHTS_SYNC_SETTINGS_GET_SUCCESS =
|
|
7
4
|
'INSIGHTS_SYNC_SETTINGS_GET_SUCCESS';
|
|
8
|
-
|
|
9
|
-
export const INSIGHTS_SYNC_SETTINGS_GET_FAILURE =
|
|
10
|
-
'INSIGHTS_SYNC_SETTINGS_GET_FAILURE';
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import Immutable from 'seamless-immutable';
|
|
2
2
|
import {
|
|
3
3
|
INSIGHTS_SYNC_SETTING_SET,
|
|
4
|
-
INSIGHTS_SYNC_SETTING_SET_FAILURE,
|
|
5
4
|
INSIGHTS_SYNC_SETTINGS_GET_SUCCESS,
|
|
6
|
-
INSIGHTS_SYNC_SETTINGS_GET_FAILURE,
|
|
7
5
|
} from './InsightsSettingsConstants';
|
|
8
6
|
|
|
9
7
|
const initialState = Immutable({
|
|
@@ -15,9 +13,7 @@ export default (state = initialState, action) => {
|
|
|
15
13
|
|
|
16
14
|
switch (action.type) {
|
|
17
15
|
case INSIGHTS_SYNC_SETTINGS_GET_SUCCESS:
|
|
18
|
-
case INSIGHTS_SYNC_SETTINGS_GET_FAILURE:
|
|
19
16
|
case INSIGHTS_SYNC_SETTING_SET:
|
|
20
|
-
case INSIGHTS_SYNC_SETTING_SET_FAILURE:
|
|
21
17
|
return state.merge({
|
|
22
18
|
...state,
|
|
23
19
|
...settings,
|
data/webpack/InsightsCloudSync/Components/InsightsSettings/__tests__/InsightsSettingsActions.test.js
CHANGED
|
@@ -22,12 +22,28 @@ const runWithGetState = (state, action, params) => dispatch => {
|
|
|
22
22
|
const fixtures = {
|
|
23
23
|
'should generate INSIGHTS_SYNC_SETTINGS_GET_SUCCESS action': () =>
|
|
24
24
|
runWithGetState({ settings: {} }, getInsightsSyncSettings, {}),
|
|
25
|
+
'should handle getInsightsSyncSettings with error ': () => {
|
|
26
|
+
API.get.mockImplementationOnce(() =>
|
|
27
|
+
Promise.reject(new Error('Network error!'))
|
|
28
|
+
);
|
|
29
|
+
return runWithGetState({ settings: {} }, getInsightsSyncSettings, {});
|
|
30
|
+
},
|
|
25
31
|
'should generate INSIGHTS_SYNC_SETTING_SET action': () =>
|
|
26
32
|
runWithGetState(
|
|
27
33
|
{ settings: { insightsSyncEnabled: false } },
|
|
28
34
|
setInsightsSyncEnabled,
|
|
29
35
|
true
|
|
30
36
|
),
|
|
37
|
+
'should handle setInsightsSyncEnabled with error ': () => {
|
|
38
|
+
API.patch.mockImplementationOnce(() =>
|
|
39
|
+
Promise.reject(new Error('Network error!'))
|
|
40
|
+
);
|
|
41
|
+
return runWithGetState(
|
|
42
|
+
{ settings: { insightsSyncEnabled: false } },
|
|
43
|
+
setInsightsSyncEnabled,
|
|
44
|
+
true
|
|
45
|
+
);
|
|
46
|
+
},
|
|
31
47
|
};
|
|
32
48
|
|
|
33
49
|
describe('InsightsSettings actions', () => {
|
data/webpack/InsightsCloudSync/Components/InsightsSettings/__tests__/InsightsSettingsReducer.test.js
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import { testReducerSnapshotWithFixtures } from '@theforeman/test';
|
|
2
|
-
|
|
2
|
+
import reducer from '../InsightsSettingsReducer';
|
|
3
3
|
import {
|
|
4
4
|
INSIGHTS_SYNC_SETTING_SET,
|
|
5
|
-
INSIGHTS_SYNC_SETTING_SET_FAILURE,
|
|
6
5
|
INSIGHTS_SYNC_SETTINGS_GET_SUCCESS,
|
|
7
|
-
INSIGHTS_SYNC_SETTINGS_GET_FAILURE,
|
|
8
6
|
} from '../InsightsSettingsConstants';
|
|
9
|
-
import reducer from '../InsightsSettingsReducer';
|
|
10
7
|
|
|
11
8
|
const fixtures = {
|
|
12
9
|
'should return the initial state': {},
|
|
@@ -20,16 +17,6 @@ const fixtures = {
|
|
|
20
17
|
},
|
|
21
18
|
},
|
|
22
19
|
},
|
|
23
|
-
'should handle INSIGHTS_SYNC_SETTINGS_GET_FAILURE': {
|
|
24
|
-
action: {
|
|
25
|
-
type: INSIGHTS_SYNC_SETTINGS_GET_FAILURE,
|
|
26
|
-
payload: {
|
|
27
|
-
settings: {
|
|
28
|
-
error: 'test error',
|
|
29
|
-
},
|
|
30
|
-
},
|
|
31
|
-
},
|
|
32
|
-
},
|
|
33
20
|
'should handle INSIGHTS_SYNC_SETTING_SET': {
|
|
34
21
|
action: {
|
|
35
22
|
type: INSIGHTS_SYNC_SETTING_SET,
|
|
@@ -40,16 +27,6 @@ const fixtures = {
|
|
|
40
27
|
},
|
|
41
28
|
},
|
|
42
29
|
},
|
|
43
|
-
'should handle INSIGHTS_SYNC_SETTING_SET_FAILURE': {
|
|
44
|
-
action: {
|
|
45
|
-
type: INSIGHTS_SYNC_SETTING_SET_FAILURE,
|
|
46
|
-
payload: {
|
|
47
|
-
settings: {
|
|
48
|
-
error: 'test set error',
|
|
49
|
-
},
|
|
50
|
-
},
|
|
51
|
-
},
|
|
52
|
-
},
|
|
53
30
|
};
|
|
54
31
|
|
|
55
32
|
describe('InsightsSettings reducer', () =>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
|
-
exports[`InsightsSettings actions should generate
|
|
3
|
+
exports[`InsightsSettings actions should generate INSIGHTS_SYNC_SETTING_SET action 1`] = `
|
|
4
4
|
Array [
|
|
5
5
|
Array [
|
|
6
6
|
Object {
|
|
@@ -9,13 +9,13 @@ Array [
|
|
|
9
9
|
"insightsSyncEnabled": true,
|
|
10
10
|
},
|
|
11
11
|
},
|
|
12
|
-
"type": "
|
|
12
|
+
"type": "INSIGHTS_SYNC_SETTING_SET",
|
|
13
13
|
},
|
|
14
14
|
],
|
|
15
15
|
]
|
|
16
16
|
`;
|
|
17
17
|
|
|
18
|
-
exports[`InsightsSettings actions should generate
|
|
18
|
+
exports[`InsightsSettings actions should generate INSIGHTS_SYNC_SETTINGS_GET_SUCCESS action 1`] = `
|
|
19
19
|
Array [
|
|
20
20
|
Array [
|
|
21
21
|
Object {
|
|
@@ -24,7 +24,41 @@ Array [
|
|
|
24
24
|
"insightsSyncEnabled": true,
|
|
25
25
|
},
|
|
26
26
|
},
|
|
27
|
-
"type": "
|
|
27
|
+
"type": "INSIGHTS_SYNC_SETTINGS_GET_SUCCESS",
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
]
|
|
31
|
+
`;
|
|
32
|
+
|
|
33
|
+
exports[`InsightsSettings actions should handle getInsightsSyncSettings with error 1`] = `
|
|
34
|
+
Array [
|
|
35
|
+
Array [
|
|
36
|
+
Object {
|
|
37
|
+
"payload": Object {
|
|
38
|
+
"message": Object {
|
|
39
|
+
"message": "Network error!",
|
|
40
|
+
"sticky": true,
|
|
41
|
+
"type": "error",
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
"type": "TOASTS_ADD",
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
]
|
|
48
|
+
`;
|
|
49
|
+
|
|
50
|
+
exports[`InsightsSettings actions should handle setInsightsSyncEnabled with error 1`] = `
|
|
51
|
+
Array [
|
|
52
|
+
Array [
|
|
53
|
+
Object {
|
|
54
|
+
"payload": Object {
|
|
55
|
+
"message": Object {
|
|
56
|
+
"message": "Network error!",
|
|
57
|
+
"sticky": true,
|
|
58
|
+
"type": "error",
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
"type": "TOASTS_ADD",
|
|
28
62
|
},
|
|
29
63
|
],
|
|
30
64
|
]
|
|
@@ -6,20 +6,6 @@ Object {
|
|
|
6
6
|
}
|
|
7
7
|
`;
|
|
8
8
|
|
|
9
|
-
exports[`InsightsSettings reducer should handle INSIGHTS_SYNC_SETTING_SET_FAILURE 1`] = `
|
|
10
|
-
Object {
|
|
11
|
-
"error": "test set error",
|
|
12
|
-
"insightsSyncEnabled": false,
|
|
13
|
-
}
|
|
14
|
-
`;
|
|
15
|
-
|
|
16
|
-
exports[`InsightsSettings reducer should handle INSIGHTS_SYNC_SETTINGS_GET_FAILURE 1`] = `
|
|
17
|
-
Object {
|
|
18
|
-
"error": "test error",
|
|
19
|
-
"insightsSyncEnabled": false,
|
|
20
|
-
}
|
|
21
|
-
`;
|
|
22
|
-
|
|
23
9
|
exports[`InsightsSettings reducer should handle INSIGHTS_SYNC_SETTINGS_GET_SUCCESS 1`] = `
|
|
24
10
|
Object {
|
|
25
11
|
"insightsSyncEnabled": true,
|
|
@@ -6,7 +6,7 @@ import { Button, Icon } from 'patternfly-react';
|
|
|
6
6
|
import { INSIGHTS_SYNC_PAGE_TITLE } from './InsightsCloudSyncConstants';
|
|
7
7
|
import InsightsSettings from './Components/InsightsSettings';
|
|
8
8
|
|
|
9
|
-
const InsightsCloudSync = ({
|
|
9
|
+
const InsightsCloudSync = ({ settingsUrl, syncInsights }) => {
|
|
10
10
|
document.title = INSIGHTS_SYNC_PAGE_TITLE;
|
|
11
11
|
return (
|
|
12
12
|
<IntlProvider locale={navigator.language}>
|
|
@@ -51,9 +51,7 @@ const InsightsCloudSync = ({ data: { settingsUrl }, syncInsights }) => {
|
|
|
51
51
|
|
|
52
52
|
InsightsCloudSync.propTypes = {
|
|
53
53
|
syncInsights: PropTypes.func.isRequired,
|
|
54
|
-
|
|
55
|
-
settingsUrl: PropTypes.string.isRequired,
|
|
56
|
-
}).isRequired,
|
|
54
|
+
settingsUrl: PropTypes.string.isRequired,
|
|
57
55
|
};
|
|
58
56
|
|
|
59
57
|
export default InsightsCloudSync;
|