foreman-tasks 1.1.3 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (189) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/js_tests.yml +27 -0
  3. data/.github/workflows/ruby_tests.yml +74 -0
  4. data/.rubocop.yml +12 -4
  5. data/.rubocop_todo.yml +32 -25
  6. data/Gemfile +5 -0
  7. data/README.md +2 -0
  8. data/app/controllers/foreman_tasks/api/tasks_controller.rb +63 -58
  9. data/app/controllers/foreman_tasks/concerns/parameters/triggering.rb +1 -1
  10. data/app/controllers/foreman_tasks/recurring_logics_controller.rb +7 -0
  11. data/app/controllers/foreman_tasks/tasks_controller.rb +9 -14
  12. data/app/helpers/foreman_tasks/foreman_tasks_helper.rb +3 -3
  13. data/app/lib/actions/proxy_action.rb +1 -1
  14. data/app/models/foreman_tasks/recurring_logic.rb +1 -1
  15. data/app/models/foreman_tasks/task.rb +15 -0
  16. data/app/models/foreman_tasks/task/dynflow_task.rb +29 -33
  17. data/app/models/foreman_tasks/task/status_explicator.rb +1 -1
  18. data/app/models/foreman_tasks/triggering.rb +1 -1
  19. data/app/models/setting/foreman_tasks.rb +2 -2
  20. data/app/services/ui_notifications/tasks/task_bulk_stop.rb +36 -0
  21. data/app/views/foreman_tasks/api/tasks/details.json.rabl +0 -1
  22. data/app/views/foreman_tasks/api/tasks/index.json.rabl +2 -0
  23. data/app/views/foreman_tasks/api/tasks/show.json.rabl +2 -0
  24. data/app/views/foreman_tasks/recurring_logics/index.html.erb +3 -1
  25. data/config/routes.rb +3 -1
  26. data/db/migrate/20200517215015_rename_bookmarks_controller.rb +35 -0
  27. data/db/migrate/20200519093217_drop_dynflow_allow_dangerous_actions_setting.foreman_tasks.rb +5 -0
  28. data/db/migrate/20200611090846_add_task_lock_index_on_resource_type_and_task_id.rb +1 -1
  29. data/db/seeds.d/30-notification_blueprints.rb +14 -7
  30. data/db/seeds.d/61-foreman_tasks_bookmarks.rb +1 -1
  31. data/lib/foreman_tasks/cleaner.rb +4 -6
  32. data/lib/foreman_tasks/dynflow/configuration.rb +1 -1
  33. data/lib/foreman_tasks/dynflow/persistence.rb +4 -6
  34. data/lib/foreman_tasks/engine.rb +3 -8
  35. data/lib/foreman_tasks/version.rb +1 -1
  36. data/locale/action_names.rb +1 -1
  37. data/locale/en/LC_MESSAGES/foreman_tasks.mo +0 -0
  38. data/locale/en/foreman_tasks.po +270 -54
  39. data/locale/foreman_tasks.pot +630 -292
  40. data/locale/fr/LC_MESSAGES/foreman_tasks.mo +0 -0
  41. data/locale/fr/foreman_tasks.po +817 -0
  42. data/locale/ja/LC_MESSAGES/foreman_tasks.mo +0 -0
  43. data/locale/ja/foreman_tasks.po +817 -0
  44. data/locale/zh_CN/LC_MESSAGES/foreman_tasks.mo +0 -0
  45. data/locale/zh_CN/foreman_tasks.po +816 -0
  46. data/package.json +1 -1
  47. data/script/npm_link_foreman_js.sh +26 -0
  48. data/test/controllers/api/recurring_logics_controller_test.rb +1 -1
  49. data/test/controllers/api/tasks_controller_test.rb +7 -7
  50. data/test/controllers/tasks_controller_test.rb +6 -6
  51. data/test/core/unit/runner_test.rb +20 -20
  52. data/test/core/unit/task_launcher_test.rb +8 -8
  53. data/test/helpers/foreman_tasks/foreman_tasks_helper_test.rb +7 -7
  54. data/test/helpers/foreman_tasks/tasks_helper_test.rb +3 -3
  55. data/test/lib/actions/middleware/keep_current_request_id_test.rb +3 -3
  56. data/test/support/history_tasks_builder.rb +1 -1
  57. data/test/tasks/generate_task_actions_test.rb +1 -1
  58. data/test/unit/actions/action_with_sub_plans_test.rb +2 -2
  59. data/test/unit/actions/bulk_action_test.rb +6 -6
  60. data/test/unit/actions/proxy_action_test.rb +20 -20
  61. data/test/unit/actions/recurring_action_test.rb +30 -32
  62. data/test/unit/cleaner_test.rb +24 -24
  63. data/test/unit/dashboard_table_filter_test.rb +5 -5
  64. data/test/unit/otp_manager_test.rb +2 -2
  65. data/test/unit/proxy_selector_test.rb +9 -9
  66. data/test/unit/recurring_logic_test.rb +32 -32
  67. data/test/unit/remote_task_test.rb +2 -2
  68. data/test/unit/task_groups_test.rb +4 -4
  69. data/test/unit/task_test.rb +18 -18
  70. data/test/unit/triggering_test.rb +8 -8
  71. data/test/unit/troubleshooting_help_generator_test.rb +6 -6
  72. data/test/unit/ui_notifications_test.rb +11 -11
  73. data/webpack/ForemanTasks/Components/TaskActions/TaskAction.test.js +60 -0
  74. data/webpack/ForemanTasks/Components/{TasksTable/TasksTableActionHelpers.js → TaskActions/TaskActionHelpers.js} +21 -6
  75. data/webpack/ForemanTasks/Components/{TasksTable/__tests__/TasksTableActionHelpers.test.js → TaskActions/TaskActionHelpers.test.js} +2 -2
  76. data/webpack/ForemanTasks/Components/TaskActions/TaskActionsConstants.js +16 -0
  77. data/webpack/ForemanTasks/Components/TaskActions/UnlockModals.js +60 -0
  78. data/webpack/ForemanTasks/Components/TaskActions/UnlockModals.test.js +14 -0
  79. data/webpack/ForemanTasks/Components/TaskActions/__snapshots__/TaskAction.test.js.snap +233 -0
  80. data/webpack/ForemanTasks/Components/TaskActions/__snapshots__/UnlockModals.test.js.snap +25 -0
  81. data/webpack/ForemanTasks/Components/TaskActions/index.js +115 -0
  82. data/webpack/ForemanTasks/Components/TaskDetails/Components/RunningSteps.js +17 -3
  83. data/webpack/ForemanTasks/Components/TaskDetails/Components/Task.js +38 -205
  84. data/webpack/ForemanTasks/Components/TaskDetails/Components/TaskButtons.js +168 -0
  85. data/webpack/ForemanTasks/Components/TaskDetails/Components/TaskInfo.js +6 -7
  86. data/webpack/ForemanTasks/Components/TaskDetails/Components/TaskSkeleton.js +48 -0
  87. data/webpack/ForemanTasks/Components/TaskDetails/Components/__tests__/RunningSteps.test.js +8 -1
  88. data/webpack/ForemanTasks/Components/TaskDetails/Components/__tests__/Task.test.js +14 -7
  89. data/webpack/ForemanTasks/Components/TaskDetails/Components/__tests__/TaskButtons.test.js +95 -0
  90. data/webpack/ForemanTasks/Components/TaskDetails/Components/__tests__/TaskInfo.test.js +0 -1
  91. data/webpack/ForemanTasks/Components/TaskDetails/Components/__tests__/__snapshots__/RunningSteps.test.js.snap +1 -1
  92. data/webpack/ForemanTasks/Components/TaskDetails/Components/__tests__/__snapshots__/Task.test.js.snap +90 -189
  93. data/webpack/ForemanTasks/Components/TaskDetails/Components/__tests__/__snapshots__/TaskButtons.test.js.snap +212 -0
  94. data/webpack/ForemanTasks/Components/TaskDetails/Components/__tests__/__snapshots__/TaskInfo.test.js.snap +8 -4
  95. data/webpack/ForemanTasks/Components/TaskDetails/TaskDetails.js +100 -53
  96. data/webpack/ForemanTasks/Components/TaskDetails/TaskDetails.scss +3 -14
  97. data/webpack/ForemanTasks/Components/TaskDetails/TaskDetailsActions.js +57 -110
  98. data/webpack/ForemanTasks/Components/TaskDetails/TaskDetailsConstants.js +3 -17
  99. data/webpack/ForemanTasks/Components/TaskDetails/TaskDetailsSelectors.js +57 -37
  100. data/webpack/ForemanTasks/Components/TaskDetails/TasksDetailsHelper.js +6 -1
  101. data/webpack/ForemanTasks/Components/TaskDetails/__tests__/TaskDetails.fixtures.js +8 -0
  102. data/webpack/ForemanTasks/Components/TaskDetails/__tests__/TaskDetails.test.js +13 -1
  103. data/webpack/ForemanTasks/Components/TaskDetails/__tests__/TaskDetailsActions.test.js +6 -6
  104. data/webpack/ForemanTasks/Components/TaskDetails/__tests__/__snapshots__/TaskDetails.test.js.snap +86 -19
  105. data/webpack/ForemanTasks/Components/TaskDetails/__tests__/__snapshots__/TaskDetailsActions.test.js.snap +25 -21
  106. data/webpack/ForemanTasks/Components/TaskDetails/index.js +12 -11
  107. data/webpack/ForemanTasks/Components/TasksDashboard/TasksDashboardActions.js +1 -1
  108. data/webpack/ForemanTasks/Components/TasksDashboard/__tests__/TasksDashboardActions.test.js +2 -2
  109. data/webpack/ForemanTasks/Components/TasksTable/Components/ActionSelectButton.js +14 -1
  110. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/ConfirmModal.js +83 -0
  111. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/ConfirmModalActions.js +106 -0
  112. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/ConfirmModalReducer.js +38 -0
  113. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/ConfirmModalSelectors.js +46 -0
  114. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/ConfirmModal.test.js +36 -0
  115. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/ConfirmModalActions.test.js +205 -0
  116. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/ConfirmModalReducer.test.js +27 -0
  117. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/ConfirmModalSelectors.test.js +55 -0
  118. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/__snapshots__/ConfirmModal.test.js.snap +41 -0
  119. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/__snapshots__/ConfirmModalReducer.test.js.snap +19 -0
  120. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/__snapshots__/ConfirmModalSelectors.test.js.snap +32 -0
  121. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/index.js +29 -0
  122. data/webpack/ForemanTasks/Components/TasksTable/Components/__test__/ActionSelectButton.test.js +1 -0
  123. data/webpack/ForemanTasks/Components/TasksTable/Components/__test__/__snapshots__/ActionSelectButton.test.js.snap +11 -0
  124. data/webpack/ForemanTasks/Components/TasksTable/TasksBulkActions.js +135 -35
  125. data/webpack/ForemanTasks/Components/TasksTable/TasksTable.js +13 -9
  126. data/webpack/ForemanTasks/Components/TasksTable/TasksTableActions.js +26 -66
  127. data/webpack/ForemanTasks/Components/TasksTable/TasksTableConstants.js +10 -12
  128. data/webpack/ForemanTasks/Components/TasksTable/TasksTablePage.js +30 -96
  129. data/webpack/ForemanTasks/Components/TasksTable/TasksTableSchema.js +2 -2
  130. data/webpack/ForemanTasks/Components/TasksTable/TasksTableSelectors.js +8 -4
  131. data/webpack/ForemanTasks/Components/TasksTable/__tests__/TasksBulkActions.test.js +50 -2
  132. data/webpack/ForemanTasks/Components/TasksTable/__tests__/TasksTable.fixtures.js +3 -12
  133. data/webpack/ForemanTasks/Components/TasksTable/__tests__/TasksTableActions.test.js +22 -26
  134. data/webpack/ForemanTasks/Components/TasksTable/__tests__/TasksTablePage.test.js +2 -1
  135. data/webpack/ForemanTasks/Components/TasksTable/__tests__/__snapshots__/SubTasksPage.test.js.snap +3 -14
  136. data/webpack/ForemanTasks/Components/TasksTable/__tests__/__snapshots__/TasksBulkActions.test.js.snap +155 -0
  137. data/webpack/ForemanTasks/Components/TasksTable/__tests__/__snapshots__/TasksIndexPage.test.js.snap +3 -14
  138. data/webpack/ForemanTasks/Components/TasksTable/__tests__/__snapshots__/TasksTableActions.test.js.snap +17 -124
  139. data/webpack/ForemanTasks/Components/TasksTable/__tests__/__snapshots__/TasksTablePage.test.js.snap +63 -133
  140. data/webpack/ForemanTasks/Components/TasksTable/formatters/__test__/__snapshots__/actionCellFormatter.test.js.snap +1 -0
  141. data/webpack/ForemanTasks/Components/TasksTable/formatters/__test__/__snapshots__/selectionCellFormatter.test.js.snap +2 -0
  142. data/webpack/ForemanTasks/Components/TasksTable/formatters/__test__/actionCellFormatter.test.js +1 -1
  143. data/webpack/ForemanTasks/Components/TasksTable/formatters/__test__/selectionCellFormatter.test.js +1 -1
  144. data/webpack/ForemanTasks/Components/TasksTable/formatters/actionCellFormatter.js +10 -7
  145. data/webpack/ForemanTasks/Components/TasksTable/formatters/selectionCellFormatter.js +7 -0
  146. data/webpack/ForemanTasks/Components/TasksTable/index.js +2 -2
  147. data/webpack/ForemanTasks/Components/common/ActionButtons/ActionButton.js +55 -19
  148. data/webpack/ForemanTasks/Components/common/ActionButtons/ActionButton.test.js +75 -19
  149. data/webpack/ForemanTasks/Components/common/ActionButtons/__snapshots__/ActionButton.test.js.snap +88 -21
  150. data/webpack/ForemanTasks/Components/common/ClickConfirmation/ClickConfirmation.scss +9 -0
  151. data/webpack/ForemanTasks/Components/common/ClickConfirmation/ClickConfirmation.test.js +44 -0
  152. data/webpack/ForemanTasks/Components/common/ClickConfirmation/__snapshots__/ClickConfirmation.test.js.snap +52 -0
  153. data/webpack/ForemanTasks/Components/common/ClickConfirmation/index.js +59 -66
  154. data/webpack/ForemanTasks/Components/common/{ToastTypesConstants.js → ToastsHelpers/ToastTypesConstants.js} +0 -0
  155. data/webpack/ForemanTasks/Components/common/ToastsHelpers/index.js +15 -0
  156. data/webpack/ForemanTasks/Components/common/urlHelpers.js +7 -0
  157. data/webpack/ForemanTasks/ForemanTasksReducers.js +2 -2
  158. data/webpack/ForemanTasks/Routes/ForemanTasksRoutes.test.js +2 -1
  159. data/webpack/__mocks__/foremanReact/common/helpers.js +2 -0
  160. data/webpack/__mocks__/foremanReact/components/ForemanModal/ForemanModalHooks.js +2 -2
  161. data/webpack/__mocks__/foremanReact/components/ForemanModal/index.js +17 -3
  162. data/webpack/__mocks__/foremanReact/components/common/ActionButtons/ActionButtons.js +3 -0
  163. data/webpack/__mocks__/foremanReact/redux/API/APISelectors.js +10 -0
  164. data/webpack/__mocks__/foremanReact/redux/API/index.js +10 -0
  165. data/webpack/__mocks__/foremanReact/redux/middlewares/IntervalMiddleware.js +5 -0
  166. metadata +51 -28
  167. data/.travis.yml +0 -5
  168. data/script/travis_run_js_tests.sh +0 -7
  169. data/webpack/ForemanTasks/Components/TaskDetails/TaskDetailsReducer.js +0 -44
  170. data/webpack/ForemanTasks/Components/TaskDetails/__tests__/TaskDetailsReducer.test.js +0 -33
  171. data/webpack/ForemanTasks/Components/TaskDetails/__tests__/__snapshots__/TaskDetailsReducer.test.js.snap +0 -26
  172. data/webpack/ForemanTasks/Components/TaskDetails/__tests__/__snapshots__/integration.test.js.snap +0 -122
  173. data/webpack/ForemanTasks/Components/TaskDetails/__tests__/integration.test.js +0 -63
  174. data/webpack/ForemanTasks/Components/TasksTable/Components/CancelConfirm.js +0 -53
  175. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmationModals.js +0 -56
  176. data/webpack/ForemanTasks/Components/TasksTable/Components/ResumeConfirm.js +0 -52
  177. data/webpack/ForemanTasks/Components/TasksTable/Components/__test__/CancelConfirm.test.js +0 -26
  178. data/webpack/ForemanTasks/Components/TasksTable/Components/__test__/ConfirmationModals.test.js +0 -24
  179. data/webpack/ForemanTasks/Components/TasksTable/Components/__test__/ResumeConfirm.test.js +0 -26
  180. data/webpack/ForemanTasks/Components/TasksTable/Components/__test__/__snapshots__/CancelConfirm.test.js.snap +0 -65
  181. data/webpack/ForemanTasks/Components/TasksTable/Components/__test__/__snapshots__/ConfirmationModals.test.js.snap +0 -30
  182. data/webpack/ForemanTasks/Components/TasksTable/Components/__test__/__snapshots__/ResumeConfirm.test.js.snap +0 -63
  183. data/webpack/ForemanTasks/Components/common/ActionButtons/CancelButton.js +0 -23
  184. data/webpack/ForemanTasks/Components/common/ActionButtons/CancelButton.test.js +0 -26
  185. data/webpack/ForemanTasks/Components/common/ActionButtons/ResumeButton.js +0 -23
  186. data/webpack/ForemanTasks/Components/common/ActionButtons/ResumeButton.test.js +0 -27
  187. data/webpack/ForemanTasks/Components/common/ActionButtons/__snapshots__/CancelButton.test.js.snap +0 -15
  188. data/webpack/ForemanTasks/Components/common/ActionButtons/__snapshots__/ResumeButton.test.js.snap +0 -15
  189. data/webpack/__mocks__/foremanReact/API.js +0 -7
