foreman_rh_cloud 1.0.7 → 2.0.8

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.
Files changed (146) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +8 -0
  3. data/app/controllers/foreman_inventory_upload/accounts_controller.rb +1 -0
  4. data/app/controllers/foreman_inventory_upload/uploads_controller.rb +22 -3
  5. data/app/controllers/foreman_rh_cloud/react_controller.rb +3 -0
  6. data/app/controllers/insights_cloud/tasks_controller.rb +8 -0
  7. data/app/helpers/foreman_inventory_upload_host_helper.rb +11 -0
  8. data/app/models/insights_facet.rb +3 -0
  9. data/app/models/insights_hit.rb +6 -0
  10. data/app/models/setting/rh_cloud.rb +1 -0
  11. data/app/overrides/hosts_list.rb +13 -0
  12. data/app/views/foreman_rh_cloud/react/insights_cloud.html.erb +1 -0
  13. data/config/routes.rb +7 -0
  14. data/db/migrate/20191215104806_create_insights_hits.foreman_inventory_upload.rb +14 -0
  15. data/db/migrate/20191216062008_create_insights_facets.foreman_inventory_upload.rb +7 -0
  16. data/lib/foreman_inventory_upload/async/upload_report_job.rb +1 -5
  17. data/lib/foreman_inventory_upload/generators/fact_helpers.rb +1 -1
  18. data/lib/foreman_inventory_upload/generators/slice.rb +1 -0
  19. data/lib/foreman_inventory_upload/notifications/manifest_import_success_notification_override.rb +19 -0
  20. data/lib/foreman_rh_cloud/engine.rb +22 -10
  21. data/lib/foreman_rh_cloud/version.rb +1 -1
  22. data/lib/insights_cloud.rb +15 -0
  23. data/lib/insights_cloud/async/insights_full_sync.rb +92 -0
  24. data/package.json +20 -100
  25. data/test/factories/inventory_upload_factories.rb +13 -13
  26. data/test/jobs/insights_full_sync_test.rb +62 -0
  27. data/test/unit/slice_generator_test.rb +10 -3
  28. data/webpack/ForemanInventoryUpload/Components/AccountList/AccountList.fixtures.js +6 -0
  29. data/webpack/ForemanInventoryUpload/Components/AccountList/AccountList.stories.js +5 -14
  30. data/webpack/ForemanInventoryUpload/Components/AccountList/AccountListActions.js +2 -1
  31. data/webpack/ForemanInventoryUpload/Components/AccountList/AccountListReducer.js +9 -1
  32. data/webpack/ForemanInventoryUpload/Components/AccountList/AccountListSelectors.js +7 -0
  33. data/webpack/ForemanInventoryUpload/Components/AccountList/Components/EmptyResults/__tests__/EmptyResults.test.js +1 -1
  34. data/webpack/ForemanInventoryUpload/Components/AccountList/Components/EmptyState/__tests__/EmptyState.test.js +1 -1
  35. data/webpack/ForemanInventoryUpload/Components/AccountList/Components/ErrorState/__tests__/ErrorState.test.js +1 -1
  36. data/webpack/ForemanInventoryUpload/Components/AccountList/Components/ListItem/__tests__/ListItem.test.js +1 -1
  37. data/webpack/ForemanInventoryUpload/Components/AccountList/Components/ListItemStatus/__tests__/ListItemStatus.test.js +1 -1
  38. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountList.test.js +1 -1
  39. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountListActions.test.js +9 -2
  40. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountListIntegration.test.js +1 -1
  41. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountListReducer.test.js +12 -1
  42. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountListSelectors.test.js +8 -3
  43. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/__snapshots__/AccountListActions.test.js.snap +20 -2
  44. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/__snapshots__/AccountListReducer.test.js.snap +10 -0
  45. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/__snapshots__/AccountListSelectors.test.js.snap +3 -0
  46. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/AutoUploadSwitcher.js +6 -6
  47. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/__tests__/AutoUploadSwitcher.test.js +1 -1
  48. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/__tests__/AutoUploadSwitcherActions.test.js +1 -1
  49. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/__tests__/__snapshots__/AutoUploadSwitcher.test.js.snap +9 -9
  50. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/autoUploadSwitcher.scss +1 -1
  51. data/webpack/ForemanInventoryUpload/Components/Dashboard/Dashboard.fixtures.js +13 -9
  52. data/webpack/ForemanInventoryUpload/Components/Dashboard/Dashboard.stories.js +5 -15
  53. data/webpack/ForemanInventoryUpload/Components/Dashboard/__tests__/Dashboard.test.js +1 -2
  54. data/webpack/ForemanInventoryUpload/Components/Dashboard/__tests__/DashboardActions.test.js +17 -4
  55. data/webpack/ForemanInventoryUpload/Components/Dashboard/__tests__/DashboardIntegration.test.js +1 -1
  56. data/webpack/ForemanInventoryUpload/Components/Dashboard/__tests__/DashboardReducer.test.js +1 -1
  57. data/webpack/ForemanInventoryUpload/Components/Dashboard/__tests__/DashboardSelectors.test.js +3 -3
  58. data/webpack/ForemanInventoryUpload/Components/FileDownload/__tests__/FileDownload.test.js +1 -1
  59. data/webpack/ForemanInventoryUpload/Components/FullScreenModal/__tests__/FullScreenModal.test.js +1 -1
  60. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcher.fixtures.js +1 -0
  61. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcher.js +29 -0
  62. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcherActions.js +30 -0
  63. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcherConstants.js +3 -0
  64. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/__tests__/HostObfuscationSwitcher.test.js +14 -0
  65. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/__tests__/HostObfuscationSwitcherActions.test.js +14 -0
  66. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/__tests__/__snapshots__/HostObfuscationSwitcher.test.js.snap +38 -0
  67. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/__tests__/__snapshots__/HostObfuscationSwitcherActions.test.js.snap +14 -0
  68. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/hostObfuscationSwitcher.scss +0 -0
  69. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/index.js +20 -0
  70. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/__tests__/InventoryFilter.test.js +1 -1
  71. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/__tests__/InventoryFilterActions.test.js +1 -1
  72. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/__tests__/InventoryFilterReducer.test.js +1 -1
  73. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/__tests__/InventoryFilterSelectors.test.js +3 -3
  74. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/__tests__/integration.test.js +1 -1
  75. data/webpack/ForemanInventoryUpload/Components/InventorySettings/InventorySettings.js +15 -0
  76. data/webpack/ForemanInventoryUpload/Components/InventorySettings/__tests__/InventorySettings.test.js +13 -0
  77. data/webpack/ForemanInventoryUpload/Components/InventorySettings/__tests__/__snapshots__/InventorySettings.test.js.snap +13 -0
  78. data/webpack/ForemanInventoryUpload/Components/InventorySettings/index.js +1 -0
  79. data/webpack/ForemanInventoryUpload/Components/InventorySettings/inventorySettings.scss +15 -0
  80. data/webpack/ForemanInventoryUpload/Components/NavContainer/NavContainer.fixtures.js +5 -2
  81. data/webpack/ForemanInventoryUpload/Components/NavContainer/__tests__/NavContainer.test.js +1 -2
  82. data/webpack/ForemanInventoryUpload/Components/NavContainer/__tests__/__snapshots__/NavContainer.test.js.snap +1 -1
  83. data/webpack/ForemanInventoryUpload/Components/PageHeader/PageHeader.js +14 -4
  84. data/webpack/ForemanInventoryUpload/Components/PageHeader/__tests__/PageHeader.test.js +1 -1
  85. data/webpack/ForemanInventoryUpload/Components/PageHeader/__tests__/__snapshots__/PageHeader.test.js.snap +22 -3
  86. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/DocsButton/DocsButton.js +17 -0
  87. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/DocsButton/__tests__/DocsButton.test.js +12 -0
  88. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/DocsButton/__tests__/__snapshots__/DocsButton.test.js.snap +20 -0
  89. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/DocsButton/index.js +1 -0
  90. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/HistoryButton/HistoryButton.js +18 -0
  91. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/HistoryButton/__tests__/HistoryButton.test.js +12 -0
  92. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/HistoryButton/__tests__/__snapshots__/HistoryButton.test.js.snap +21 -0
  93. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/HistoryButton/index.js +1 -0
  94. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/PageDescription/PageDescription.js +24 -0
  95. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/PageDescription/__tests__/PageDescription.test.js +11 -0
  96. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/PageDescription/__tests__/__snapshots__/PageDescription.test.js.snap +17 -0
  97. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/PageDescription/index.js +1 -0
  98. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/ToolbarButtons/ToolbarButtons.js +13 -0
  99. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/ToolbarButtons/__tests__/ToolbarButtons.test.js +12 -0
  100. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/ToolbarButtons/__tests__/__snapshots__/ToolbarButtons.test.js.snap +10 -0
  101. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/ToolbarButtons/index.js +1 -0
  102. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/ToolbarButtons/toolbarButtons.scss +7 -0
  103. data/webpack/ForemanInventoryUpload/Components/ReportGenerate/__tests__/ReportGenerate.test.js +1 -1
  104. data/webpack/ForemanInventoryUpload/Components/ReportUpload/__tests__/ReportUpload.test.js +1 -1
  105. data/webpack/ForemanInventoryUpload/Components/ScheduledRun/__tests__/ScheduledRun.test.js +1 -1
  106. data/webpack/ForemanInventoryUpload/Components/StatusChart/__tests__/StatusChart.test.js +1 -1
  107. data/webpack/ForemanInventoryUpload/Components/TabBody/__tests__/TabBody.test.js +1 -1
  108. data/webpack/ForemanInventoryUpload/Components/TabContainer/__tests__/TabContainer.test.js +1 -1
  109. data/webpack/ForemanInventoryUpload/Components/TabFooter/__tests__/TabFooter.test.js +1 -1
  110. data/webpack/ForemanInventoryUpload/Components/TabHeader/__tests__/TabHeader.test.js +1 -1
  111. data/webpack/ForemanInventoryUpload/Components/Terminal/Terminal.js +1 -1
  112. data/webpack/ForemanInventoryUpload/Components/Terminal/__tests__/Terminal.test.js +1 -2
  113. data/webpack/ForemanInventoryUpload/ForemanInventoryConstants.js +4 -0
  114. data/webpack/ForemanInventoryUpload/ForemanInventoryHelpers.js +13 -0
  115. data/webpack/ForemanInventoryUpload/SubscriptionsPageExtension/SubscriptionsPageExtensionActions.js +34 -0
  116. data/webpack/ForemanInventoryUpload/__tests__/ForemanInventoryHelpers.test.js +3 -4
  117. data/webpack/ForemanInventoryUpload/__tests__/ForemanInventoryUpload.test.js +1 -1
  118. data/webpack/ForemanInventoryUpload/__tests__/__snapshots__/ForemanInventoryHelpers.test.js.snap +2 -0
  119. data/webpack/ForemanRhCloudReducers.js +2 -0
  120. data/webpack/ForemanRhCloudSelectors.js +2 -0
  121. data/webpack/ForemanRhCloudTestHelpers.js +2 -1
  122. data/webpack/InsightsCloudSync/InsightsCloudSync.js +26 -0
  123. data/webpack/InsightsCloudSync/InsightsCloudSync.test.js +13 -0
  124. data/webpack/InsightsCloudSync/InsightsCloudSyncActions.js +23 -0
  125. data/webpack/InsightsCloudSync/InsightsCloudSyncConstants.js +6 -0
  126. data/webpack/InsightsCloudSync/InsightsCloudSyncHelpers.js +3 -0
  127. data/webpack/InsightsCloudSync/InsightsCloudSyncReducers.js +3 -0
  128. data/webpack/InsightsCloudSync/__snapshots__/InsightsCloudSync.test.js.snap +25 -0
  129. data/webpack/InsightsCloudSync/__tests__/InsightsCloudSyncHelpers.test.js +9 -0
  130. data/webpack/InsightsCloudSync/__tests__/__snapshots__/InsightsCloudSyncHelpers.test.js.snap +3 -0
  131. data/webpack/InsightsCloudSync/index.js +17 -0
  132. data/webpack/__tests__/ForemanRhCloudHelpers.test.js +1 -1
  133. data/webpack/__tests__/ForemanRhCloudSelectors.test.js +5 -3
  134. data/webpack/__tests__/ForemanRhCloudTestHelpers.test.js +3 -3
  135. data/webpack/__tests__/__snapshots__/ForemanRhCloudSelectors.test.js.snap +9 -0
  136. data/webpack/__tests__/__snapshots__/ForemanRhCloudTestHelpers.test.js.snap +3 -0
  137. data/webpack/index.js +7 -0
  138. data/webpack/subscriptions_extension_index.js +8 -0
  139. metadata +59 -9
  140. data/webpack/stories/ForemanInventoryUploadReducers.js +0 -3
  141. data/webpack/stories/configureStore.js +0 -15
  142. data/webpack/stories/decorators/index.js +0 -1
  143. data/webpack/stories/decorators/withCardsDecorator.js +0 -14
  144. data/webpack/stories/index.js +0 -10
  145. data/webpack/stories/index.scss +0 -7
  146. data/webpack/test_setup.js +0 -6
