foreman-tasks 1.1.2 → 2.0.2

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 (132) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +2 -0
  3. data/README.md +2 -0
  4. data/app/controllers/foreman_tasks/api/tasks_controller.rb +33 -1
  5. data/app/controllers/foreman_tasks/tasks_controller.rb +9 -14
  6. data/app/lib/actions/proxy_action.rb +1 -1
  7. data/app/models/foreman_tasks/task.rb +4 -0
  8. data/app/models/foreman_tasks/task/dynflow_task.rb +3 -1
  9. data/app/models/setting/foreman_tasks.rb +1 -1
  10. data/app/services/ui_notifications/tasks/task_bulk_stop.rb +36 -0
  11. data/app/views/foreman_tasks/api/tasks/details.json.rabl +0 -1
  12. data/app/views/foreman_tasks/api/tasks/show.json.rabl +2 -0
  13. data/config/routes.rb +1 -0
  14. data/db/migrate/20200517215015_rename_bookmarks_controller.rb +35 -0
  15. data/db/migrate/20200519093217_drop_dynflow_allow_dangerous_actions_setting.foreman_tasks.rb +5 -0
  16. data/db/migrate/20200611090846_add_task_lock_index_on_resource_type_and_task_id.rb +3 -3
  17. data/db/seeds.d/30-notification_blueprints.rb +7 -0
  18. data/lib/foreman_tasks/engine.rb +2 -7
  19. data/lib/foreman_tasks/version.rb +1 -1
  20. data/locale/action_names.rb +1 -1
  21. data/locale/en/LC_MESSAGES/foreman_tasks.mo +0 -0
  22. data/locale/en/foreman_tasks.po +270 -54
  23. data/locale/foreman_tasks.pot +630 -292
  24. data/locale/fr/LC_MESSAGES/foreman_tasks.mo +0 -0
  25. data/locale/fr/foreman_tasks.po +817 -0
  26. data/locale/ja/LC_MESSAGES/foreman_tasks.mo +0 -0
  27. data/locale/ja/foreman_tasks.po +817 -0
  28. data/locale/zh_CN/LC_MESSAGES/foreman_tasks.mo +0 -0
  29. data/locale/zh_CN/foreman_tasks.po +816 -0
  30. data/package.json +1 -0
  31. data/script/npm_link_foreman_js.sh +26 -0
  32. data/webpack/ForemanTasks/Components/TaskActions/TaskAction.test.js +60 -0
  33. data/webpack/ForemanTasks/Components/{TasksTable/TasksTableActionHelpers.js → TaskActions/TaskActionHelpers.js} +21 -6
  34. data/webpack/ForemanTasks/Components/{TasksTable/__tests__/TasksTableActionHelpers.test.js → TaskActions/TaskActionHelpers.test.js} +2 -2
  35. data/webpack/ForemanTasks/Components/TaskActions/TaskActionsConstants.js +16 -0
  36. data/webpack/ForemanTasks/Components/TaskActions/UnlockModals.js +60 -0
  37. data/webpack/ForemanTasks/Components/TaskActions/UnlockModals.test.js +14 -0
  38. data/webpack/ForemanTasks/Components/TaskActions/__snapshots__/TaskAction.test.js.snap +233 -0
  39. data/webpack/ForemanTasks/Components/TaskActions/__snapshots__/UnlockModals.test.js.snap +25 -0
  40. data/webpack/ForemanTasks/Components/TaskActions/index.js +115 -0
  41. data/webpack/ForemanTasks/Components/TaskDetails/Components/RunningSteps.js +17 -3
  42. data/webpack/ForemanTasks/Components/TaskDetails/Components/Task.js +149 -167
  43. data/webpack/ForemanTasks/Components/TaskDetails/Components/__tests__/RunningSteps.test.js +8 -1
  44. data/webpack/ForemanTasks/Components/TaskDetails/Components/__tests__/Task.test.js +68 -3
  45. data/webpack/ForemanTasks/Components/TaskDetails/Components/__tests__/TaskInfo.test.js +0 -1
  46. data/webpack/ForemanTasks/Components/TaskDetails/Components/__tests__/__snapshots__/RunningSteps.test.js.snap +1 -1
  47. data/webpack/ForemanTasks/Components/TaskDetails/Components/__tests__/__snapshots__/Task.test.js.snap +124 -76
  48. data/webpack/ForemanTasks/Components/TaskDetails/TaskDetails.js +35 -5
  49. data/webpack/ForemanTasks/Components/TaskDetails/TaskDetails.scss +3 -14
  50. data/webpack/ForemanTasks/Components/TaskDetails/TaskDetailsActions.js +40 -16
  51. data/webpack/ForemanTasks/Components/TaskDetails/TaskDetailsConstants.js +3 -4
  52. data/webpack/ForemanTasks/Components/TaskDetails/TaskDetailsReducer.js +0 -6
  53. data/webpack/ForemanTasks/Components/TaskDetails/TaskDetailsSelectors.js +4 -10
  54. data/webpack/ForemanTasks/Components/TaskDetails/TasksDetailsHelper.js +6 -1
  55. data/webpack/ForemanTasks/Components/TaskDetails/__tests__/TaskDetails.fixtures.js +8 -0
  56. data/webpack/ForemanTasks/Components/TaskDetails/__tests__/TaskDetails.test.js +7 -1
  57. data/webpack/ForemanTasks/Components/TaskDetails/__tests__/TaskDetailsActions.test.js +18 -2
  58. data/webpack/ForemanTasks/Components/TaskDetails/__tests__/__snapshots__/TaskDetails.test.js.snap +30 -13
  59. data/webpack/ForemanTasks/Components/TaskDetails/__tests__/__snapshots__/TaskDetailsActions.test.js.snap +91 -0
  60. data/webpack/ForemanTasks/Components/TaskDetails/__tests__/integration.test.js +13 -4
  61. data/webpack/ForemanTasks/Components/TaskDetails/index.js +6 -8
  62. data/webpack/ForemanTasks/Components/TasksDashboard/TasksDashboardActions.js +1 -1
  63. data/webpack/ForemanTasks/Components/TasksDashboard/__tests__/TasksDashboardActions.test.js +2 -2
  64. data/webpack/ForemanTasks/Components/TasksTable/Components/ActionSelectButton.js +14 -1
  65. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/ConfirmModal.js +83 -0
  66. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/ConfirmModalActions.js +106 -0
  67. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/ConfirmModalReducer.js +38 -0
  68. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/ConfirmModalSelectors.js +46 -0
  69. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/ConfirmModal.test.js +36 -0
  70. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/ConfirmModalActions.test.js +205 -0
  71. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/ConfirmModalReducer.test.js +27 -0
  72. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/ConfirmModalSelectors.test.js +55 -0
  73. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/__snapshots__/ConfirmModal.test.js.snap +41 -0
  74. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/__snapshots__/ConfirmModalReducer.test.js.snap +19 -0
  75. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/__snapshots__/ConfirmModalSelectors.test.js.snap +32 -0
  76. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/index.js +29 -0
  77. data/webpack/ForemanTasks/Components/TasksTable/Components/__test__/ActionSelectButton.test.js +1 -0
  78. data/webpack/ForemanTasks/Components/TasksTable/Components/__test__/__snapshots__/ActionSelectButton.test.js.snap +11 -0
  79. data/webpack/ForemanTasks/Components/TasksTable/TasksBulkActions.js +135 -35
  80. data/webpack/ForemanTasks/Components/TasksTable/TasksTable.js +13 -9
  81. data/webpack/ForemanTasks/Components/TasksTable/TasksTableActions.js +26 -66
  82. data/webpack/ForemanTasks/Components/TasksTable/TasksTableConstants.js +10 -12
  83. data/webpack/ForemanTasks/Components/TasksTable/TasksTablePage.js +30 -96
  84. data/webpack/ForemanTasks/Components/TasksTable/TasksTableSchema.js +2 -2
  85. data/webpack/ForemanTasks/Components/TasksTable/TasksTableSelectors.js +8 -4
  86. data/webpack/ForemanTasks/Components/TasksTable/__tests__/TasksBulkActions.test.js +50 -2
  87. data/webpack/ForemanTasks/Components/TasksTable/__tests__/TasksTable.fixtures.js +3 -12
  88. data/webpack/ForemanTasks/Components/TasksTable/__tests__/TasksTableActions.test.js +22 -26
  89. data/webpack/ForemanTasks/Components/TasksTable/__tests__/TasksTablePage.test.js +2 -1
  90. data/webpack/ForemanTasks/Components/TasksTable/__tests__/__snapshots__/SubTasksPage.test.js.snap +3 -14
  91. data/webpack/ForemanTasks/Components/TasksTable/__tests__/__snapshots__/TasksBulkActions.test.js.snap +155 -0
  92. data/webpack/ForemanTasks/Components/TasksTable/__tests__/__snapshots__/TasksIndexPage.test.js.snap +3 -14
  93. data/webpack/ForemanTasks/Components/TasksTable/__tests__/__snapshots__/TasksTableActions.test.js.snap +17 -124
  94. data/webpack/ForemanTasks/Components/TasksTable/__tests__/__snapshots__/TasksTablePage.test.js.snap +63 -133
  95. data/webpack/ForemanTasks/Components/TasksTable/formatters/__test__/__snapshots__/actionCellFormatter.test.js.snap +1 -0
  96. data/webpack/ForemanTasks/Components/TasksTable/formatters/__test__/__snapshots__/selectionCellFormatter.test.js.snap +2 -0
  97. data/webpack/ForemanTasks/Components/TasksTable/formatters/__test__/actionCellFormatter.test.js +1 -1
  98. data/webpack/ForemanTasks/Components/TasksTable/formatters/__test__/selectionCellFormatter.test.js +1 -1
  99. data/webpack/ForemanTasks/Components/TasksTable/formatters/actionCellFormatter.js +10 -7
  100. data/webpack/ForemanTasks/Components/TasksTable/formatters/selectionCellFormatter.js +7 -0
  101. data/webpack/ForemanTasks/Components/TasksTable/index.js +2 -2
  102. data/webpack/ForemanTasks/Components/common/ActionButtons/ActionButton.js +55 -19
  103. data/webpack/ForemanTasks/Components/common/ActionButtons/ActionButton.test.js +75 -19
  104. data/webpack/ForemanTasks/Components/common/ActionButtons/__snapshots__/ActionButton.test.js.snap +88 -21
  105. data/webpack/ForemanTasks/Components/common/ClickConfirmation/ClickConfirmation.scss +9 -0
  106. data/webpack/ForemanTasks/Components/common/ClickConfirmation/ClickConfirmation.test.js +44 -0
  107. data/webpack/ForemanTasks/Components/common/ClickConfirmation/__snapshots__/ClickConfirmation.test.js.snap +52 -0
  108. data/webpack/ForemanTasks/Components/common/ClickConfirmation/index.js +59 -66
  109. data/webpack/ForemanTasks/Components/common/{ToastTypesConstants.js → ToastsHelpers/ToastTypesConstants.js} +0 -0
  110. data/webpack/ForemanTasks/Components/common/ToastsHelpers/index.js +15 -0
  111. data/webpack/ForemanTasks/ForemanTasksReducers.js +2 -0
  112. data/webpack/ForemanTasks/Routes/ForemanTasksRoutes.test.js +2 -1
  113. data/webpack/__mocks__/foremanReact/components/ForemanModal/ForemanModalHooks.js +2 -2
  114. data/webpack/__mocks__/foremanReact/components/ForemanModal/index.js +17 -3
  115. data/webpack/__mocks__/foremanReact/components/common/ActionButtons/ActionButtons.js +3 -0
  116. data/webpack/__mocks__/foremanReact/{API.js → redux/API.js} +1 -1
  117. metadata +41 -21
  118. data/webpack/ForemanTasks/Components/TasksTable/Components/CancelConfirm.js +0 -53
  119. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmationModals.js +0 -56
  120. data/webpack/ForemanTasks/Components/TasksTable/Components/ResumeConfirm.js +0 -52
  121. data/webpack/ForemanTasks/Components/TasksTable/Components/__test__/CancelConfirm.test.js +0 -26
  122. data/webpack/ForemanTasks/Components/TasksTable/Components/__test__/ConfirmationModals.test.js +0 -24
  123. data/webpack/ForemanTasks/Components/TasksTable/Components/__test__/ResumeConfirm.test.js +0 -26
  124. data/webpack/ForemanTasks/Components/TasksTable/Components/__test__/__snapshots__/CancelConfirm.test.js.snap +0 -65
  125. data/webpack/ForemanTasks/Components/TasksTable/Components/__test__/__snapshots__/ConfirmationModals.test.js.snap +0 -30
  126. data/webpack/ForemanTasks/Components/TasksTable/Components/__test__/__snapshots__/ResumeConfirm.test.js.snap +0 -63
  127. data/webpack/ForemanTasks/Components/common/ActionButtons/CancelButton.js +0 -23
  128. data/webpack/ForemanTasks/Components/common/ActionButtons/CancelButton.test.js +0 -26
  129. data/webpack/ForemanTasks/Components/common/ActionButtons/ResumeButton.js +0 -23
  130. data/webpack/ForemanTasks/Components/common/ActionButtons/ResumeButton.test.js +0 -27
  131. data/webpack/ForemanTasks/Components/common/ActionButtons/__snapshots__/CancelButton.test.js.snap +0 -15
  132. data/webpack/ForemanTasks/Components/common/ActionButtons/__snapshots__/ResumeButton.test.js.snap +0 -15
