foreman-tasks 2.0.3 → 3.0.4

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 (121) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/js_tests.yml +31 -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/app/controllers/foreman_tasks/api/tasks_controller.rb +50 -63
  8. data/app/controllers/foreman_tasks/concerns/parameters/triggering.rb +1 -1
  9. data/app/controllers/foreman_tasks/recurring_logics_controller.rb +7 -0
  10. data/app/helpers/foreman_tasks/foreman_tasks_helper.rb +3 -3
  11. data/app/models/foreman_tasks/recurring_logic.rb +1 -1
  12. data/app/models/foreman_tasks/task.rb +11 -0
  13. data/app/models/foreman_tasks/task/dynflow_task.rb +27 -33
  14. data/app/models/foreman_tasks/task/search.rb +1 -1
  15. data/app/models/foreman_tasks/task/status_explicator.rb +1 -1
  16. data/app/models/foreman_tasks/triggering.rb +1 -1
  17. data/app/models/setting/foreman_tasks.rb +9 -9
  18. data/app/services/foreman_tasks/dashboard_table_filter.rb +5 -1
  19. data/app/views/foreman_tasks/api/tasks/index.json.rabl +2 -0
  20. data/app/views/foreman_tasks/layouts/react.html.erb +1 -2
  21. data/app/views/foreman_tasks/recurring_logics/index.html.erb +3 -1
  22. data/app/views/foreman_tasks/tasks/dashboard/_latest_tasks_in_error_warning.html.erb +1 -1
  23. data/app/views/foreman_tasks/tasks/dashboard/_tasks_status.html.erb +1 -1
  24. data/app/views/foreman_tasks/tasks/show.html.erb +1 -6
  25. data/config/routes.rb +2 -1
  26. data/db/migrate/20200517215015_rename_bookmarks_controller.rb +2 -2
  27. data/db/seeds.d/30-notification_blueprints.rb +7 -7
  28. data/db/seeds.d/61-foreman_tasks_bookmarks.rb +1 -1
  29. data/foreman-tasks.gemspec +1 -0
  30. data/lib/foreman_tasks/cleaner.rb +4 -6
  31. data/lib/foreman_tasks/dynflow/configuration.rb +1 -1
  32. data/lib/foreman_tasks/dynflow/persistence.rb +4 -6
  33. data/lib/foreman_tasks/engine.rb +2 -2
  34. data/lib/foreman_tasks/version.rb +1 -1
  35. data/package.json +0 -1
  36. data/test/controllers/api/recurring_logics_controller_test.rb +1 -1
  37. data/test/controllers/api/tasks_controller_test.rb +17 -7
  38. data/test/controllers/tasks_controller_test.rb +6 -6
  39. data/test/core/unit/runner_test.rb +20 -20
  40. data/test/core/unit/task_launcher_test.rb +8 -8
  41. data/test/helpers/foreman_tasks/foreman_tasks_helper_test.rb +7 -7
  42. data/test/helpers/foreman_tasks/tasks_helper_test.rb +3 -3
  43. data/test/lib/actions/middleware/keep_current_request_id_test.rb +3 -3
  44. data/test/support/history_tasks_builder.rb +1 -1
  45. data/test/tasks/generate_task_actions_test.rb +1 -1
  46. data/test/unit/actions/action_with_sub_plans_test.rb +2 -2
  47. data/test/unit/actions/bulk_action_test.rb +6 -6
  48. data/test/unit/actions/proxy_action_test.rb +20 -20
  49. data/test/unit/actions/recurring_action_test.rb +30 -32
  50. data/test/unit/cleaner_test.rb +24 -24
  51. data/test/unit/dashboard_table_filter_test.rb +5 -5
  52. data/test/unit/otp_manager_test.rb +2 -2
  53. data/test/unit/proxy_selector_test.rb +9 -9
  54. data/test/unit/recurring_logic_test.rb +32 -32
  55. data/test/unit/remote_task_test.rb +2 -2
  56. data/test/unit/task_groups_test.rb +4 -4
  57. data/test/unit/task_test.rb +26 -18
  58. data/test/unit/triggering_test.rb +8 -8
  59. data/test/unit/troubleshooting_help_generator_test.rb +6 -6
  60. data/test/unit/ui_notifications_test.rb +11 -11
  61. data/webpack/ForemanTasks/Components/TaskDetails/Components/RunningSteps.js +3 -3
  62. data/webpack/ForemanTasks/Components/TaskDetails/Components/Task.js +8 -157
  63. data/webpack/ForemanTasks/Components/TaskDetails/Components/TaskButtons.js +168 -0
  64. data/webpack/ForemanTasks/Components/TaskDetails/Components/TaskInfo.js +6 -7
  65. data/webpack/ForemanTasks/Components/TaskDetails/Components/TaskSkeleton.js +48 -0
  66. data/webpack/ForemanTasks/Components/TaskDetails/Components/__tests__/RunningSteps.test.js +1 -1
  67. data/webpack/ForemanTasks/Components/TaskDetails/Components/__tests__/Task.test.js +12 -70
  68. data/webpack/ForemanTasks/Components/TaskDetails/Components/__tests__/TaskButtons.test.js +95 -0
  69. data/webpack/ForemanTasks/Components/TaskDetails/Components/__tests__/__snapshots__/Task.test.js.snap +78 -225
  70. data/webpack/ForemanTasks/Components/TaskDetails/Components/__tests__/__snapshots__/TaskButtons.test.js.snap +212 -0
  71. data/webpack/ForemanTasks/Components/TaskDetails/Components/__tests__/__snapshots__/TaskInfo.test.js.snap +8 -4
  72. data/webpack/ForemanTasks/Components/TaskDetails/TaskDetails.js +87 -70
  73. data/webpack/ForemanTasks/Components/TaskDetails/TaskDetails.scss +10 -0
  74. data/webpack/ForemanTasks/Components/TaskDetails/TaskDetailsActions.js +48 -125
  75. data/webpack/ForemanTasks/Components/TaskDetails/TaskDetailsConstants.js +3 -16
  76. data/webpack/ForemanTasks/Components/TaskDetails/TaskDetailsSelectors.js +55 -29
  77. data/webpack/ForemanTasks/Components/TaskDetails/__tests__/TaskDetails.fixtures.js +2 -2
  78. data/webpack/ForemanTasks/Components/TaskDetails/__tests__/TaskDetails.test.js +6 -0
  79. data/webpack/ForemanTasks/Components/TaskDetails/__tests__/TaskDetailsActions.test.js +2 -18
  80. data/webpack/ForemanTasks/Components/TaskDetails/__tests__/__snapshots__/TaskDetails.test.js.snap +77 -27
  81. data/webpack/ForemanTasks/Components/TaskDetails/__tests__/__snapshots__/TaskDetailsActions.test.js.snap +14 -101
  82. data/webpack/ForemanTasks/Components/TaskDetails/index.js +6 -3
  83. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/ScheduledTasksCard/ScheduledTasksCard.scss +4 -0
  84. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/StoppedTasksCard/OtherInfo.js +53 -0
  85. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/StoppedTasksCard/OtherInfo.test.js +14 -0
  86. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/StoppedTasksCard/StoppedTasksCard.js +27 -19
  87. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/StoppedTasksCard/StoppedTasksCard.scss +14 -0
  88. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/StoppedTasksCard/StoppedTasksCard.test.js +1 -34
  89. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/StoppedTasksCard/{StoppedTasksCardHelper.js → StoppedTasksCardTable.js} +28 -1
  90. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/StoppedTasksCard/StoppedTasksCardTable.test.js +54 -0
  91. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/StoppedTasksCard/__snapshots__/OtherInfo.test.js.snap +48 -0
  92. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/StoppedTasksCard/__snapshots__/StoppedTasksCard.test.js.snap +60 -1367
  93. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/StoppedTasksCard/__snapshots__/StoppedTasksCardTable.test.js.snap +960 -0
  94. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/__snapshots__/TasksCardsGrid.test.js.snap +14 -11
  95. data/webpack/ForemanTasks/Components/TasksDashboard/TasksDashboardConstants.js +2 -0
  96. data/webpack/ForemanTasks/Components/TasksDashboard/TasksDashboardSelectors.js +17 -11
  97. data/webpack/ForemanTasks/Components/TasksDashboard/__tests__/TasksDashboardSelectors.test.js +26 -14
  98. data/webpack/ForemanTasks/Components/TasksDashboard/__tests__/__snapshots__/TasksDashboard.test.js.snap +14 -11
  99. data/webpack/ForemanTasks/Components/TasksDashboard/__tests__/__snapshots__/TasksDashboardSelectors.test.js.snap +38 -22
  100. data/webpack/ForemanTasks/Components/TasksTable/TasksTableHelpers.js +0 -8
  101. data/webpack/ForemanTasks/Components/TasksTable/TasksTablePage.js +13 -4
  102. data/webpack/ForemanTasks/Components/TasksTable/TasksTablePage.scss +0 -10
  103. data/webpack/ForemanTasks/Components/TasksTable/__tests__/__snapshots__/TasksTablePage.test.js.snap +0 -2
  104. data/webpack/ForemanTasks/Components/TasksTable/formatters/__test__/__snapshots__/actionNameCellFormatter.test.js.snap +3 -1
  105. data/webpack/ForemanTasks/Components/TasksTable/formatters/actionNameCellFormatter.js +6 -1
  106. data/webpack/ForemanTasks/Components/common/urlHelpers.js +7 -0
  107. data/webpack/ForemanTasks/ForemanTasksReducers.js +0 -2
  108. data/webpack/__mocks__/foremanReact/common/helpers.js +2 -0
  109. data/webpack/__mocks__/foremanReact/redux/API/APISelectors.js +10 -0
  110. data/webpack/__mocks__/foremanReact/redux/API/index.js +10 -0
  111. data/webpack/__mocks__/foremanReact/redux/middlewares/IntervalMiddleware.js +5 -0
  112. metadata +21 -13
  113. data/.travis.yml +0 -7
  114. data/app/assets/stylesheets/foreman_tasks/tasks.scss +0 -9
  115. data/script/travis_run_js_tests.sh +0 -7
  116. data/webpack/ForemanTasks/Components/TaskDetails/TaskDetailsReducer.js +0 -38
  117. data/webpack/ForemanTasks/Components/TaskDetails/__tests__/TaskDetailsReducer.test.js +0 -33
  118. data/webpack/ForemanTasks/Components/TaskDetails/__tests__/__snapshots__/TaskDetailsReducer.test.js.snap +0 -26
  119. data/webpack/ForemanTasks/Components/TaskDetails/__tests__/__snapshots__/integration.test.js.snap +0 -122
  120. data/webpack/ForemanTasks/Components/TaskDetails/__tests__/integration.test.js +0 -72
  121. data/webpack/__mocks__/foremanReact/redux/API.js +0 -7
