foreman-tasks 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/controllers/foreman_tasks/tasks_controller.rb +6 -3
- data/app/models/foreman_tasks/task/dynflow_task.rb +1 -0
- data/db/migrate/20200611090846_add_task_lock_index_on_resource_type_and_task_id.rb +9 -0
- data/lib/foreman_tasks/engine.rb +0 -5
- data/lib/foreman_tasks/version.rb +1 -1
- data/locale/en/LC_MESSAGES/foreman_tasks.mo +0 -0
- data/locale/en/foreman_tasks.po +50 -20
- data/locale/foreman_tasks.pot +173 -126
- data/locale/fr/LC_MESSAGES/foreman_tasks.mo +0 -0
- data/locale/fr/foreman_tasks.po +817 -0
- data/locale/ja/LC_MESSAGES/foreman_tasks.mo +0 -0
- data/locale/ja/foreman_tasks.po +817 -0
- data/locale/zh_CN/LC_MESSAGES/foreman_tasks.mo +0 -0
- data/locale/zh_CN/foreman_tasks.po +816 -0
- data/webpack/ForemanTasks/Components/TaskActions/TaskAction.test.js +2 -2
- data/webpack/ForemanTasks/Components/TaskActions/index.js +1 -1
- data/webpack/ForemanTasks/Components/TaskDetails/Components/RunningSteps.js +17 -3
- data/webpack/ForemanTasks/Components/TaskDetails/Components/Task.js +3 -18
- data/webpack/ForemanTasks/Components/TaskDetails/Components/__tests__/RunningSteps.test.js +8 -1
- data/webpack/ForemanTasks/Components/TaskDetails/Components/__tests__/Task.test.js +5 -5
- data/webpack/ForemanTasks/Components/TaskDetails/Components/__tests__/__snapshots__/RunningSteps.test.js.snap +1 -1
- data/webpack/ForemanTasks/Components/TaskDetails/Components/__tests__/__snapshots__/Task.test.js.snap +4 -4
- data/webpack/ForemanTasks/Components/TaskDetails/TaskDetails.js +35 -5
- data/webpack/ForemanTasks/Components/TaskDetails/TaskDetailsActions.js +36 -1
- data/webpack/ForemanTasks/Components/TaskDetails/TaskDetailsConstants.js +4 -0
- data/webpack/ForemanTasks/Components/TaskDetails/__tests__/TaskDetails.fixtures.js +8 -0
- data/webpack/ForemanTasks/Components/TaskDetails/__tests__/TaskDetails.test.js +2 -1
- data/webpack/ForemanTasks/Components/TaskDetails/__tests__/TaskDetailsActions.test.js +18 -2
- data/webpack/ForemanTasks/Components/TaskDetails/__tests__/__snapshots__/TaskDetails.test.js.snap +27 -6
- data/webpack/ForemanTasks/Components/TaskDetails/__tests__/__snapshots__/TaskDetailsActions.test.js.snap +91 -0
- data/webpack/ForemanTasks/Components/TaskDetails/__tests__/integration.test.js +9 -4
- data/webpack/ForemanTasks/Components/TasksDashboard/TasksDashboardActions.js +1 -1
- data/webpack/ForemanTasks/Components/TasksDashboard/__tests__/TasksDashboardActions.test.js +2 -2
- data/webpack/ForemanTasks/Components/TasksTable/TasksBulkActions.js +1 -1
- data/webpack/ForemanTasks/Components/TasksTable/__tests__/TasksBulkActions.test.js +2 -2
- data/webpack/__mocks__/foremanReact/{API.js → redux/API.js} +1 -1
- metadata +12 -4
@@ -1,5 +1,5 @@
|
|
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
|
cancelTaskRequest,
|
5
5
|
resumeTaskRequest,
|
@@ -11,7 +11,7 @@ jest.mock('foremanReact/components/common/table', () => ({
|
|
11
11
|
getTableItemsAction: jest.fn(controller => controller),
|
12
12
|
}));
|
13
13
|
|
14
|
-
jest.mock('foremanReact/API');
|
14
|
+
jest.mock('foremanReact/redux/API');
|
15
15
|
|
16
16
|
const task = ['some-id', 'some-name'];
|
17
17
|
|
@@ -3,7 +3,13 @@ import PropTypes from 'prop-types';
|
|
3
3
|
import { Alert, Button } from 'patternfly-react';
|
4
4
|
import { translate as __ } from 'foremanReact/common/I18n';
|
5
5
|
|
6
|
-
const RunningSteps = ({
|
6
|
+
const RunningSteps = ({
|
7
|
+
runningSteps,
|
8
|
+
id,
|
9
|
+
cancelStep,
|
10
|
+
taskReload,
|
11
|
+
taskProgressToggle,
|
12
|
+
}) => {
|
7
13
|
if (!runningSteps.length) return <span>{__('No running steps')}</span>;
|
8
14
|
return (
|
9
15
|
<div>
|
@@ -13,8 +19,12 @@ const RunningSteps = ({ runningSteps }) => {
|
|
13
19
|
<p>
|
14
20
|
<Button
|
15
21
|
bsSize="small"
|
16
|
-
|
17
|
-
|
22
|
+
onClick={() => {
|
23
|
+
if (!taskReload) {
|
24
|
+
taskProgressToggle();
|
25
|
+
}
|
26
|
+
cancelStep(id, step.id);
|
27
|
+
}}
|
18
28
|
>
|
19
29
|
{__('Cancel')}
|
20
30
|
</Button>
|
@@ -46,6 +56,10 @@ const RunningSteps = ({ runningSteps }) => {
|
|
46
56
|
|
47
57
|
RunningSteps.propTypes = {
|
48
58
|
runningSteps: PropTypes.array,
|
59
|
+
id: PropTypes.string.isRequired,
|
60
|
+
cancelStep: PropTypes.func.isRequired,
|
61
|
+
taskReload: PropTypes.bool.isRequired,
|
62
|
+
taskProgressToggle: PropTypes.func.isRequired,
|
49
63
|
};
|
50
64
|
|
51
65
|
RunningSteps.defaultProps = {
|
@@ -11,22 +11,6 @@ import {
|
|
11
11
|
import { ForceUnlockModal, UnlockModal } from '../../TaskActions/UnlockModals';
|
12
12
|
|
13
13
|
const Task = props => {
|
14
|
-
const taskProgressToggle = () => {
|
15
|
-
const {
|
16
|
-
timeoutId,
|
17
|
-
refetchTaskDetails,
|
18
|
-
id,
|
19
|
-
loading,
|
20
|
-
taskReloadStop,
|
21
|
-
taskReloadStart,
|
22
|
-
} = props;
|
23
|
-
if (timeoutId) {
|
24
|
-
taskReloadStop(timeoutId);
|
25
|
-
} else {
|
26
|
-
taskReloadStart(timeoutId, refetchTaskDetails, id, loading);
|
27
|
-
}
|
28
|
-
};
|
29
|
-
|
30
14
|
const unlockModalActions = useForemanModal({
|
31
15
|
id: UNLOCK_MODAL,
|
32
16
|
});
|
@@ -49,6 +33,7 @@ const Task = props => {
|
|
49
33
|
unlockTaskRequest,
|
50
34
|
action,
|
51
35
|
dynflowEnableConsole,
|
36
|
+
taskProgressToggle,
|
52
37
|
} = props;
|
53
38
|
const forceUnlock = () => {
|
54
39
|
if (!taskReload) {
|
@@ -86,6 +71,8 @@ const Task = props => {
|
|
86
71
|
bsSize="small"
|
87
72
|
href={`/foreman_tasks/dynflow/${externalId}`}
|
88
73
|
disabled={!dynflowEnableConsole}
|
74
|
+
rel="noopener noreferrer"
|
75
|
+
target="_blank"
|
89
76
|
>
|
90
77
|
{__('Dynflow console')}
|
91
78
|
</Button>
|
@@ -167,7 +154,6 @@ Task.propTypes = {
|
|
167
154
|
parentTask: PropTypes.string,
|
168
155
|
taskReload: PropTypes.bool,
|
169
156
|
taskReloadStop: PropTypes.func,
|
170
|
-
taskReloadStart: PropTypes.func,
|
171
157
|
timeoutId: PropTypes.number,
|
172
158
|
externalId: PropTypes.string,
|
173
159
|
id: PropTypes.string.isRequired,
|
@@ -186,7 +172,6 @@ Task.defaultProps = {
|
|
186
172
|
parentTask: '',
|
187
173
|
taskReload: false,
|
188
174
|
taskReloadStop: () => null,
|
189
|
-
taskReloadStart: () => null,
|
190
175
|
timeoutId: null,
|
191
176
|
externalId: '',
|
192
177
|
cancelTaskRequest: () => null,
|
@@ -2,9 +2,16 @@ import { testComponentSnapshotsWithFixtures } from '@theforeman/test';
|
|
2
2
|
|
3
3
|
import RunningSteps from '../RunningSteps';
|
4
4
|
|
5
|
+
const minProps = {
|
6
|
+
id: 'task-id1',
|
7
|
+
taskReload: true,
|
8
|
+
cancelStep: jest.fn(),
|
9
|
+
taskProgressToggle: jest.fn(),
|
10
|
+
};
|
5
11
|
const fixtures = {
|
6
|
-
'render
|
12
|
+
'render with min Props': minProps,
|
7
13
|
'render with Props': {
|
14
|
+
...minProps,
|
8
15
|
executionPlan: {
|
9
16
|
state: 'paused',
|
10
17
|
cancellable: false,
|
@@ -33,16 +33,16 @@ describe('Task', () => {
|
|
33
33
|
}));
|
34
34
|
const cancelTaskRequest = jest.fn();
|
35
35
|
const resumeTaskRequest = jest.fn();
|
36
|
-
const
|
36
|
+
const taskProgressToggle = jest.fn();
|
37
37
|
const id = 'some-id';
|
38
38
|
const action = 'some-action';
|
39
39
|
const props = {
|
40
40
|
taskReload: false,
|
41
|
-
taskReloadStart,
|
42
41
|
id,
|
43
42
|
action,
|
44
43
|
cancelTaskRequest,
|
45
44
|
resumeTaskRequest,
|
45
|
+
taskProgressToggle,
|
46
46
|
};
|
47
47
|
afterEach(() => {
|
48
48
|
jest.clearAllMocks();
|
@@ -51,20 +51,20 @@ describe('Task', () => {
|
|
51
51
|
const component = mount(<Task {...props} />);
|
52
52
|
const reloadButton = component.find('.reload-button').at(0);
|
53
53
|
reloadButton.simulate('click');
|
54
|
-
expect(
|
54
|
+
expect(taskProgressToggle).toBeCalled();
|
55
55
|
});
|
56
56
|
it('resume', () => {
|
57
57
|
const component = shallow(<Task {...props} />);
|
58
58
|
const resumeButton = component.find('.resume-button').at(0);
|
59
59
|
resumeButton.props().onClick();
|
60
|
-
expect(
|
60
|
+
expect(taskProgressToggle).toBeCalled();
|
61
61
|
expect(resumeTaskRequest).toBeCalledWith(id, action);
|
62
62
|
});
|
63
63
|
it('cancel', () => {
|
64
64
|
const component = shallow(<Task {...props} />);
|
65
65
|
const cancelButton = component.find('.cancel-button').at(0);
|
66
66
|
cancelButton.props().onClick();
|
67
|
-
expect(
|
67
|
+
expect(taskProgressToggle).toBeCalled();
|
68
68
|
expect(cancelTaskRequest).toBeCalledWith(id, action);
|
69
69
|
});
|
70
70
|
it('unlock', () => {
|
@@ -33,7 +33,6 @@ exports[`Task rendering render with some Props 1`] = `
|
|
33
33
|
bsStyle="default"
|
34
34
|
className="reload-button"
|
35
35
|
disabled={false}
|
36
|
-
onClick={[Function]}
|
37
36
|
>
|
38
37
|
<span
|
39
38
|
className="glyphicon glyphicon-refresh spin"
|
@@ -49,6 +48,8 @@ exports[`Task rendering render with some Props 1`] = `
|
|
49
48
|
className="dynflow-button"
|
50
49
|
disabled={false}
|
51
50
|
href="/foreman_tasks/dynflow/"
|
51
|
+
rel="noopener noreferrer"
|
52
|
+
target="_blank"
|
52
53
|
>
|
53
54
|
Dynflow console
|
54
55
|
</Button>
|
@@ -149,7 +150,6 @@ exports[`Task rendering render with some Props 1`] = `
|
|
149
150
|
startedAt=""
|
150
151
|
state="paused"
|
151
152
|
taskReload={true}
|
152
|
-
taskReloadStart={[Function]}
|
153
153
|
taskReloadStop={[Function]}
|
154
154
|
timeoutId={null}
|
155
155
|
username=""
|
@@ -192,7 +192,6 @@ exports[`Task rendering render without Props 1`] = `
|
|
192
192
|
bsStyle="default"
|
193
193
|
className="reload-button"
|
194
194
|
disabled={false}
|
195
|
-
onClick={[Function]}
|
196
195
|
>
|
197
196
|
<span
|
198
197
|
className="glyphicon glyphicon-refresh "
|
@@ -208,6 +207,8 @@ exports[`Task rendering render without Props 1`] = `
|
|
208
207
|
className="dynflow-button"
|
209
208
|
disabled={true}
|
210
209
|
href="/foreman_tasks/dynflow/"
|
210
|
+
rel="noopener noreferrer"
|
211
|
+
target="_blank"
|
211
212
|
>
|
212
213
|
Dynflow console
|
213
214
|
</Button>
|
@@ -284,7 +285,6 @@ exports[`Task rendering render without Props 1`] = `
|
|
284
285
|
startedAt=""
|
285
286
|
state=""
|
286
287
|
taskReload={false}
|
287
|
-
taskReloadStart={[Function]}
|
288
288
|
taskReloadStop={[Function]}
|
289
289
|
timeoutId={null}
|
290
290
|
username=""
|
@@ -20,6 +20,22 @@ class TaskDetails extends Component {
|
|
20
20
|
componentWillUnmount() {
|
21
21
|
this.props.taskReloadStop(this.props.timeoutId);
|
22
22
|
}
|
23
|
+
taskProgressToggle = () => {
|
24
|
+
const {
|
25
|
+
timeoutId,
|
26
|
+
refetchTaskDetails,
|
27
|
+
id,
|
28
|
+
loading,
|
29
|
+
taskReloadStop,
|
30
|
+
taskReloadStart,
|
31
|
+
} = this.props;
|
32
|
+
if (timeoutId) {
|
33
|
+
taskReloadStop(timeoutId);
|
34
|
+
} else {
|
35
|
+
taskReloadStart(timeoutId, refetchTaskDetails, id, loading);
|
36
|
+
}
|
37
|
+
};
|
38
|
+
|
23
39
|
render() {
|
24
40
|
const {
|
25
41
|
externalId,
|
@@ -32,6 +48,7 @@ class TaskDetails extends Component {
|
|
32
48
|
failedSteps,
|
33
49
|
runningSteps,
|
34
50
|
locks,
|
51
|
+
cancelStep,
|
35
52
|
} = this.props;
|
36
53
|
const id = getTaskID();
|
37
54
|
const resumable = executionPlan ? executionPlan.state === 'paused' : false;
|
@@ -40,12 +57,23 @@ class TaskDetails extends Component {
|
|
40
57
|
<div className="task-details-react well">
|
41
58
|
<Tabs defaultActiveKey={1} animation={false} id="task-details-tabs">
|
42
59
|
<Tab eventKey={1} title={__('Task')}>
|
43
|
-
<Task
|
60
|
+
<Task
|
61
|
+
{...{
|
62
|
+
...this.props,
|
63
|
+
cancellable,
|
64
|
+
resumable,
|
65
|
+
id,
|
66
|
+
taskProgressToggle: this.taskProgressToggle,
|
67
|
+
}}
|
68
|
+
/>
|
44
69
|
</Tab>
|
45
70
|
<Tab eventKey={2} title={__('Running Steps')}>
|
46
71
|
<RunningSteps
|
47
|
-
executionPlan={executionPlan}
|
48
72
|
runningSteps={runningSteps}
|
73
|
+
id={id}
|
74
|
+
cancelStep={cancelStep}
|
75
|
+
taskReload={this.props.taskReload}
|
76
|
+
taskProgressToggle={this.taskProgressToggle}
|
49
77
|
/>
|
50
78
|
</Tab>
|
51
79
|
<Tab eventKey={3} title={__('Errors')}>
|
@@ -67,16 +95,18 @@ class TaskDetails extends Component {
|
|
67
95
|
|
68
96
|
TaskDetails.propTypes = {
|
69
97
|
label: PropTypes.string,
|
70
|
-
fetchTaskDetails: PropTypes.func,
|
98
|
+
fetchTaskDetails: PropTypes.func.isRequired,
|
99
|
+
runningSteps: PropTypes.array,
|
100
|
+
cancelStep: PropTypes.func.isRequired,
|
101
|
+
taskReload: PropTypes.bool.isRequired,
|
71
102
|
...Task.propTypes,
|
72
|
-
...RunningSteps.propTypes,
|
73
103
|
...Errors.propTypes,
|
74
104
|
...Locks.propTypes,
|
75
105
|
...Raw.propTypes,
|
76
106
|
};
|
77
107
|
TaskDetails.defaultProps = {
|
78
108
|
label: '',
|
79
|
-
|
109
|
+
runningSteps: [],
|
80
110
|
...Task.defaultProps,
|
81
111
|
...RunningSteps.defaultProps,
|
82
112
|
...Errors.defaultProps,
|
@@ -1,15 +1,25 @@
|
|
1
|
-
import API from 'foremanReact/API';
|
1
|
+
import { API } from 'foremanReact/redux/API';
|
2
2
|
import {
|
3
3
|
showLoading,
|
4
4
|
hideLoading,
|
5
5
|
} from 'foremanReact/components/Layout/LayoutActions';
|
6
|
+
import { addToast } from 'foremanReact/redux/actions/toasts';
|
7
|
+
import { translate as __ } from 'foremanReact/common/I18n';
|
6
8
|
import {
|
7
9
|
FOREMAN_TASK_DETAILS_FETCH_TASK_REQUEST,
|
8
10
|
FOREMAN_TASK_DETAILS_FETCH_TASK_SUCCESS,
|
9
11
|
FOREMAN_TASK_DETAILS_FETCH_TASK_FAILURE,
|
10
12
|
FOREMAN_TASK_DETAILS_STOP_POLLING,
|
11
13
|
FOREMAN_TASK_DETAILS_START_POLLING,
|
14
|
+
TASK_STEP_CANCEL_REQUEST,
|
15
|
+
TASK_STEP_CANCEL_FAILURE,
|
16
|
+
TASK_STEP_CANCEL_SUCCESS,
|
12
17
|
} from './TaskDetailsConstants';
|
18
|
+
import {
|
19
|
+
errorToastData,
|
20
|
+
infoToastData,
|
21
|
+
successToastData,
|
22
|
+
} from '../common/ToastsHelpers';
|
13
23
|
|
14
24
|
export const taskReloadStop = timeoutId => {
|
15
25
|
if (timeoutId) {
|
@@ -98,3 +108,28 @@ const requestFailure = error => ({
|
|
98
108
|
type: FOREMAN_TASK_DETAILS_FETCH_TASK_FAILURE,
|
99
109
|
payload: error,
|
100
110
|
});
|
111
|
+
|
112
|
+
export const cancelStep = (taskId, stepId) => async dispatch => {
|
113
|
+
dispatch({ type: TASK_STEP_CANCEL_REQUEST });
|
114
|
+
dispatch(addToast(infoToastData(`${__('Trying to cancel step')} ${stepId}`)));
|
115
|
+
try {
|
116
|
+
await API.post(
|
117
|
+
`/foreman_tasks/tasks/${taskId}/cancel_step?step_id=${stepId}`
|
118
|
+
);
|
119
|
+
dispatch({ type: TASK_STEP_CANCEL_SUCCESS });
|
120
|
+
dispatch(addToast(successToastData(`${stepId} {__('Step Canceled')}`)));
|
121
|
+
} catch (error) {
|
122
|
+
dispatch({ type: TASK_STEP_CANCEL_FAILURE, payload: error });
|
123
|
+
dispatch(
|
124
|
+
addToast(
|
125
|
+
errorToastData(
|
126
|
+
`${__('Could not cancel step.')} ${__(
|
127
|
+
'Error:'
|
128
|
+
)} ${stepId} ${error.response &&
|
129
|
+
error.response.data &&
|
130
|
+
error.response.data.error}`
|
131
|
+
)
|
132
|
+
)
|
133
|
+
);
|
134
|
+
}
|
135
|
+
};
|
@@ -11,3 +11,7 @@ export const FOREMAN_TASK_DETAILS_STOP_POLLING =
|
|
11
11
|
'FOREMAN_TASK_DETAILS_STOP_POLLING';
|
12
12
|
export const FOREMAN_TASK_DETAILS_START_POLLING =
|
13
13
|
'FOREMAN_TASK_DETAILS_START_POLLING';
|
14
|
+
|
15
|
+
export const TASK_STEP_CANCEL_REQUEST = 'TASK_STEP_CANCEL_REQUEST';
|
16
|
+
export const TASK_STEP_CANCEL_FAILURE = 'TASK_STEP_CANCEL_FAILURE';
|
17
|
+
export const TASK_STEP_CANCEL_SUCCESS = 'TASK_STEP_CANCEL_SUCCESS';
|
@@ -1,9 +1,10 @@
|
|
1
1
|
import { testComponentSnapshotsWithFixtures } from '@theforeman/test';
|
2
2
|
|
3
3
|
import TaskDetails from '../TaskDetails';
|
4
|
+
import { minProps } from './TaskDetails.fixtures';
|
4
5
|
|
5
6
|
const fixtures = {
|
6
|
-
'render
|
7
|
+
'render with min Props': minProps,
|
7
8
|
};
|
8
9
|
|
9
10
|
delete window.location;
|
@@ -1,19 +1,35 @@
|
|
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
|
taskReloadStop,
|
5
5
|
taskReloadStart,
|
6
6
|
fetchTaskDetails,
|
7
|
+
cancelStep,
|
7
8
|
} from '../TaskDetailsActions';
|
8
9
|
|
9
|
-
jest.mock('foremanReact/API');
|
10
|
+
jest.mock('foremanReact/redux/API');
|
10
11
|
|
11
12
|
API.get.mockImplementation(async () => ({ data: 'some-data' }));
|
13
|
+
API.post.mockImplementation(async () => ({ data: 'some-data' }));
|
12
14
|
|
13
15
|
const fixtures = {
|
14
16
|
'should start reload': () => taskReloadStart(1),
|
15
17
|
'should stop reload': () => taskReloadStop(2),
|
16
18
|
'should fetch-task-details and success': () => fetchTaskDetails(),
|
19
|
+
'should cancelStep and success': () => cancelStep('task-id', 'step-id'),
|
20
|
+
|
21
|
+
'should fetch-task-details and fail': () => {
|
22
|
+
API.get.mockImplementationOnce(() =>
|
23
|
+
Promise.reject(new Error('Network Error'))
|
24
|
+
);
|
25
|
+
return fetchTaskDetails();
|
26
|
+
},
|
27
|
+
'should cancelStep and fail': () => {
|
28
|
+
API.post.mockImplementationOnce(() =>
|
29
|
+
Promise.reject(new Error('Network Error'))
|
30
|
+
);
|
31
|
+
return cancelStep('task-id', 'step-id');
|
32
|
+
},
|
17
33
|
};
|
18
34
|
|
19
35
|
describe('TaskDetails - Actions', () =>
|
data/webpack/ForemanTasks/Components/TaskDetails/__tests__/__snapshots__/TaskDetails.test.js.snap
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
2
2
|
|
3
|
-
exports[`TaskDetails rendering render
|
3
|
+
exports[`TaskDetails rendering render with min Props 1`] = `
|
4
4
|
<div
|
5
5
|
className="task-details-react well"
|
6
6
|
>
|
@@ -15,6 +15,7 @@ exports[`TaskDetails rendering render without Props 1`] = `
|
|
15
15
|
>
|
16
16
|
<Task
|
17
17
|
action=""
|
18
|
+
cancelStep={[MockFunction]}
|
18
19
|
cancelTaskRequest={[Function]}
|
19
20
|
cancellable={false}
|
20
21
|
dynflowEnableConsole={false}
|
@@ -23,7 +24,23 @@ exports[`TaskDetails rendering render without Props 1`] = `
|
|
23
24
|
executionPlan={Object {}}
|
24
25
|
externalId=""
|
25
26
|
failedSteps={Array []}
|
26
|
-
fetchTaskDetails={
|
27
|
+
fetchTaskDetails={
|
28
|
+
[MockFunction] {
|
29
|
+
"calls": Array [
|
30
|
+
Array [
|
31
|
+
"a15dd820-32f1-4ced-9ab7-c0fab8234c47",
|
32
|
+
null,
|
33
|
+
[MockFunction],
|
34
|
+
],
|
35
|
+
],
|
36
|
+
"results": Array [
|
37
|
+
Object {
|
38
|
+
"type": "return",
|
39
|
+
"value": undefined,
|
40
|
+
},
|
41
|
+
],
|
42
|
+
}
|
43
|
+
}
|
27
44
|
hasSubTasks={false}
|
28
45
|
help=""
|
29
46
|
id="a15dd820-32f1-4ced-9ab7-c0fab8234c47"
|
@@ -33,7 +50,7 @@ exports[`TaskDetails rendering render without Props 1`] = `
|
|
33
50
|
output={Object {}}
|
34
51
|
parentTask=""
|
35
52
|
progress={0}
|
36
|
-
refetchTaskDetails={[
|
53
|
+
refetchTaskDetails={[MockFunction]}
|
37
54
|
result="error"
|
38
55
|
resumable={false}
|
39
56
|
resumeTaskRequest={[Function]}
|
@@ -42,9 +59,10 @@ exports[`TaskDetails rendering render without Props 1`] = `
|
|
42
59
|
startBefore=""
|
43
60
|
startedAt=""
|
44
61
|
state=""
|
62
|
+
taskProgressToggle={[Function]}
|
45
63
|
taskReload={false}
|
46
|
-
taskReloadStart={[
|
47
|
-
taskReloadStop={[
|
64
|
+
taskReloadStart={[MockFunction]}
|
65
|
+
taskReloadStop={[MockFunction]}
|
48
66
|
timeoutId={null}
|
49
67
|
username=""
|
50
68
|
usernamePath=""
|
@@ -55,8 +73,11 @@ exports[`TaskDetails rendering render without Props 1`] = `
|
|
55
73
|
title="Running Steps"
|
56
74
|
>
|
57
75
|
<RunningSteps
|
58
|
-
|
76
|
+
cancelStep={[MockFunction]}
|
77
|
+
id="a15dd820-32f1-4ced-9ab7-c0fab8234c47"
|
59
78
|
runningSteps={Array []}
|
79
|
+
taskProgressToggle={[Function]}
|
80
|
+
taskReload={false}
|
60
81
|
/>
|
61
82
|
</Tab>
|
62
83
|
<Tab
|