foreman-tasks 11.0.6 → 11.0.7

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 (39) hide show
  1. checksums.yaml +4 -4
  2. data/lib/foreman_tasks/version.rb +1 -1
  3. data/webpack/ForemanTasks/Components/TaskDetails/Components/Task.js +37 -9
  4. data/webpack/ForemanTasks/Components/TaskDetails/Components/TaskButtons.js +19 -16
  5. data/webpack/ForemanTasks/Components/TaskDetails/Components/__tests__/TaskButtons.test.js +197 -71
  6. data/webpack/ForemanTasks/Components/TaskDetails/Components/__tests__/__snapshots__/Task.test.js.snap +24 -40
  7. data/webpack/ForemanTasks/Components/TaskDetails/__tests__/__snapshots__/TaskDetails.test.js.snap +2 -16
  8. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/ConfirmModalSelectors.js +0 -16
  9. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/GenericConfirmModal.js +70 -0
  10. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/ConfirmModalSelectors.test.js +25 -14
  11. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/__snapshots__/ConfirmModalSelectors.test.js.snap +8 -7
  12. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/index.test.js +409 -0
  13. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/createBulkTaskModal.js +67 -0
  14. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/createTaskModal.js +51 -0
  15. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/index.js +73 -23
  16. data/webpack/ForemanTasks/Components/TasksTable/TasksTable.js +5 -2
  17. data/webpack/ForemanTasks/Components/TasksTable/TasksTableConstants.js +1 -1
  18. data/webpack/ForemanTasks/Components/TasksTable/TasksTablePage.js +67 -11
  19. data/webpack/ForemanTasks/Components/TasksTable/__tests__/__snapshots__/TasksTablePage.test.js.snap +86 -6
  20. data/webpack/ForemanTasks/Components/common/ClickConfirmation/ClickConfirmation.test.js +225 -39
  21. data/webpack/ForemanTasks/Components/common/ClickConfirmation/index.js +136 -37
  22. metadata +6 -19
  23. data/webpack/ForemanTasks/Components/TaskActions/UnlockModals.js +0 -60
  24. data/webpack/ForemanTasks/Components/TaskActions/UnlockModals.test.js +0 -14
  25. data/webpack/ForemanTasks/Components/TaskActions/__snapshots__/UnlockModals.test.js.snap +0 -25
  26. data/webpack/ForemanTasks/Components/TaskDetails/Components/__tests__/__snapshots__/TaskButtons.test.js.snap +0 -212
  27. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/ConfirmModal.js +0 -83
  28. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/ConfirmModalActions.js +0 -106
  29. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/ConfirmModalReducer.js +0 -38
  30. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/ConfirmModal.test.js +0 -36
  31. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/ConfirmModalActions.test.js +0 -205
  32. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/ConfirmModalReducer.test.js +0 -27
  33. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/__snapshots__/ConfirmModal.test.js.snap +0 -41
  34. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/__snapshots__/ConfirmModalReducer.test.js.snap +0 -19
  35. data/webpack/ForemanTasks/Components/common/ClickConfirmation/ClickConfirmation.scss +0 -9
  36. data/webpack/ForemanTasks/Components/common/ClickConfirmation/__snapshots__/ClickConfirmation.test.js.snap +0 -52
  37. data/webpack/__mocks__/foremanReact/components/ForemanModal/ForemanModalActions.js +0 -2
  38. data/webpack/__mocks__/foremanReact/components/ForemanModal/ForemanModalHooks.js +0 -10
  39. data/webpack/__mocks__/foremanReact/components/ForemanModal/index.js +0 -18