@@ -57,17 +57,20 @@ exports[`TasksCardsGrid render with minimal props 1`] = `
57
57
  className=""
58
58
  data={
59
59
  Object {
60
- "error": Object {
61
- "last": 0,
62
- "total": 0,
63
- },
64
- "success": Object {
65
- "last": 0,
66
- "total": 0,
67
- },
68
- "warning": Object {
69
- "last": 0,
70
- "total": 0,
60
+ "other": 0,
61
+ "results": Object {
62
+ "error": Object {
63
+ "last": 0,
64
+ "total": 0,
65
+ },
66
+ "success": Object {
67
+ "last": 0,
68
+ "total": 0,
69
+ },
70
+ "warning": Object {
71
+ "last": 0,
72
+ "total": 0,
73
+ },
71
74
  },
72
75
  }
73
76
  }
@@ -11,6 +11,7 @@ export const TASKS_DASHBOARD_AVAILABLE_QUERY_RESULTS = {
11
11
  ERROR: 'error',
12
12
  WARNING: 'warning',
13
13
  SUCCESS: 'success',
14
+ OTHER: 'other',
14
15
  };
15
16
 
16
17
  export const TASKS_DASHBOARD_AVAILABLE_QUERY_MODES = {
@@ -44,6 +45,7 @@ export const TASKS_DASHBOARD_QUERY_VALUES_TEXT = {
44
45
  [TASKS_DASHBOARD_AVAILABLE_QUERY_RESULTS.ERROR]: __('error'),
45
46
  [TASKS_DASHBOARD_AVAILABLE_QUERY_RESULTS.WARNING]: __('warning'),
46
47
  [TASKS_DASHBOARD_AVAILABLE_QUERY_RESULTS.SUCCESS]: __('success'),
48
+ [TASKS_DASHBOARD_AVAILABLE_QUERY_RESULTS.OTHER]: __('other'),
47
49
  [TASKS_DASHBOARD_AVAILABLE_QUERY_MODES.LAST]: __('last'),
48
50
  [TASKS_DASHBOARD_AVAILABLE_QUERY_MODES.OLDER]: __('older'),
49
51
  [TASKS_DASHBOARD_AVAILABLE_TIMES.H24]: __('24h'),
@@ -12,6 +12,9 @@ export const selectTime = state =>
12
12
 
13
13
  export const selectQuery = state => selectTasksDashboard(state).query || {};
14
14
 
15
+ export const calcStoppedOther = data =>
16
+ (data?.cancelled?.total || 0) + (data?.pending?.total || 0);
17
+
15
18
  export const selectTasksSummary = state => {
16
19
  const { running, paused, stopped, scheduled } =
17
20
  selectTasksDashboard(state).tasksSummary || TASKS_SUMMARY_ZERO;
@@ -26,18 +29,21 @@ export const selectTasksSummary = state => {
26
29
  older: paused.total - paused.recent,
27
30
  },
28
31
  stopped: {
29
- error: {
30
- total: stopped.by_result.error.total,
31
- last: stopped.by_result.error.recent,
32
- },
33
- warning: {
34
- total: stopped.by_result.warning.total,
35
- last: stopped.by_result.warning.recent,
36
- },
37
- success: {
38
- total: stopped.by_result.success.total,
39
- last: stopped.by_result.success.recent,
32
+ results: {
33
+ error: {
34
+ total: stopped.by_result.error.total,
35
+ last: stopped.by_result.error.recent,
36
+ },
37
+ warning: {
38
+ total: stopped.by_result.warning.total,
39
+ last: stopped.by_result.warning.recent,
40
+ },
41
+ success: {
42
+ total: stopped.by_result.success.total,
43
+ last: stopped.by_result.success.recent,
44
+ },
40
45
  },
46
+ other: calcStoppedOther(stopped.by_result),
41
47
  },
42
48
  scheduled: scheduled.total,
43
49
  };
@@ -4,8 +4,32 @@ import {
4
4
  selectTime,
5
5
  selectQuery,
6
6
  selectTasksSummary,
7
+ calcStoppedOther,
7
8
  } from '../TasksDashboardSelectors';
8
9
 
10
+ const stoppedResult = {
11
+ error: {
12
+ total: 9,
13
+ recent: 1,
14
+ },
15
+ warning: {
16
+ total: 8,
17
+ recent: 2,
18
+ },
19
+ success: {
20
+ total: 7,
21
+ recent: 3,
22
+ },
23
+ cancelled: {
24
+ total: 5,
25
+ recent: 3,
26
+ },
27
+ pending: {
28
+ total: 11,
29
+ recent: 4,
30
+ },
31
+ };
32
+
9
33
  const state = {
10
34
  foremanTasks: {
11
35
  tasksDashboard: {
@@ -21,20 +45,7 @@ const state = {
21
45
  total: 9,
22
46
  },
23
47
  stopped: {
24
- by_result: {
25
- error: {
26
- total: 9,
27
- recent: 1,
28
- },
29
- warning: {
30
- total: 8,
31
- recent: 2,
32
- },
33
- success: {
34
- total: 7,
35
- recent: 3,
36
- },
37
- },
48
+ by_result: stoppedResult,
38
49
  },
39
50
  scheduled: {
40
51
  total: 6,
@@ -55,6 +66,7 @@ const fixtures = {
55
66
  'should select tasks-summary': () => selectTasksSummary(state),
56
67
  'should select tasks-summary when state is empty': () =>
57
68
  selectTasksSummary({}),
69
+ 'should calcStoppedOther': () => calcStoppedOther(stoppedResult),
58
70
  };
59
71
 
60
72
  describe('TasksDashboard - Selectors', () =>
@@ -24,17 +24,20 @@ exports[`TasksDashboard rendering render without Props 1`] = `
24
24
  },