@@ -9,6 +9,15 @@ Object {
9
9
  }
10
10
  `;
11
11
 
12
+ exports[`AccountList reducer should handle HOST_OBFUSCATION_TOGGLE 1`] = `
13
+ Object {
14
+ "accounts": Object {},
15
+ "error": null,
16
+ "hostObfuscationEnabled": true,
17
+ "pollingProcessID": 0,
18
+ }
19
+ `;
20
+
12
21
  exports[`AccountList reducer should handle INVENTORY_ACCOUNT_STATUS_POLLING 1`] = `
13
22
  Object {
14
23
  "accounts": Object {
@@ -30,6 +39,7 @@ Object {
30
39
  },
31
40
  "autoUploadEnabled": true,
32
41
  "error": null,
42
+ "hostObfuscationEnabled": true,
33
43
  "pollingProcessID": 0,
34
44
  }
35
45
  `;
@@ -22,6 +22,8 @@ Object {
22
22
 
23
23
  exports[`AccountList selectors should return AccountList autoUploadEnabled 1`] = `true`;
24
24
 
25
+ exports[`AccountList selectors should return AccountList hostObfuscationEnabled 1`] = `true`;
26
+
25
27
  exports[`AccountList selectors should return AccountList pollingProcessID 1`] = `0`;
26
28
 
27
29
  exports[`AccountList selectors should return AccountsList 1`] = `
@@ -44,6 +46,7 @@ Object {
44
46
  },
45
47
  },