@@ -1,21 +1,24 @@
1
1
  import { testActionSnapshotWithFixtures } from '@theforeman/test';
2
- import API from 'foremanReact/API';
2
+ import { API } from 'foremanReact/redux/API';
3
3
  import {
4
4
  bulkCancelById,
5
5
  bulkCancelBySearch,
6
6
  bulkResumeById,
7
7
  bulkResumeBySearch,
8
+ bulkForceCancelById,
9
+ bulkForceCancelBySearch,
8
10
  } from '../TasksBulkActions';
9
11
 
10
12
  jest.mock('foremanReact/components/common/table', () => ({
11
13
  getTableItemsAction: jest.fn(controller => controller),
12
14
  }));
13
15
 
14
- jest.mock('foremanReact/API');
16
+ jest.mock('foremanReact/redux/API');
15
17
 
16
18
  const task = {
17
19
  id: 'some-id',
18
20
  name: 'some-name',
21
+ canEdit: true,
19
22
  };
20
23
 
21
24
  const fixtures = {
@@ -68,6 +71,28 @@ const fixtures = {
68
71
  }));
69
72
  return bulkCancelById({ selected, url: 'some-url' });
70
73
  },
74
+
75
+ 'handles bulkForceCancelById requests': () => {
76
+ const selected = [{ ...task, isCancellable: true }];
77
+
78
+ API.post.mockImplementation(() => ({
79
+ data: {
80
+ stopped_length: 2,
81
+ skipped_length: 4,
82
+ },
83
+ }));
84
+ return bulkForceCancelById({ selected, url: 'some-url' });
85
+ },
86
+
87
+ 'handles bulkForceCancelById requests that fail': () => {
88
+ const selected = [{ ...task, isResumable: true }];
89
+
90
+ API.post.mockImplementation(() =>
91
+ Promise.reject(new Error('Network Error'))
92
+ );
93
+ return bulkForceCancelById({ selected, url: 'some-url' });
94
+ },
95
+
71
96
  'handles bulkCancelById requests that are not cancellable': () => {
72
97
  const selected = [{ ...task, isCancellable: false }];
73
98
  return bulkCancelById({ selected, url: 'some-url' });
@@ -77,6 +102,11 @@ const fixtures = {
77
102
  return bulkResumeById({ selected, url: 'some-url' });
78
103
  },
79
104
 
105
+ 'handles bulkForceCancelById requests that are stopped': () => {
106
+ const selected = [{ ...task, isResumable: false, state: 'stopped' }];
107
+ return bulkForceCancelById({ selected, url: 'some-url' });
108
+ },
109
+
80
110
  'handles bulkCancelBySearch requests': () => {
81
111
  API.post.mockImplementation(() => ({
82
112
  data: {
@@ -105,6 +135,24 @@ const fixtures = {
105
135
  parentTaskID: 'parent',
106
136
  });
107
137
  },
138
+ 'handles bulkForceCancelBySearch requests': () =>
139
+ bulkForceCancelBySearch({
140
+ query: { search: {} },
141
+ url: 'some-url',
142
+ parentTaskID: 'parent',
143
+ }),
144
+ 'handles bulkCancelById requests with canEdit false': () => {
145
+ const selected = [{ ...task, isCancellable: true, canEdit: false }];
146
+ return bulkCancelById({ selected, url: 'some-url' });
147
+ },
148
+ 'handles bulkResumeById requests with canEdit false': () => {
149
+ const selected = [{ ...task, isResumable: false, canEdit: false }];
150
+ return bulkResumeById({ selected, url: 'some-url' });
151
+ },
152
+ 'handles bulkForceCancelById requests with canEdit false': () => {
153
+ const selected = [{ ...task, isResumable: false, canEdit: false }];
154
+ return bulkForceCancelById({ selected, url: 'some-url' });
155
+ },
108
156
  };
109
157
 
110
158
  describe('TasksTable bulk actions', () => {
@@ -4,17 +4,12 @@ export const minProps = {
4
4
  getTableItems: jest.fn(),
5
5
  getBreadcrumbs: jest.fn(),
6
6
  itemCount: 2,
7
- cancelTask: jest.fn(),
8
- resumeTask: jest.fn(),
9
- bulkResumeById: jest.fn(),
10
- bulkCancelById: jest.fn(),
11
- bulkResumeBySearch: jest.fn(),
12
- bulkCancelBySearch: jest.fn(),
13
7
  selectPage: jest.fn(),
14
8
  selectAllRows: jest.fn(),
15
9
  unselectAllRows: jest.fn(),
16
10
  selectRow: jest.fn(),
17
11
  unselectRow: jest.fn(),
12
+ reloadPage: jest.fn(),
18
13
  selectedRows: [],
19
14
  pagination: {
20
15
  page: 1,
@@ -27,12 +22,8 @@ export const minProps = {
27
22
  order: 'w',
28
23
  },
29
24
  openClickedModal: jest.fn(),
30
- modalProps: {
31
- cancelSelectedModal: {},
32
- resumeSelectedModal: {},
33
- cancelModal: {},
34
- resumeModal: {},
35
- },
25
+ openModalAction: jest.fn(),
26
+ openModal: jest.fn(),
36
27
  };
37
28
 
38
29
  export default {
@@ -2,51 +2,31 @@ import {
2
2
  testActionSnapshotWithFixtures,
3
3
  IntegrationTestHelper,
4
4
  } from '@theforeman/test';
5
- import API from 'foremanReact/API';
6
5
  import { TASKS_TABLE_ID } from '../TasksTableConstants';
7
6
  import {
8
7
  getTableItems,
9
8
  cancelTask,
10
- cancelTaskRequest,
11
9
  resumeTask,
12
- resumeTaskRequest,
10
+ forceCancelTask,
13
11
  selectPage,
12
+ openClickedModal,
13
+ openModalAction,
14
14
  } from '../TasksTableActions';
15
15
 
16
16
  jest.mock('foremanReact/components/common/table', () => ({
17
17
  getTableItemsAction: jest.fn(controller => controller),
18
18
  }));
19
19
 
20
- jest.mock('foremanReact/API');
21
-
22
- API.post.mockImplementation(() => ({ data: 'some-data' }));
23
-
24
20
  const taskInfo = {
25
21
  taskId: 'some-id',
26
22
  taskName: 'some-name',
27
23
  };
28
24
 
29
25
  const fixtures = {
30
- 'should cancelTaskRequest and succeed': () =>
31
- cancelTaskRequest('some-id', 'some-name'),
32
- 'should cancelTaskRequest and fail': () => {
33
- API.post.mockImplementation(() =>
34
- Promise.reject(new Error('Network Error'))
35
- );
36
- return cancelTaskRequest('some-id', 'some-name');
37
- },
38
-
39
- 'should resumeTaskRequest and succeed': () => {
40
- API.post.mockImplementation(() => ({ data: 'some-data' }));
41
- return resumeTaskRequest('some-id', 'some-name');
42
- },
43
- 'should resumeTaskRequest and fail': () => {
44
- API.post.mockImplementation(() =>
45
- Promise.reject(new Error('Network Error'))
46
- );
47
- return resumeTaskRequest('some-id', 'some-name');
48
- },
49
26
  'should selectPage and succeed': () => selectPage([{ id: 'some-id' }]),
27
+ 'handles openClickedModal': () =>
28
+ openClickedModal({ ...taskInfo, setModalOpen: jest.fn() }),
29
+ 'handles openModalAction': () => openModalAction('some-modal-id', jest.fn()),
50
30
  };
51
31
  describe('TasksTable actions', () => {
52
32
  it('getTableItems should reuse common/table/getTableItemsAction', () => {
@@ -65,5 +45,21 @@ describe('TasksTable actions', () => {
65
45
  await IntegrationTestHelper.flushAllPromises();
66
46
  expect(dispatch.mock.calls).toHaveLength(3);
67
47
  });
48
+ it('should forceCancelTask', async () => {
49
+ const dispatch = jest.fn();
50
+ forceCancelTask({ ...taskInfo, url: 'some-url' })(dispatch);
51
+ await IntegrationTestHelper.flushAllPromises();
52
+ expect(dispatch.mock.calls).toHaveLength(3);
53
+ });
54
+ it('openClickedModal opens modal', () => {
55
+ const setModalOpen = jest.fn();
56
+ openClickedModal({ ...taskInfo, setModalOpen });
57
+ expect(setModalOpen).toHaveBeenCalled();
58
+ });
59
+ it('openModalAction opens modal', () => {
60
+ const setModalOpen = jest.fn();
61
+ openModalAction('some-modal-id', setModalOpen);
62
+ expect(setModalOpen).toHaveBeenCalled();
63
+ });
68
64
  testActionSnapshotWithFixtures(fixtures);
69
65
  });
@@ -12,9 +12,10 @@ const history = {
12
12
  const fixtures = {
13
13
  'render with minimal props': { ...minProps, history },
14
14
 
15
- 'render with Breadcrubs': {
15
+ 'render with Breadcrubs and edit permissions': {
16
16
  ...minProps,
17
17
  history,
18
+ results: [{ action: 'a', canEdit: true }],
18
19
  getBreadcrumbs: () => ({
19
20
  breadcrumbItems: [
20
21
  { caption: 'Tasks', url: `/foreman_tasks/tasks` },
@@ -2,11 +2,6 @@
2
2
 
3
3
  exports[`SubTasksPage rendering render with minimal props 1`] = `
4
4
  <Connect(TasksTablePage)
5
- bulkCancelById={[MockFunction]}
6
- bulkCancelBySearch={[MockFunction]}
7
- bulkResumeById={[MockFunction]}
8
- bulkResumeBySearch={[MockFunction]}
9
- cancelTask={[MockFunction]}
10
5
  createHeader={[Function]}
11
6
  getBreadcrumbs={[MockFunction]}
12
7
  getTableItems={[MockFunction]}
@@ -25,15 +20,9 @@ exports[`SubTasksPage rendering render with minimal props 1`] = `
25
20
  },
26
21
  }
27
22
  }
28
- modalProps={
29
- Object {
30
- "cancelModal": Object {},
31
- "cancelSelectedModal": Object {},
32
- "resumeModal": Object {},
33
- "resumeSelectedModal": Object {},
34
- }
35
- }
36
23
  openClickedModal={[MockFunction]}
24
+ openModal={[MockFunction]}
25
+ openModalAction={[MockFunction]}
37
26
  pagination={
38
27
  Object {
39
28
  "page": 1,
@@ -41,13 +30,13 @@ exports[`SubTasksPage rendering render with minimal props 1`] = `
41
30
  }
42
31
  }
43
32
  parentTaskID="some-id"
33
+ reloadPage={[MockFunction]}
44
34
  results={
45
35
  Array [
46
36
  "a",
47
37
  "b",
48
38
  ]
49
39
  }
50
- resumeTask={[MockFunction]}
51
40
  selectAllRows={[MockFunction]}
52
41
  selectPage={[MockFunction]}
53
42
  selectRow={[MockFunction]}
@@ -48,6 +48,22 @@ Array [
48
48
  ]
49
49
  `;
50
50
 
51
+ exports[`TasksTable bulk actions handles bulkCancelById requests with canEdit false 1`] = `
52
+ Array [
53
+ Array [
54
+ Object {
55
+ "payload": Object {
56
+ "message": Object {
57
+ "message": "Not all the selected tasks can be cancelled",
58
+ "type": "warning",
59
+ },
60
+ },
61
+ "type": "TOASTS_ADD",
62
+ },
63
+ ],
64
+ ]
65
+ `;
66
+
51
67
  exports[`TasksTable bulk actions handles bulkCancelBySearch requests 1`] = `
52
68
  Array [
53
69
  Array [
@@ -69,6 +85,129 @@ Array [
69
85
  ]
70
86
  `;
71
87
 
88
+ exports[`TasksTable bulk actions handles bulkForceCancelById requests 1`] = `
89
+ Array [
90
+ Array [
91
+ Object {
92
+ "type": "TASKS_FORCE_CANCEL_REQUEST",
93
+ },
94
+ ],
95
+ Array [
96
+ Object {
97
+ "type": "TASKS_FORCE_CANCEL_SUCCESS",
98
+ },
99
+ ],
100
+ Array [
101
+ Object {
102
+ "payload": Object {
103
+ "message": Object {
104
+ "message": "2 task(s) cancelled with force",
105
+ "type": "success",
106
+ },
107
+ },
108
+ "type": "TOASTS_ADD",
109
+ },
110
+ ],
111
+ Array [
112
+ Object {
113
+ "payload": Object {
114
+ "message": Object {
115
+ "message": "4 task(s) are already stopped",
116
+ "type": "warning",
117
+ },
118
+ },
119
+ "type": "TOASTS_ADD",
120
+ },
121
+ ],
122
+ Array [
123
+ "TASKS_TABLE",
124
+ ],
125
+ Array [
126
+ [Function],
127
+ ],
128
+ ]
129
+ `;
130
+
131
+ exports[`TasksTable bulk actions handles bulkForceCancelById requests that are stopped 1`] = `
132
+ Array [
133
+ Array [
134
+ Object {
135
+ "payload": Object {
136
+ "message": Object {
137
+ "message": "1 task(s) are already stopped",
138
+ "type": "warning",
139
+ },
140
+ },
141
+ "type": "TOASTS_ADD",
142
+ },
143
+ ],
144
+ ]
145
+ `;
146
+
147
+ exports[`TasksTable bulk actions handles bulkForceCancelById requests that fail 1`] = `
148
+ Array [
149
+ Array [
150
+ Object {
151
+ "type": "TASKS_FORCE_CANCEL_REQUEST",
152
+ },
153
+ ],
154
+ Array [
155
+ Object {
156
+ "error": [Error: Network Error],
157
+ "type": "TASKS_FORCE_CANCEL_FAILURE",
158
+ },
159
+ ],
160
+ Array [
161
+ Object {
162
+ "payload": Object {
163
+ "message": Object {
164
+ "message": "Cannot force cancel tasks at the moment Error: Network Error",
165
+ "type": "error",
166
+ },
167
+ },
168
+ "type": "TOASTS_ADD",
169
+ },
170
+ ],
171
+ ]
172
+ `;
173
+
174
+ exports[`TasksTable bulk actions handles bulkForceCancelById requests with canEdit false 1`] = `
175
+ Array [
176
+ Array [
177
+ Object {
178
+ "payload": Object {
179
+ "message": Object {
180
+ "message": "User has no permission for 1 task(s)",
181
+ "type": "warning",
182
+ },
183
+ },
184
+ "type": "TOASTS_ADD",
185
+ },
186
+ ],
187
+ ]
188
+ `;
189
+
190
+ exports[`TasksTable bulk actions handles bulkForceCancelBySearch requests 1`] = `
191
+ Array [
192
+ Array [
193
+ Object {
194
+ "type": "TASKS_FORCE_CANCEL_REQUEST",
195
+ },
196
+ ],
197
+ Array [
198
+ Object {
199
+ "payload": Object {
200
+ "message": Object {
201
+ "message": "Canceling with force selected tasks, this might take a while",
202
+ "type": "info",
203
+ },
204
+ },
205
+ "type": "TOASTS_ADD",
206
+ },
207
+ ],
208
+ ]
209
+ `;
210
+
72
211
  exports[`TasksTable bulk actions handles bulkResumeById requests that are not resumable 1`] = `
73
212
  Array [
74
213
  Array [
@@ -112,6 +251,22 @@ Array [
112
251
  ]
113
252
  `;
114
253
 
254
+ exports[`TasksTable bulk actions handles bulkResumeById requests with canEdit false 1`] = `
255
+ Array [
256
+ Array [
257
+ Object {
258
+ "payload": Object {
259
+ "message": Object {
260
+ "message": "Not all the selected tasks can be resumed",
261
+ "type": "warning",
262
+ },
263
+ },
264
+ "type": "TOASTS_ADD",
265
+ },
266
+ ],
267
+ ]
268
+ `;
269
+
115
270
  exports[`TasksTable bulk actions handles bulkResumeBySearch requests 1`] = `
116
271
  Array [
117
272
  Array [
@@ -2,11 +2,6 @@
2
2
 
3
3
  exports[`TasksIndexPage rendering render with minimal props 1`] = `
4
4
  <Connect(TasksTablePage)
5
- bulkCancelById={[MockFunction]}
6
- bulkCancelBySearch={[MockFunction]}
7
- bulkResumeById={[MockFunction]}
8
- bulkResumeBySearch={[MockFunction]}
9
- cancelTask={[MockFunction]}
10
5
  getBreadcrumbs={[MockFunction]}
11
6
  getTableItems={[MockFunction]}
12
7
  history={
@@ -17,28 +12,22 @@ exports[`TasksIndexPage rendering render with minimal props 1`] = `
17
12
  }
18
13
  }
19
14
  itemCount={2}
20
- modalProps={
21
- Object {
22
- "cancelModal": Object {},
23
- "cancelSelectedModal": Object {},
24
- "resumeModal": Object {},
25
- "resumeSelectedModal": Object {},
26
- }
27
- }
28
15
  openClickedModal={[MockFunction]}
16
+ openModal={[MockFunction]}
17
+ openModalAction={[MockFunction]}
29
18
  pagination={
30
19
  Object {
31
20
  "page": 1,
32
21
  "perPage": 10,
33
22
  }
34
23
  }
24
+ reloadPage={[MockFunction]}
35
25
  results={
36
26
  Array [
37
27
  "a",
38
28
  "b",
39
29
  ]
40
30
  }
41
- resumeTask={[MockFunction]}
42
31
  selectAllRows={[MockFunction]}
43
32
  selectPage={[MockFunction]}
44
33
  selectRow={[MockFunction]}