@@ -1,5 +0,0 @@
1
- language: node_js
2
- node_js:
3
- - '10'
4
- - '12'
5
- script: ./script/travis_run_js_tests.sh
@@ -1,7 +0,0 @@
1
- #!/bin/bash
2
- set -ev
3
- if [[ $( git diff --name-only HEAD~1..HEAD webpack/ .travis.yml babel.config.js .eslintrc package.json | wc -l ) -ne 0 ]]; then
4
- npm run test;
5
- npm run publish-coverage;
6
- npm run lint;
7
- fi
@@ -1,44 +0,0 @@
1
- import Immutable from 'seamless-immutable';
2
- import {
3
- FOREMAN_TASK_DETAILS_FETCH_TASK_REQUEST,
4
- FOREMAN_TASK_DETAILS_FETCH_TASK_SUCCESS,
5
- FOREMAN_TASK_DETAILS_STOP_POLLING,
6
- FOREMAN_TASK_DETAILS_START_POLLING,
7
- FOREMAN_TASK_DETAILS_TOGGLE_UNLOCK_MODAL,
8
- FOREMAN_TASK_DETAILS_TOGGLE_FORCE_UNLOCK_MODAL,
9
- } from './TaskDetailsConstants';
10
-
11
- const initialState = Immutable({});
12
-
13
- export default (state = initialState, action) => {
14
- const { type, payload } = action;
15
- let { taskReload, timeoutId } = state;
16
-
17
- switch (type) {
18
- case FOREMAN_TASK_DETAILS_FETCH_TASK_REQUEST:
19
- return state.set('loading', true);
20
- case FOREMAN_TASK_DETAILS_FETCH_TASK_SUCCESS:
21
- if (payload.state === 'stopped') {
22
- clearTimeout(state.timeoutId);
23
- taskReload = false;
24
- timeoutId = null;
25
- }
26
- return state.merge({
27
- loading: false,
28
- ...payload,
29
- taskReload,
30
- timeoutId,
31
- });
32
- case FOREMAN_TASK_DETAILS_STOP_POLLING:
33
- return state.merge({ taskReload: false, timeoutId: null });
34
- case FOREMAN_TASK_DETAILS_START_POLLING:
35
- clearTimeout(state.timeoutId);
36
- return state.merge({ taskReload: true, timeoutId: payload.timeoutId });
37
- case FOREMAN_TASK_DETAILS_TOGGLE_UNLOCK_MODAL:
38
- return state.set('showUnlockModal', !state.showUnlockModal);
39
- case FOREMAN_TASK_DETAILS_TOGGLE_FORCE_UNLOCK_MODAL:
40
- return state.set('showForceUnlockModal', !state.showForceUnlockModal);
41
- default:
42
- return state;
43
- }
44
- };
@@ -1,33 +0,0 @@
1
- import { testReducerSnapshotWithFixtures } from '@theforeman/test';
2
-
3
- import {
4
- FOREMAN_TASK_DETAILS_FETCH_TASK_SUCCESS,
5
- FOREMAN_TASK_DETAILS_STOP_POLLING,
6
- FOREMAN_TASK_DETAILS_START_POLLING,
7
- } from '../TaskDetailsConstants';
8
- import reducer from '../TaskDetailsReducer';
9
-
10
- const fixtures = {
11
- 'should return the initial state': {},
12
- 'should handle FOREMAN_TASK_DETAILS_START_POLLING': {
13
- action: {
14
- type: FOREMAN_TASK_DETAILS_START_POLLING,
15
- payload: { timeoutId: 1 },
16
- },
17
- },
18
- 'should handle FOREMAN_TASK_DETAILS_STOP_POLLING': {
19
- action: {
20
- type: FOREMAN_TASK_DETAILS_STOP_POLLING,
21
- payload: { timeoutId: 1 },
22
- },
23
- },
24
- 'should handle FOREMAN_TASK_DETAILS_FETCH_TASK_SUCCESS': {
25
- action: {
26
- type: FOREMAN_TASK_DETAILS_FETCH_TASK_SUCCESS,
27
- payload: { data: 'some-payload' },
28
- },
29
- },
30
- };
31
-
32
- describe('TaskDetails - Reducer', () =>
33
- testReducerSnapshotWithFixtures(reducer, fixtures));
@@ -1,26 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`TaskDetails - Reducer should handle FOREMAN_TASK_DETAILS_FETCH_TASK_SUCCESS 1`] = `
4
- Object {
5
- "data": "some-payload",
6
- "loading": false,
7
- "taskReload": undefined,
8
- "timeoutId": undefined,
9
- }
10
- `;
11
-
12
- exports[`TaskDetails - Reducer should handle FOREMAN_TASK_DETAILS_START_POLLING 1`] = `
13
- Object {
14
- "taskReload": true,
15
- "timeoutId": 1,
16
- }
17
- `;
18
-
19
- exports[`TaskDetails - Reducer should handle FOREMAN_TASK_DETAILS_STOP_POLLING 1`] = `
20
- Object {
21
- "taskReload": false,
22
- "timeoutId": null,
23
- }
24
- `;
25
-
26
- exports[`TaskDetails - Reducer should return the initial state 1`] = `Object {}`;
@@ -1,122 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`TaskDetails integration test should change the data after reload: task details data should change 1`] = `
4
- Object {
5
- "action": Array [
6
- Array [
7
- Object {
8
- "payload": Object {
9
- "timeoutId": 1,
10
- },
11
- "type": "FOREMAN_TASK_DETAILS_START_POLLING",
12
- },
13
- ],
14
- ],
15
- "state": Object {
16
- "taskDetails": Object {
17
- "label": "new-label",
18
- "loading": false,
19
- "taskReload": true,
20
- "timeoutId": 1,
21
- },
22
- },
23
- }
24
- `;
25
-
26
- exports[`TaskDetails integration test should change the data after reload: task details reload start without error 1`] = `
27
- Array [
28
- Array [
29
- Object {
30
- "type": "FOREMAN_TASK_DETAILS_FETCH_TASK_REQUEST",
31
- },
32
- ],
33
- Array [
34
- Object {
35
- "payload": Object {
36
- "timeoutId": 1,
37
- },
38
- "type": "FOREMAN_TASK_DETAILS_START_POLLING",
39
- },
40
- ],
41
- Array [
42
- Object {
43
- "payload": Object {
44
- "label": "new-label",
45
- },
46
- "type": "FOREMAN_TASK_DETAILS_FETCH_TASK_SUCCESS",
47
- },
48
- ],
49
- Array [
50
- Object {
51
- "payload": Object {
52
- "timeoutId": 1,
53
- },
54
- "type": "FOREMAN_TASK_DETAILS_START_POLLING",
55
- },
56
- ],
57
- ]
58
- `;
59
-
60
- exports[`TaskDetails integration test should flow: initial state 1`] = `
61
- Object {
62
- "taskDetails": Object {
63
- "loading": true,
64
- },
65
- }
66
- `;
67
-
68
- exports[`TaskDetails integration test should flow: task details reload start with error 1`] = `
69
- Array [
70
- Array [
71
- Object {
72
- "type": "FOREMAN_TASK_DETAILS_FETCH_TASK_REQUEST",
73
- },
74
- ],
75
- Array [
76
- Object {
77
- "payload": Object {
78
- "timeoutId": 1,
79
- },
80
- "type": "FOREMAN_TASK_DETAILS_START_POLLING",
81
- },
82
- ],
83
- Array [
84
- Object {
85
- "payload": [TypeError: Cannot read property 'data' of undefined],
86
- "type": "FOREMAN_TASK_DETAILS_FETCH_TASK_FAILURE",
87
- },
88
- ],
89
- ]
90
- `;
91
-
92
- exports[`TaskDetails integration test should flow: task details reload stop 1`] = `
93
- Array [
94
- Array [
95
- Object {
96
- "type": "FOREMAN_TASK_DETAILS_FETCH_TASK_REQUEST",
97
- },
98
- ],
99
- Array [
100
- Object {
101
- "payload": Object {
102
- "timeoutId": 1,
103
- },
104
- "type": "FOREMAN_TASK_DETAILS_START_POLLING",
105
- },
106
- ],
107
- Array [
108
- Object {
109
- "payload": [TypeError: Cannot read property 'data' of undefined],
110
- "type": "FOREMAN_TASK_DETAILS_FETCH_TASK_FAILURE",
111
- },
112
- ],
113
- Array [
114
- Object {
115
- "payload": Object {
116
- "timeoutId": 1,
117
- },
118
- "type": "FOREMAN_TASK_DETAILS_STOP_POLLING",
119
- },
120
- ],
121
- ]
122
- `;
@@ -1,63 +0,0 @@
1
- import React from 'react';
2
-
3
- import API from 'foremanReact/API';
4
- import { IntegrationTestHelper } from '@theforeman/test';
5
-
6
- import TaskDetails, { reducers } from '../index';
7
- import { selectForemanTasks } from '../../../ForemanTasksSelectors';
8
-
9
- jest.mock('../../../ForemanTasksSelectors');
10
- jest.mock('foremanReact/API');
11
- selectForemanTasks.mockImplementation(state => state);
12
- describe('TaskDetails integration test', () => {
13
- beforeEach(() => {
14
- jest.useFakeTimers();
15
- const expectedIntervalId = 1;
16
- jest.useFakeTimers();
17
- setInterval.mockImplementation(() => expectedIntervalId);
18
- });
19
- it('should flow', async () => {
20
- window.location.reload = jest.fn();
21
-
22
- API.get.mockImplementationOnce();
23
- const integrationTestHelper = new IntegrationTestHelper(reducers);
24
-
25
- const component = integrationTestHelper.mount(<TaskDetails id="test" />);
26
- integrationTestHelper.takeStoreSnapshot('initial state');
27
-
28
- const reloadButton = component.find('.reload-button').at(0);
29
- reloadButton.simulate('click');
30
- await IntegrationTestHelper.flushAllPromises();
31
-
32
- integrationTestHelper.takeActionsSnapshot(
33
- 'task details reload start with error'
34
- );
35
-
36
- reloadButton.simulate('click');
37
- await IntegrationTestHelper.flushAllPromises();
38
- jest.advanceTimersByTime(1);
39
- integrationTestHelper.takeActionsSnapshot('task details reload stop');
40
- jest.useRealTimers();
41
- });
42
-
43
- it('should change the data after reload', async () => {
44
- API.get.mockImplementationOnce(() => ({
45
- data: { label: 'new-label' },
46
- }));
47
- const integrationTestHelper = new IntegrationTestHelper(reducers);
48
-
49
- const component = integrationTestHelper.mount(<TaskDetails id="test" />);
50
-
51
- const reloadButton = component.find('.reload-button').at(0);
52
- reloadButton.simulate('click');
53
-
54
- await IntegrationTestHelper.flushAllPromises();
55
- integrationTestHelper.takeActionsSnapshot(
56
- 'task details reload start without error'
57
- );
58
- integrationTestHelper.takeStoreAndLastActionSnapshot(
59
- 'task details data should change'
60
- );
61
- jest.useRealTimers();
62
- });
63
- });
@@ -1,53 +0,0 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
3
- import { sprintf, translate as __ } from 'foremanReact/common/I18n';
4
- import { Button } from 'patternfly-react';
5
- import ForemanModal from 'foremanReact/components/ForemanModal';
6
- import {
7
- CANCEL_CONFIRM_MODAL_ID,
8
- RESUME_CONFIRM_MODAL_ID,
9
- CANCEL_SELECTED_CONFIRM_MODAL_ID,
10
- RESUME_SELECTED_CONFIRM_MODAL_ID,
11
- } from '../TasksTableConstants';
12
-
13
- export const CancelConfirm = ({ closeModal, action, selectedRowsLen, id }) => (
14
- <ForemanModal title={__('Cancel Selected Tasks')} id={id}>
15
- <ForemanModal.Header />
16
- {sprintf(
17
- __(
18
- `This will cancel %s task(s), putting them in the stopped state. Are you sure?`
19
- ),
20
- selectedRowsLen
21
- )}
22
- <ForemanModal.Footer>
23
- <Button onClick={closeModal}>{__('No')}</Button>
24
- <Button
25
- bsStyle="primary"
26
- onClick={() => {
27
- action();
28
- closeModal();
29
- }}
30
- >
31
- {__('Yes')}
32
- </Button>
33
- </ForemanModal.Footer>
34
- </ForemanModal>
35
- );
36
-
37
- CancelConfirm.propTypes = {
38
- closeModal: PropTypes.func.isRequired,
39
- selectedRowsLen: PropTypes.number.isRequired,
40
- action: PropTypes.func,
41
- id: PropTypes.oneOf([
42
- CANCEL_CONFIRM_MODAL_ID,
43
- RESUME_CONFIRM_MODAL_ID,
44
- CANCEL_SELECTED_CONFIRM_MODAL_ID,
45
- RESUME_SELECTED_CONFIRM_MODAL_ID,
46
- ]).isRequired,
47
- };
48
-
49
- CancelConfirm.defaultProps = {
50
- action: () => null,
51
- };
52
-
53
- export default CancelConfirm;
@@ -1,56 +0,0 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
3
- import {
4
- CANCEL_CONFIRM_MODAL_ID,
5
- RESUME_CONFIRM_MODAL_ID,
6
- CANCEL_SELECTED_CONFIRM_MODAL_ID,
7
- RESUME_SELECTED_CONFIRM_MODAL_ID,
8
- } from '../TasksTableConstants';
9
- import { CancelConfirm } from './CancelConfirm';
10
- import { ResumeConfirm } from './ResumeConfirm';
11
-
12
- export const ConfirmationModals = ({
13
- modalProps,
14
- tasksActions,
15
- selectedRowsLen,
16
- }) => (
17
- <React.Fragment>
18
- <CancelConfirm
19
- closeModal={modalProps.cancelModal.setModalClosed}
20
- action={tasksActions.cancelTask}
21
- selectedRowsLen={1}
22
- id={CANCEL_CONFIRM_MODAL_ID}
23
- />
24
- <ResumeConfirm
25
- closeModal={modalProps.resumeModal.setModalClosed}
26
- action={tasksActions.resumeTask}
27
- selectedRowsLen={1}
28
- id={RESUME_CONFIRM_MODAL_ID}
29
- />
30
- <CancelConfirm
31
- closeModal={modalProps.cancelSelectedModal.setModalClosed}
32
- action={tasksActions.cancelSelectedTasks}
33
- selectedRowsLen={selectedRowsLen}
34
- id={CANCEL_SELECTED_CONFIRM_MODAL_ID}
35
- />
36
- <ResumeConfirm
37
- closeModal={modalProps.resumeSelectedModal.setModalClosed}
38
- action={tasksActions.resumeSelectedTasks}
39
- selectedRowsLen={selectedRowsLen}
40
- id={RESUME_SELECTED_CONFIRM_MODAL_ID}
41
- />
42
- </React.Fragment>
43
- );
44
-
45
- ConfirmationModals.propTypes = {
46
- modalProps: PropTypes.object.isRequired,
47
- selectedRowsLen: PropTypes.number.isRequired,
48
- tasksActions: PropTypes.shape({
49
- cancelTask: PropTypes.func,
50
- resumeTask: PropTypes.func,
51
- cancelSelectedTasks: PropTypes.func,
52
- resumeSelectedTasks: PropTypes.func,
53
- }).isRequired,
54
- };
55
-
56
- export default ConfirmationModals;
@@ -1,52 +0,0 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
3
- import { sprintf, translate as __ } from 'foremanReact/common/I18n';
4
- import { Button } from 'patternfly-react';
5
- import ForemanModal from 'foremanReact/components/ForemanModal';
6
- import {
7
- CANCEL_CONFIRM_MODAL_ID,
8
- RESUME_CONFIRM_MODAL_ID,
9
- CANCEL_SELECTED_CONFIRM_MODAL_ID,
10
- RESUME_SELECTED_CONFIRM_MODAL_ID,
11
- } from '../TasksTableConstants';
12
-
13
- export const ResumeConfirm = ({ closeModal, action, selectedRowsLen, id }) => (
14
- <ForemanModal title={__('Resume Selected Tasks')} id={id}>
15
- {sprintf(
16
- __(
17
- `This will resume %s task(s), putting them in the running state. Are you sure?`
18
- ),
19
- selectedRowsLen
20
- )}
21
- <ForemanModal.Footer>
22
- <Button onClick={closeModal}>{__('No')}</Button>
23
- <Button
24
- bsStyle="primary"
25
- onClick={() => {
26
- action();
27
- closeModal();
28
- }}
29
- >
30
- {__('Yes')}
31
- </Button>
32
- </ForemanModal.Footer>
33
- </ForemanModal>
34
- );
35
-
36
- ResumeConfirm.propTypes = {
37
- closeModal: PropTypes.func.isRequired,
38
- selectedRowsLen: PropTypes.number.isRequired,
39
- action: PropTypes.func,
40
- id: PropTypes.oneOf([
41
- CANCEL_CONFIRM_MODAL_ID,
42
- RESUME_CONFIRM_MODAL_ID,
43
- CANCEL_SELECTED_CONFIRM_MODAL_ID,
44
- RESUME_SELECTED_CONFIRM_MODAL_ID,
45
- ]).isRequired,
46
- };
47
-
48
- ResumeConfirm.defaultProps = {
49
- action: () => null,
50
- };
51
-
52
- export default ResumeConfirm;