46
48
  "autoUploadEnabled": true,
49
+ "hostObfuscationEnabled": true,
47
50
  "pollingProcessID": 0,
48
51
  }
49
52
  `;
@@ -6,17 +6,17 @@ import './autoUploadSwitcher.scss';
6
6
 
7
7
  const AutoUploadSwitcher = ({ autoUploadEnabled, handleToggle }) => (
8
8
  <div className="auto_upload_switcher">
9
- <Switch
10
- size="mini"
11
- value={autoUploadEnabled}
12
- onChange={() => handleToggle(autoUploadEnabled)}
13
- />
9
+ <span>Auto upload</span>
14
10
  <FieldLevelHelp
15
11
  content={__(
16
12
  'Enable automatic upload of your host inventory to the Red Hat cloud'
17
13
  )}
18
14
  />
19
- <span>Allow Auto Upload</span>
15
+ <Switch
16
+ size="mini"
17
+ value={autoUploadEnabled}
18
+ onChange={() => handleToggle(autoUploadEnabled)}
19
+ />
20
20
  </div>
21
21
  );
22
22
 
@@ -1,4 +1,4 @@
1
- import { testComponentSnapshotsWithFixtures } from 'react-redux-test-utils';
1
+ import { testComponentSnapshotsWithFixtures } from '@theforeman/test';
2
2
  import { noop } from 'patternfly-react';
3
3
 
4
4
  import AutoUploadSwitcher from '../AutoUploadSwitcher';
@@ -1,4 +1,4 @@
1
- import { testActionSnapshotWithFixtures } from 'react-redux-test-utils';
1
+ import { testActionSnapshotWithFixtures } from '@theforeman/test';
2
2
  import API from 'foremanReact/API';
3
3
  import { handleToggle } from '../AutoUploadSwitcherActions';
4
4
  import { handleToggleResponse } from '../AutoUploadSwitcher.fixtures';
@@ -4,6 +4,15 @@ exports[`AutoUploadSwitcher rendering render with props 1`] = `
4
4
  <div