@@ -1,106 +0,0 @@
1
- import {
2
- resumeTask,
3
- cancelTask,
4
- forceCancelTask,
5
- } from '../../TasksTableActions';
6
- import {
7
- bulkCancelBySearch,
8
- bulkCancelById,
9
- bulkResumeBySearch,
10
- bulkResumeById,
11
- bulkForceCancelBySearch,
12
- bulkForceCancelById,
13
- } from '../../TasksBulkActions';
14
- import { selectClicked, selectSelectedTasks } from './ConfirmModalSelectors';
15
- import { selectAllRowsSelected } from '../../TasksTableSelectors';
16
- import {
17
- CANCEL_MODAL,
18
- RESUME_MODAL,
19
- CANCEL_SELECTED_MODAL,
20
- RESUME_SELECTED_MODAL,
21
- FORCE_UNLOCK_SELECTED_MODAL,
22
- } from '../../TasksTableConstants';
23
- import { FORCE_UNLOCK_MODAL } from '../../../TaskActions/TaskActionsConstants';
24
-
25
- export default {
26
- [CANCEL_SELECTED_MODAL]: ({ url, query, parentTaskID }) => (
27
- dispatch,
28
- getState
29
- ) => {
30
- if (selectAllRowsSelected(getState())) {
31
- return dispatch(bulkCancelBySearch({ query, parentTaskID }));
32
- }
33
- return dispatch(
34
- bulkCancelById({
35
- selected: selectSelectedTasks(getState()),
36
- url,
37
- parentTaskID,
38
- })
39
- );
40
- },
41
- [CANCEL_MODAL]: ({ url, parentTaskID }) => (dispatch, getState) => {
42
- const { taskId, taskName } = selectClicked(getState());
43
- return dispatch(
44
- cancelTask({
45
- taskId,
46
- taskName,
47
- url,
48
- parentTaskID,
49
- })
50
- );
51
- },
52
- [RESUME_SELECTED_MODAL]: ({ url, query, parentTaskID }) => (
53
- dispatch,
54
- getState
55
- ) => {
56
- if (selectAllRowsSelected(getState())) {
57
- return dispatch(bulkResumeBySearch({ query, parentTaskID }));
58
- }
59
- return dispatch(
60
- bulkResumeById({
61
- selected: selectSelectedTasks(getState()),
62
- url,
63
- parentTaskID,
64
- })
65
- );
66
- },
67
-
68
- [RESUME_MODAL]: ({ url, parentTaskID }) => (dispatch, getState) => {
69
- const { taskId, taskName } = selectClicked(getState());
70
- return dispatch(
71
- resumeTask({
72
- taskId,
73
- taskName,
74
- url,
75
- parentTaskID,
76
- })
77
- );
78
- },
79
-
80
- [FORCE_UNLOCK_MODAL]: ({ url, parentTaskID }) => (dispatch, getState) => {
81
- const { taskId, taskName } = selectClicked(getState());
82
- return dispatch(
83
- forceCancelTask({
84
- taskId,
85
- taskName,
86
- url,
87
- parentTaskID,
88
- })
89
- );
90
- },
91
- [FORCE_UNLOCK_SELECTED_MODAL]: ({ url, query, parentTaskID }) => (
92
- dispatch,
93
- getState
94
- ) => {
95
- if (selectAllRowsSelected(getState())) {
96
- return dispatch(bulkForceCancelBySearch({ query, parentTaskID }));
97
- }
98
- return dispatch(
99
- bulkForceCancelById({
100
- selected: selectSelectedTasks(getState()),
101
- url,
102
- parentTaskID,
103
- })
104
- );
105
- },
106
- };
@@ -1,38 +0,0 @@
1
- import Immutable from 'seamless-immutable';
2
- import {
3
- UPDATE_MODAL,
4
- CANCEL_SELECTED_MODAL,
5
- RESUME_SELECTED_MODAL,
6
- RESUME_MODAL,
7
- CANCEL_MODAL,
8
- } from '../../TasksTableConstants';
9
-
10
- const initialState = Immutable({});
11
-
12
- export const ConfirmModalReducer = (state = initialState, action) => {
13
- const { type, payload } = action;
14
- switch (type) {
15
- case UPDATE_MODAL:
16
- switch (payload.modalID) {
17
- case CANCEL_SELECTED_MODAL:
18
- case CANCEL_MODAL:
19
- return state.merge({
20
- actionText: 'cancel',
21
- actionState: 'stopped',
22
- actionType: payload.modalID,
23
- });
24
- case RESUME_SELECTED_MODAL:
25
- case RESUME_MODAL:
26
- return state.merge({
27
- actionText: 'resume',
28
- actionState: 'running',
29
- actionType: payload.modalID,
30
- });
31
- default:
32
- return state.set('actionType', payload.modalID);
33
- }
34
- default:
35
- return state;
36
- }
37
- };
38
- export default ConfirmModalReducer;
@@ -1,36 +0,0 @@
1
- import { testComponentSnapshotsWithFixtures } from '@theforeman/test';
2
- import { ConfirmModal } from '../ConfirmModal';
3
- import { RESUME_SELECTED_MODAL } from '../../../TasksTableConstants';
4
- import { FORCE_UNLOCK_MODAL } from '../../../../TaskActions/TaskActionsConstants';
5
-
6
- const fixtures = {
7
- 'renders ConfirmModal': {
8
- actionType: RESUME_SELECTED_MODAL,
9
- actionText: 'some text',
10
- actionState: 'some state',
11
- selectedRowsLen: 1,
12
- id: 'modalID',
13
- parentTaskID: 'parent-id',
14
- allRowsSelected: true,
15
- url: 'some-url',
16
- uriQuery: { state: 'stopped' },
17
- setModalClosed: jest.fn(),
18
- },
19
-
20
- 'renders ConfirmModal for unlock ': {
21
- actionType: FORCE_UNLOCK_MODAL,
22
- actionText: 'some text',
23
- actionState: 'some state',
24
- selectedRowsLen: 1,
25
- id: 'modalID',
26
- parentTaskID: 'parent-id',
27
- allRowsSelected: true,
28
- url: 'some-url',
29
- uriQuery: { state: 'stopped' },
30
- setModalClosed: jest.fn(),
31
- },
32
- };
33
-
34
- describe('ConfirmModal', () => {
35
- testComponentSnapshotsWithFixtures(ConfirmModal, fixtures);
36
- });
@@ -1,205 +0,0 @@
1
- import taskActions from '../ConfirmModalActions';
2
- import {
3
- CANCEL_MODAL,
4
- RESUME_MODAL,
5
- CANCEL_SELECTED_MODAL,
6
- RESUME_SELECTED_MODAL,
7
- FORCE_UNLOCK_SELECTED_MODAL,
8
- } from '../../../TasksTableConstants';
9
-
10
- import { FORCE_UNLOCK_MODAL } from '../../../../TaskActions/TaskActionsConstants';
11
-
12
- import {
13
- resumeTask,
14
- cancelTask,
15
- forceCancelTask,
16
- } from '../../../TasksTableActions';
17
- import {
18
- bulkCancelBySearch,
19
- bulkCancelById,
20
- bulkResumeBySearch,
21
- bulkResumeById,
22
- bulkForceCancelBySearch,
23
- bulkForceCancelById,
24
- } from '../../../TasksBulkActions';
25
-
26
- jest.mock('../../../TasksBulkActions');
27
- jest.mock('../../../TasksTableActions');
28
-
29
- const bulkCancelBySearchMock = 'bulkCancelBySearchMock';
30
- const bulkCancelByIdMock = 'bulkCancelByIdMock';
31
- const bulkResumeBySearchMock = 'bulkResumeBySearchMock';
32
- const bulkResumeByIdMock = 'bulkResumeByIdMock';
33
- const bulkForceCancelBySearchMock = 'bulkForceCancelBySearchMock';
34
- const bulkForceCancelByIdMock = 'bulkForceCancelByIdMock';
35
- const resumeTaskMock = 'resumeTaskMock';
36
- const cancelTaskMock = 'cancelTaskMock';
37
- const forceCancelTaskMock = 'forceCancelTaskMock';
38
-
39
- bulkCancelBySearch.mockImplementation(() => bulkCancelBySearchMock);
40
- bulkCancelById.mockImplementation(() => bulkCancelByIdMock);
41
- bulkResumeBySearch.mockImplementation(() => bulkResumeBySearchMock);
42
- bulkResumeById.mockImplementation(() => bulkResumeByIdMock);
43
- bulkForceCancelBySearch.mockImplementation(() => bulkForceCancelBySearchMock);
44
- bulkForceCancelById.mockImplementation(() => bulkForceCancelByIdMock);
45
- resumeTask.mockImplementation(() => resumeTaskMock);
46
- cancelTask.mockImplementation(() => cancelTaskMock);
47
- forceCancelTask.mockImplementation(() => forceCancelTaskMock);
48
-
49
- const url = 'some-url';
50
- const query = 'some-query';
51
- const parentTaskID = 'some-parentTaskID';
52
-
53
- const runWithGetState = (state, action, dispatch, ...params) => {
54
- const getState = () => state;
55
- action(...params)(dispatch, getState);
56
- };
57
-
58
- const clickedState = {
59
- foremanTasks: {
60
- tasksTable: {
61
- tasksTableQuery: {
62
- clicked: { taskId: 'some-id', taskName: 'some-name' },
63
- },
64
- },
65
- },
66
- };
67
-
68
- const selectedState = {
69
- foremanTasks: {
70
- tasksTable: {
71
- tasksTableQuery: {
72
- allRowsSelected: false,
73
- selectedRows: [1, 2, 3],
74
- },
75
- tasksTableContent: {
76
- results: [
77
- {
78
- id: 1,
79
- action: 'action1',
80
- available_actions: { cancellable: true },
81
- },
82
- {
83
- id: 2,
84
- action: 'action2',
85
- available_actions: { resumable: true },
86
- },
87
- ],
88
- },
89
- },
90
- },
91
- };
92
- const allRowsState = {
93
- foremanTasks: {
94
- tasksTable: {
95
- tasksTableQuery: {
96
- allRowsSelected: true,
97
- },
98
- },
99
- },
100
- };
101
- describe('ConfirmModalActions', () => {
102
- const dispatch = jest.fn();
103
-
104
- beforeEach(() => dispatch.mockClear());
105
- it('run CANCEL_MODAL', () => {
106
- runWithGetState(clickedState, taskActions[CANCEL_MODAL], dispatch, {
107
- url,
108
- parentTaskID,
109
- });
110
- expect(dispatch).toBeCalledWith(cancelTaskMock);
111
- });
112
- it('run RESUME_MODAL', () => {
113
- runWithGetState(clickedState, taskActions[RESUME_MODAL], dispatch, {
114
- url,
115
- parentTaskID,
116
- });
117
- expect(dispatch).toBeCalledWith(resumeTaskMock);
118
- });
119
- it('run FORCE_UNLOCK_MODAL', () => {
120
- runWithGetState(clickedState, taskActions[FORCE_UNLOCK_MODAL], dispatch, {
121
- url,
122
- parentTaskID,
123
- });
124
- expect(dispatch).toBeCalledWith(forceCancelTaskMock);
125
- });
126
- it('run CANCEL_SELECTED_MODAL by id', () => {
127
- runWithGetState(
128
- selectedState,
129
- taskActions[CANCEL_SELECTED_MODAL],
130
- dispatch,
131
- {
132
- url,
133
- query,
134
- parentTaskID,
135
- }
136
- );
137
- expect(dispatch).toBeCalledWith(bulkCancelByIdMock);
138
- });
139
-
140
- it('run CANCEL_SELECTED_MODAL by search', () => {
141
- runWithGetState(
142
- allRowsState,
143
- taskActions[CANCEL_SELECTED_MODAL],
144
- dispatch,
145
- {
146
- url,
147
- query,
148
- parentTaskID,
149
- }
150
- );
151
- expect(dispatch).toBeCalledWith(bulkCancelBySearchMock);
152
- });
153
- it('run RESUME_SELECTED_MODAL by id', () => {
154
- runWithGetState(
155
- selectedState,
156
- taskActions[RESUME_SELECTED_MODAL],
157
- dispatch,
158
- {
159
- url,
160
- query,
161
- parentTaskID,
162
- }
163
- );
164
- expect(dispatch).toBeCalledWith(bulkResumeByIdMock);
165
- });
166
- it('run RESUME_SELECTED_MODAL by search', () => {
167
- runWithGetState(
168
- allRowsState,
169
- taskActions[RESUME_SELECTED_MODAL],
170
- dispatch,
171
- {
172
- url,
173
- query,
174
- parentTaskID,
175
- }
176
- );
177
- expect(dispatch).toBeCalledWith(bulkResumeBySearchMock);
178
- });
179
- it('run FORCE_UNLOCK_SELECTED_MODAL by id', () => {
180
- runWithGetState(
181
- selectedState,
182
- taskActions[FORCE_UNLOCK_SELECTED_MODAL],
183
- dispatch,
184
- {
185
- url,
186
- query,
187
- parentTaskID,
188
- }
189
- );
190
- expect(dispatch).toBeCalledWith(bulkForceCancelByIdMock);
191
- });
192
- it('run FORCE_UNLOCK_SELECTED_MODAL by search', () => {
193
- runWithGetState(
194
- allRowsState,
195
- taskActions[FORCE_UNLOCK_SELECTED_MODAL],
196
- dispatch,
197
- {
198
- url,
199
- query,
200
- parentTaskID,
201
- }
202
- );
203
- expect(dispatch).toBeCalledWith(bulkForceCancelBySearchMock);
204
- });
205
- });
@@ -1,27 +0,0 @@
1
- import { testReducerSnapshotWithFixtures } from '@theforeman/test';
2
- import {
3
- UPDATE_MODAL,
4
- CANCEL_MODAL,
5
- RESUME_SELECTED_MODAL,
6
- } from '../../../TasksTableConstants';
7
-
8
- import reducer from '../ConfirmModalReducer';
9
-
10
- const fixtures = {
11
- 'should return the initial state': {},
12
- 'should handle UPDATE_MODAL to cancel': {
13
- action: {
14
- type: UPDATE_MODAL,
15
- payload: { modalID: CANCEL_MODAL },
16
- },
17
- },
18
- 'should handle UPDATE_MODAL to resume': {
19
- action: {
20
- type: UPDATE_MODAL,
21
- payload: { modalID: RESUME_SELECTED_MODAL },
22
- },
23
- },
24
- };
25
-
26
- describe('ConfirmModalReducer reducer', () =>
27
- testReducerSnapshotWithFixtures(reducer, fixtures));
@@ -1,41 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`ConfirmModal renders ConfirmModal 1`] = `
4
- <ForemanModal
5
- id="modalID"
6
- title="Some Text Selected Tasks"
7
- >
8
- This will some text 1 task(s), putting them in the some state state. Are you sure?
9
- <Component>
10
- <Button
11
- active={false}
12
- block={false}
13
- bsClass="btn"
14
- bsStyle="default"
15
- disabled={false}
16
- onClick={[MockFunction]}
17
- >
18
- No
19
- </Button>
20
- <Button
21
- active={false}
22
- block={false}
23
- bsClass="btn"
24
- bsStyle="primary"
25
- className="confirm-button"
26
- disabled={false}
27
- onClick={[Function]}
28
- >
29
- Yes
30
- </Button>
31
- </Component>
32
- </ForemanModal>
33
- `;
34
-
35
- exports[`ConfirmModal renders ConfirmModal for unlock 1`] = `
36
- <ForceUnlockModal
37
- id="modalID"
38
- onClick={[Function]}
39
- selectedRowsLen={1}
40
- />
41
- `;
@@ -1,19 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`ConfirmModalReducer reducer should handle UPDATE_MODAL to cancel 1`] = `
4
- Object {
5
- "actionState": "stopped",
6
- "actionText": "cancel",
7
- "actionType": "cancelConfirmModal",
8
- }
9
- `;
10
-
11
- exports[`ConfirmModalReducer reducer should handle UPDATE_MODAL to resume 1`] = `
12
- Object {
13
- "actionState": "running",
14
- "actionText": "resume",
15
- "actionType": "resumeSelectedConfirmModal",
16
- }
17
- `;
18
-
19
- exports[`ConfirmModalReducer reducer should return the initial state 1`] = `Object {}`;
@@ -1,9 +0,0 @@
1
- .confirmation-check {
2
- margin-top: 1em;
3
- input {
4
- vertical-align: text-top;
5
- }
6
- span {
7
- vertical-align: middle;
8
- }
9
- }
@@ -1,52 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`ClickConfirmation render 1`] = `
4
- <ForemanModal
5
- id="some-id"
6
- >
7
- <Component>
8
- <span
9
- className="glyphicon glyphicon-exclamation-sign"
10
- />
11
- some-title
12
- </Component>
13
- <span>
14
- some-body
15
- </span>
16
- <div
17
- className="confirmation-check"
18
- >
19
- <input
20
- checked={false}
21
- onChange={[Function]}
22
- type="checkbox"
23
- />
24
- <span>
25
- some-message
26
- </span>
27
- </div>
28
- <Component>
29
- <Button
30
- active={false}
31
- block={false}
32
- bsClass="btn"
33
- bsStyle="danger"
34
- className="confirm-button"
35
- disabled={true}
36
- onClick={[Function]}
37
- >
38
- some-confirm
39
- </Button>
40
- <Button
41
- active={false}
42
- block={false}
43
- bsClass="btn"
44
- bsStyle="default"
45
- disabled={false}
46
- onClick={[MockFunction]}
47
- >
48
- Cancel
49
- </Button>
50
- </Component>
51
- </ForemanModal>
52
- `;
@@ -1,2 +0,0 @@
1
- const ForemanModalActions = () => jest.fn();
2
- export default ForemanModalActions;
@@ -1,10 +0,0 @@
1
- const modalOpen = true;
2
- const setModalOpen = jest.fn();
3
- const setModalClosed = jest.fn();
4
-
5
- export const useForemanModal = jest.fn(() => ({
6
- modalOpen,
7
- setModalOpen,
8
- setModalClosed,
9
- }));
10
- export default useForemanModal;
@@ -1,18 +0,0 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
3
-
4
- const ForemanModal = ({ children }) => <div className="modal">{children}</div>;
5
- ForemanModal.Header = ({ children }) => (
6
- <div className="modal-header">{children}</div>
7
- );
8
- ForemanModal.Footer = ({ children }) => (
9
- <div className="modal-footer">{children}</div>
10
- );
11
-
12
- ForemanModal.propTypes = {
13
- children: PropTypes.node.isRequired,
14
- };
15
- ForemanModal.Header.propTypes = ForemanModal.propTypes;
16
- ForemanModal.Footer.propTypes = ForemanModal.propTypes;
17
-
18
- export default ForemanModal;