25
25
  "scheduled": 0,
26
26
  "stopped": Object {
27
- "error": Object {
28
- "last": 0,
29
- "total": 0,
30
- },
31
- "success": Object {
32
- "last": 0,
33
- "total": 0,
34
- },
35
- "warning": Object {
36
- "last": 0,
37
- "total": 0,
27
+ "other": 0,
28
+ "results": Object {
29
+ "error": Object {
30
+ "last": 0,
31
+ "total": 0,
32
+ },
33
+ "success": Object {
34
+ "last": 0,
35
+ "total": 0,
36
+ },
37
+ "warning": Object {
38
+ "last": 0,
39
+ "total": 0,
40
+ },
38
41
  },
39
42
  },
40
43
  }
@@ -1,5 +1,7 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
+ exports[`TasksDashboard - Selectors should calcStoppedOther 1`] = `16`;
4
+
3
5
  exports[`TasksDashboard - Selectors should select query 1`] = `"some-query"`;
4
6
 
5
7
  exports[`TasksDashboard - Selectors should select query when state is empty 1`] = `Object {}`;
@@ -21,10 +23,18 @@ Object {
21
23
  },
22
24
  "stopped": Object {
23
25
  "by_result": Object {
26
+ "cancelled": Object {
27
+ "recent": 3,
28
+ "total": 5,
29
+ },
24
30
  "error": Object {
25
31
  "recent": 1,
26
32
  "total": 9,
27
33
  },
34
+ "pending": Object {
35
+ "recent": 4,
36
+ "total": 11,
37
+ },
28
38
  "success": Object {
29
39
  "recent": 3,
30
40
  "total": 7,
@@ -54,17 +64,20 @@ Object {
54
64
  },
55
65
  "scheduled": 6,
56
66
  "stopped": Object {
57
- "error": Object {
58
- "last": 1,
59
- "total": 9,
60
- },
61
- "success": Object {
62
- "last": 3,
63
- "total": 7,
64
- },
65
- "warning": Object {
66
- "last": 2,
67
- "total": 8,
67
+ "other": 16,
68
+ "results": Object {
69
+ "error": Object {
70
+ "last": 1,
71
+ "total": 9,
72
+ },
73
+ "success": Object {
74
+ "last": 3,
75
+ "total": 7,
76
+ },
77
+ "warning": Object {
78
+ "last": 2,
79
+ "total": 8,
80
+ },
68
81
  },
69
82
  },
70
83
  }
@@ -82,17 +95,20 @@ Object {
82
95
  },
83
96
  "scheduled": 0,
84
97
  "stopped": Object {
85
- "error": Object {
86
- "last": 0,
87
- "total": 0,
88
- },
89
- "success": Object {
90
- "last": 0,
91
- "total": 0,
92
- },
93
- "warning": Object {
94
- "last": 0,
95
- "total": 0,
98
+ "other": 0,
99
+ "results": Object {
100
+ "error": Object {
101
+ "last": 0,
102
+ "total": 0,
103
+ },
104
+ "success": Object {
105
+ "last": 0,
106
+ "total": 0,
107
+ },
108
+ "warning": Object {
109
+ "last": 0,
110
+ "total": 0,
111
+ },
96
112
  },
97
113
  },
98
114
  }
@@ -14,14 +14,6 @@ export const getApiPathname = url => {
14
14
  return uri.pathname().replace('foreman_tasks/', 'foreman_tasks/api/');
15
15
  };
16
16
 
17
- export const resolveSearchQuery = (search, history) => {
18
- const uriQuery = {
19
- search,
20
- page: 1,
21
- };
22
- updateURlQuery(uriQuery, history);
23
- };
24
-
25
17
  export const getCSVurl = (path, query) => {
26
18
  let url = new URI(path);
27
19
  url = url.pathname(`${url.pathname()}.csv`);
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
+ import URI from 'urijs';
3
4
  import { getURIsearch } from 'foremanReact/common/urlHelpers';
4
5
  import { Spinner, Button, Icon } from 'patternfly-react';
5
6
  import PageLayout from 'foremanReact/routes/common/PageLayout/PageLayout';
@@ -10,7 +11,7 @@ import { STATUS } from 'foremanReact/constants';
10
11
  import { useForemanModal } from 'foremanReact/components/ForemanModal/ForemanModalHooks';
11
12
  import TasksDashboard from '../TasksDashboard';
12
13
  import TasksTable from './TasksTable';
13
- import { resolveSearchQuery, getCSVurl } from './TasksTableHelpers';
14
+ import { getCSVurl, updateURlQuery } from './TasksTableHelpers';
14
15
  import ConfirmModal from './Components/ConfirmModal/';
15
16
  import {
16
17
  TASKS_SEARCH_PROPS,
@@ -35,8 +36,17 @@ const TasksTablePage = ({
35
36
  }) => {
36
37
  const url = history.location.pathname + history.location.search;
37
38
  const uriQuery = getURIQuery(url);
38
- const onSearch = searchQuery => {
39
- resolveSearchQuery(searchQuery, history);
39
+ const onSearch = search => {
40
+ const uri = new URI(url);
41
+ if (uri.search(true).search === search && uri.search(true).page === '1') {
42
+ props.getTableItems(uri);
43
+ } else {
44
+ const newUriQuery = {
45
+ search,
46
+ page: 1,
47
+ };
48
+ updateURlQuery(newUriQuery, history);
49
+ }
40
50
  };
41
51
 
42
52
  const { setModalOpen, setModalClosed } = useForemanModal({
@@ -60,7 +70,6 @@ const TasksTablePage = ({
60
70
  onSearch={onSearch}
61
71
  header={createHeader(props.actionName)}
62
72
  breadcrumbOptions={getBreadcrumbs(props.actionName)}
63
- toastNotifications="foreman-tasks-cancel"
64
73
  toolbarButtons={
65
74
  <React.Fragment>
66
75
  <Button onClick={() => props.reloadPage(url, props.parentTaskID)}>
@@ -14,16 +14,6 @@
14
14
  }
15
15
  }
16
16
 
17
- .param-name {
18
- display: inline-block;
19
- width: 10em;
20
- }
21
-
22
- .task-details pre {
23
- white-space: pre;
24
- word-break: normal;
25
- }
26
-
27
17
  .tasks-time-row .time-label {
28
18
  float: left;
29
19
  }
@@ -66,7 +66,6 @@ exports[`TasksTablePage rendering render with Breadcrubs and edit permissions 1`
66
66
  }
67
67
  searchQuery="a=b"
68
68
  searchable={true}
69
- toastNotifications="foreman-tasks-cancel"
70
69
  toolbarButtons={
71
70
  <React.Fragment>
72
71
  <Button
@@ -202,7 +201,6 @@ exports[`TasksTablePage rendering render with minimal props 1`] = `
202
201
  }
203
202
  searchQuery="a=b"
204
203
  searchable={true}
205
- toastNotifications="foreman-tasks-cancel"
206
204
  toolbarButtons={
207
205
  <React.Fragment>
208
206
  <Button
@@ -4,6 +4,8 @@ exports[`actionNameCellFormatter render 1`] = `
4
4
  <a
5
5
  href="/some-url/some-id"
6
6
  >
7
- action-name
7
+ <EllipisWithTooltip>
8
+ action-name
9
+ </EllipisWithTooltip>
8
10
  </a>
9
11
  `;
@@ -1,5 +1,10 @@
1
1
  import React from 'react';
2
2
  import { cellFormatter } from 'foremanReact/components/common/table';
3
+ import EllipsisWithTooltip from 'react-ellipsis-with-tooltip';
3
4
 
4
5
  export const actionNameCellFormatter = url => (value, { rowData: { id } }) =>
5
- cellFormatter(<a href={`/${url}/${id}`}>{value}</a>);
6
+ cellFormatter(
7
+ <a href={`/${url}/${id}`}>
8
+ <EllipsisWithTooltip>{value}</EllipsisWithTooltip>
9
+ </a>
10
+ );
@@ -0,0 +1,7 @@
1
+ import { foremanUrl } from 'foremanReact/common/helpers';
2
+
3
+ export const foremanTasksApiPath = path =>
4
+ foremanUrl(`/foreman_tasks/api/tasks/${path}`);
5
+
6
+ export const foremanTasksPath = path =>
7
+ foremanUrl(`/foreman_tasks/tasks/${path}`);
@@ -1,13 +1,11 @@
1
1
  import { combineReducers } from 'redux';
2
2
  import { reducers as tasksDashboardReducers } from './Components/TasksDashboard';
3
- import { reducers as taskDetailsReducers } from './Components/TaskDetails';
4
3
  import { reducers as tasksTableReducers } from './Components/TasksTable';
5
4
  import { reducers as confirmModalReducers } from './Components/TasksTable/Components/ConfirmModal';
6
5
 
7
6
  const reducers = {
8
7
  foremanTasks: combineReducers({
9
8
  ...tasksDashboardReducers,
10
- ...taskDetailsReducers,
11
9
  ...tasksTableReducers,
12
10
  ...confirmModalReducers,
13
11
  }),
@@ -2,3 +2,5 @@ export const getURIQuery = jest.fn(() => ({}));
2
2
 
3
3
  export const isoCompatibleDate = date => date;
4
4
  export const noop = Function.prototype;
5
+
6
+ export const foremanUrl = path => `foreman${path}`;
@@ -0,0 +1,10 @@
1
+ export const selectAPIResponse = (state, key) => ({
2
+ data: {
3
+ text: 'some-data',
4
+ key,
5
+ },
6
+ });
7
+
8
+ export const selectAPIStatus = (state, key) => 'PENDING';
9
+ export const selectAPIByKey = (state, key) => state[key];
10
+ export const selectAPIError = (state, key) => ({ error: `${key} ERRROR` });
@@ -0,0 +1,10 @@
1
+ export const API = {
2
+ get: jest.fn(),
3
+ put: jest.fn(),
4
+ post: jest.fn(),
5
+ delete: jest.fn(),
6
+ patch: jest.fn(),
7
+ };
8
+
9
+ export const get = data => ({ type: 'get-some-type', ...data });
10
+ export const post = data => ({ type: 'post-some-type', ...data });