5
5
  className="auto_upload_switcher"
6
6
  >
7
+ <span>
8
+ Auto upload
9
+ </span>
10
+ <FieldLevelHelp
11
+ buttonClass=""
12
+ content="Enable automatic upload of your host inventory to the Red Hat cloud"
13
+ placement="top"
14
+ rootClose={true}
15
+ />
7
16
  <Switch
8
17
  animate={true}
9
18
  baseClass="bootstrap-switch"
@@ -25,14 +34,5 @@ exports[`AutoUploadSwitcher rendering render with props 1`] = `
25
34
  value={true}
26
35
  wrapperClass="wrapper"
27
36
  />
28
- <FieldLevelHelp
29
- buttonClass=""
30
- content="Enable automatic upload of your host inventory to the Red Hat cloud"
31
- placement="top"
32
- rootClose={true}
33
- />
34
- <span>
35
- Allow Auto Upload
36
- </span>
37
37
  </div>
38
38
  `;
@@ -1,3 +1,3 @@
1
1
  .auto_upload_switcher {
2
- float: right;
2
+ margin-bottom: 5px;
3
3
  }
@@ -8,16 +8,20 @@ export const completed = 25;
8
8
 
9
9
  export const error = 'some-error';
10
10
 
11
+ export const generating = {
12
+ logs,
13
+ completed,
14
+ };
15
+
16
+ export const uploading = {
17
+ logs,
18
+ completed,
19
+ files,
20
+ };
21
+
11
22
  export const inventory = {
12
- generating: {
13
- logs,
14
- completed,
15
- },
16
- uploading: {
17
- logs,
18
- completed,
19
- files,
20
- },
23
+ generating,
24
+ uploading,
21
25
  };
22
26
 
23
27
  export const accountID = 'some-account-ID';
@@ -1,19 +1,9 @@
1
1
  import React from 'react';
2
- import { storiesOf } from '@storybook/react';
3
- import { withKnobs } from '@storybook/addon-knobs';
4
- import { Provider } from 'react-redux';
5
- import configureStore from '../../../stories/configureStore';
6
2
  import Dashboard from './index';
7
- import { generating, uploading } from './Dashboard.fixtures';
8
3
 
9
- const store = configureStore();
4
+ export default {
5
+ title: 'Dashboard',
6
+ component: Dashboard,
7
+ };
10
8
 
11
- storiesOf('Dashboard', module)
12
- .addDecorator(withKnobs)
13
- .add('Dashboard', () => (
14
- <div style={{ margin: '20px' }}>
15
- <Provider store={store}>
16
- <Dashboard generating={generating} uploading={uploading} />
17
- </Provider>
18
- </div>
19
- ));
9
+ export const Basic = () => <Dashboard />;
@@ -1,6 +1,5 @@
1
1
  import React from 'react';
2
- import { shallow } from 'enzyme';
3
- import { testComponentSnapshotsWithFixtures } from 'react-redux-test-utils';
2
+ import { shallow, testComponentSnapshotsWithFixtures } from '@theforeman/test';
4
3
  import Dashboard from '../Dashboard';
5
4
  import { props } from '../Dashboard.fixtures';
6
5
 
@@ -1,4 +1,4 @@
1
- import { testActionSnapshotWithFixtures } from 'react-redux-test-utils';
1
+ import { testActionSnapshotWithFixtures } from '@theforeman/test';
2
2
  import API from 'foremanReact/API';
3
3
  import {
4
4
  startPolling,
@@ -14,13 +14,13 @@ import {
14
14
  activeTab,
15
15
  accountID,
16
16
  } from '../Dashboard.fixtures';
17
- import { inventoryStateWrapper } from '../../../../ForemanRhCloudTestHelpers';
17
+ import { rhCloudStateWrapper } from '../../../../ForemanRhCloudTestHelpers';
18
18
 
19
19
  jest.mock('foremanReact/API');
20
20
  API.get.mockImplementation(() => serverMock);
21
21
 
22
22
  const runWithGetState = (state, action, params) => dispatch => {
23
- const getState = () => inventoryStateWrapper({ dashboard: state });
23
+ const getState = () => rhCloudStateWrapper({ dashboard: state });
24
24
  action(params)(dispatch, getState);
25
25
  };
26
26
 
@@ -35,4 +35,17 @@ const fixtures = {
35
35
  runWithGetState({ activeTab: 'reports' }, toggleFullScreen, accountID),
36
36
  };
37
37
 
38
- describe('Dashboard actions', () => testActionSnapshotWithFixtures(fixtures));
38
+ describe('Dashboard actions', () => {
39
+ const { location } = window;
40
+
41
+ beforeAll(() => {
42
+ delete window.location;
43
+ window.location = { href: jest.fn() };
44
+ });
45
+
46
+ afterAll(() => {
47
+ window.location = location;
48
+ });
49
+
50
+ return testActionSnapshotWithFixtures(fixtures);
51
+ });
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { IntegrationTestHelper } from 'react-redux-test-utils';
2
+ import { IntegrationTestHelper } from '@theforeman/test';
3
3
 
4
4
  import Dashboard from '../Dashboard';
5
5
  import reducers from '../../../../ForemanRhCloudReducers';
@@ -1,4 +1,4 @@
1
- import { testReducerSnapshotWithFixtures } from 'react-redux-test-utils';
1
+ import { testReducerSnapshotWithFixtures } from '@theforeman/test';
2
2
 
3
3
  import {
4
4
  INVENTORY_POLLING_START,
@@ -1,4 +1,4 @@
1
- import { testSelectorsSnapshotWithFixtures } from 'react-redux-test-utils';
1
+ import { testSelectorsSnapshotWithFixtures } from '@theforeman/test';
2
2
  import {
3
3
  selectDashboard,
4
4
  selectPollingProcessID,
@@ -13,9 +13,9 @@ import {
13
13
  activeTab,
14
14
  accountID,
15
15
  } from '../Dashboard.fixtures';
16
- import { inventoryStateWrapper } from '../../../../ForemanRhCloudTestHelpers';
16
+ import { rhCloudStateWrapper } from '../../../../ForemanRhCloudTestHelpers';
17
17
 
18
- const state = inventoryStateWrapper({
18
+ const state = rhCloudStateWrapper({
19
19
  dashboard: {
20
20
  [accountID]: {
21
21
  generating: {
@@ -1,4 +1,4 @@
1
- import { testComponentSnapshotsWithFixtures } from 'react-redux-test-utils';
1
+ import { testComponentSnapshotsWithFixtures } from '@theforeman/test';
2
2
 
3
3
  import FileDownload from '../FileDownload';
4
4
 
@@ -1,4 +1,4 @@
1
- import { testComponentSnapshotsWithFixtures } from 'react-redux-test-utils';
1
+ import { testComponentSnapshotsWithFixtures } from '@theforeman/test';
2
2
 
3
3
  import FullScreenModal from '../FullScreenModal';
4
4
 
@@ -0,0 +1 @@
1
+ export const handleToggleResponse = { data: { autoUploadEnabled: true } };
@@ -0,0 +1,29 @@
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
+
6
+ const HostObfuscationSwitcher = ({ hostObfuscationEnabled, handleToggle }) => (
7
+ <div className="host_obfuscation_switcher">
8
+ <span>Obfuscate host names</span>
9
+ <FieldLevelHelp
10
+ content={__('Obfuscate host names sent to the Red Hat cloud')}
11
+ />
12
+ <Switch
13
+ size="mini"
14
+ value={hostObfuscationEnabled}
15
+ onChange={() => handleToggle(hostObfuscationEnabled)}
16
+ />
17
+ </div>
18
+ );
19
+
20
+ HostObfuscationSwitcher.propTypes = {
21
+ hostObfuscationEnabled: PropTypes.bool,
22
+ handleToggle: PropTypes.func.isRequired,
23
+ };
24
+
25
+ HostObfuscationSwitcher.defaultProps = {
26
+ hostObfuscationEnabled: false,
27
+ };
28
+
29
+ export default HostObfuscationSwitcher;
@@ -0,0 +1,30 @@
1
+ import API from 'foremanReact/API';
2
+ import { inventoryUrl } from '../../ForemanInventoryHelpers';
3
+ import {
4
+ HOST_OBFUSCATION_TOGGLE,
5
+ HOST_OBFUSCATION_TOGGLE_ERROR,
6
+ } from './HostObfuscationSwitcherConstants';
7
+
8
+ export const handleToggle = currentHostObfuscationEnabled => async dispatch => {
9
+ const toggledHostObfuscationEnabled = !currentHostObfuscationEnabled;
10
+ try {
11
+ const {
12
+ data: { hostObfuscationEnabled },
13
+ } = await API.post(inventoryUrl('host_obfuscation'), {
14
+ value: toggledHostObfuscationEnabled,
15
+ });
16
+ dispatch({
17
+ type: HOST_OBFUSCATION_TOGGLE,
18
+ payload: {
19
+ hostObfuscationEnabled,
20
+ },
21
+ });
22
+ } catch (error) {
23
+ dispatch({
24
+ type: HOST_OBFUSCATION_TOGGLE_ERROR,
25
+ payload: {
26
+ error: error.message,
27
+ },
28
+ });
29
+ }
30
+ };
@@ -0,0 +1,3 @@
1
+ export const HOST_OBFUSCATION_TOGGLE = 'HOST_OBFUSCATION_TOGGLE';
2
+
3
+ export const HOST_OBFUSCATION_TOGGLE_ERROR = 'HOST_OBFUSCATION_TOGGLE_ERROR';
@@ -0,0 +1,14 @@
1
+ import { testComponentSnapshotsWithFixtures } from '@theforeman/test';
2
+ import { noop } from 'patternfly-react';
3
+
4
+ import HostObfuscationSwitcher from '../HostObfuscationSwitcher';
5
+
6
+ const fixtures = {
7
+ 'render with props': { hostObfuscationEnabled: true, handleToggle: noop },
8
+ /** fixtures, props for the component */
9
+ };
10
+
11
+ describe('HostObfuscationSwitcher', () => {
12
+ describe('rendering', () =>
13
+ testComponentSnapshotsWithFixtures(HostObfuscationSwitcher, fixtures));
14
+ });
@@ -0,0 +1,14 @@
1
+ import { testActionSnapshotWithFixtures } from '@theforeman/test';
2
+ import API from 'foremanReact/API';
3
+ import { handleToggle } from '../HostObfuscationSwitcherActions';
4
+ import { handleToggleResponse } from '../HostObfuscationSwitcher.fixtures';
5
+
6
+ jest.mock('foremanReact/API');
7
+ API.post.mockImplementation(async () => handleToggleResponse);
8
+
9
+ const fixtures = {
10
+ 'should handleToggle': () => handleToggle(),
11
+ };
12
+
13
+ describe('HostObfuscationSwitcher actions', () =>
14
+ testActionSnapshotWithFixtures(fixtures));
@@ -0,0 +1,38 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`HostObfuscationSwitcher rendering render with props 1`] = `
4
+ <div
5
+ className="host_obfuscation_switcher"
6
+ >
7
+ <span>
8
+ Obfuscate host names
9
+ </span>
10
+ <FieldLevelHelp
11
+ buttonClass=""
12
+ content="Obfuscate host names sent 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,14 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`HostObfuscationSwitcher actions should handleToggle 1`] = `
4
+ Array [
5
+ Array [
6
+ Object {
7
+ "payload": Object {
8
+ "hostObfuscationEnabled": undefined,
9
+ },
10
+ "type": "HOST_OBFUSCATION_TOGGLE",
11
+ },
12
+ ],
13
+ ]
14
+ `;
@@ -0,0 +1,20 @@
1
+ import { bindActionCreators } from 'redux';
2
+ import { connect } from 'react-redux';
3
+
4
+ import * as actions from './HostObfuscationSwitcherActions';
5
+ import HostObfuscationSwitcher from './HostObfuscationSwitcher';
6
+ import { selectHostObfuscationEnabled } from '../AccountList/AccountListSelectors';
7
+
8
+ // map state to props
9
+ const mapStateToProps = state => ({
10
+ hostObfuscationEnabled: selectHostObfuscationEnabled(state),
11
+ });
12
+
13
+ // map action dispatchers to props
14
+ const mapDispatchToProps = dispatch => bindActionCreators(actions, dispatch);
15
+
16
+ // export connected component
17
+ export default connect(
18
+ mapStateToProps,
19
+ mapDispatchToProps
20
+ )(HostObfuscationSwitcher);