foreman_leapp 0.0.5 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (89) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +11 -20
  3. data/app/controllers/api/v2/concerns/api_authorizer.rb +27 -0
  4. data/app/controllers/api/v2/preupgrade_reports_controller.rb +21 -2
  5. data/app/controllers/preupgrade_reports_controller.rb +11 -1
  6. data/app/lib/actions/preupgrade_job.rb +2 -1
  7. data/app/lib/helpers/job_helper.rb +3 -4
  8. data/app/models/preupgrade_report.rb +1 -0
  9. data/app/models/preupgrade_report_entry.rb +1 -0
  10. data/app/views/api/v2/preupgrade_report_entries/base.json.rabl +1 -1
  11. data/app/views/api/v2/preupgrade_reports/job_invocation.json.rabl +3 -0
  12. data/app/views/foreman_leapp/job_templates/leapp_check.erb +15 -0
  13. data/app/views/foreman_leapp/job_templates/{preupgrade.erb → leapp_preupgrade.erb} +5 -2
  14. data/app/views/foreman_leapp/job_templates/leapp_remediation.erb +29 -0
  15. data/app/views/foreman_leapp/job_templates/leapp_upgrade.erb +26 -0
  16. data/app/views/job_invocations/_leapp_preupgrade_report.html.erb +2 -1
  17. data/config/routes.rb +2 -1
  18. data/db/migrate/20200429080939_report_entries_flags.rb +5 -0
  19. data/db/seeds.d/10_leapp_preupgrade.rb +1 -1
  20. data/lib/foreman_leapp/engine.rb +7 -6
  21. data/lib/foreman_leapp/version.rb +1 -1
  22. data/package.json +3 -2
  23. data/test/functional/api/v2/preupgrade_reports_controller_test.rb +89 -6
  24. data/test/functional/preupgrade_reports_controller_test.rb +27 -4
  25. data/test/unit/actions/preupgrade_job_test.rb +1 -1
  26. data/test/unit/helpers/job_helper_test.rb +3 -10
  27. data/webpack/__mocks__/foremanReact/Root/Context/ForemanContext.js +4 -0
  28. data/webpack/__mocks__/foremanReact/common/I18n.js +1 -1
  29. data/webpack/__mocks__/foremanReact/components/Pagination/PaginationWrapper.js +2 -0
  30. data/webpack/__mocks__/foremanReact/components/common/EmptyState.js +1 -0
  31. data/webpack/components/PreupgradeReports/PreupgradeReports.js +119 -8
  32. data/webpack/components/PreupgradeReports/PreupgradeReportsActions.js +1 -1
  33. data/webpack/components/PreupgradeReports/PreupgradeReportsHelpers.js +152 -0
  34. data/webpack/components/PreupgradeReports/PreupgradeReportsReducer.js +2 -0
  35. data/webpack/components/PreupgradeReports/PreupgradeReportsSelectors.js +11 -0
  36. data/webpack/components/PreupgradeReports/__tests__/PreupgradeReports.fixtures.js +72 -2
  37. data/webpack/components/PreupgradeReports/__tests__/PreupgradeReports.test.js +26 -1
  38. data/webpack/components/PreupgradeReports/__tests__/PreupgradeReportsHelpers.test.js +78 -0
  39. data/webpack/components/PreupgradeReports/__tests__/__snapshots__/PreupgradeReports.test.js.snap +60 -5
  40. data/webpack/components/PreupgradeReports/__tests__/__snapshots__/PreupgradeReportsHelpers.test.js.snap +489 -0
  41. data/webpack/components/PreupgradeReports/__tests__/__snapshots__/PreupgradeReportsReducer.test.js.snap +40 -1
  42. data/webpack/components/PreupgradeReports/__tests__/__snapshots__/PreupgradeReportsSelectors.test.js.snap +36 -1
  43. data/webpack/components/PreupgradeReports/components/EntriesFilter.js +121 -0
  44. data/webpack/components/PreupgradeReports/components/EntriesFilter.scss +3 -0
  45. data/webpack/components/PreupgradeReports/components/EntriesFilter.test.js +30 -0
  46. data/webpack/components/PreupgradeReports/components/FixSelectedButton.js +35 -0
  47. data/webpack/components/PreupgradeReports/components/FixSelectedButton.test.js +15 -0
  48. data/webpack/components/PreupgradeReports/components/NoReports.js +35 -0
  49. data/webpack/components/PreupgradeReports/components/NoReports.test.js +15 -0
  50. data/webpack/components/PreupgradeReports/components/UpgradeAllButton.js +29 -0
  51. data/webpack/components/PreupgradeReports/components/UpgradeAllButton.test.js +17 -0
  52. data/webpack/components/PreupgradeReports/components/__snapshots__/EntriesFilter.test.js.snap +330 -0
  53. data/webpack/components/PreupgradeReports/components/__snapshots__/FixSelectedButton.test.js.snap +40 -0
  54. data/webpack/components/PreupgradeReports/components/__snapshots__/NoReports.test.js.snap +19 -0
  55. data/webpack/components/PreupgradeReports/components/__snapshots__/UpgradeAllButton.test.js.snap +29 -0
  56. data/webpack/components/PreupgradeReports/index.js +28 -5
  57. data/webpack/components/PreupgradeReportsList/PreupgradeReportList.scss +37 -0
  58. data/webpack/components/PreupgradeReportsList/__tests__/PreupgradeReportsList.test.js +28 -2
  59. data/webpack/components/PreupgradeReportsList/__tests__/__snapshots__/PreupgradeReportsList.test.js.snap +119 -0
  60. data/webpack/components/PreupgradeReportsList/components/InfoItem.js +1 -1
  61. data/webpack/components/PreupgradeReportsList/components/InhibitorInfoItem.js +33 -0
  62. data/webpack/components/PreupgradeReportsList/components/PreupgradeReportEntry.js +50 -6
  63. data/webpack/components/PreupgradeReportsList/components/PreupgradeReportsListHeader.js +56 -0
  64. data/webpack/components/PreupgradeReportsList/components/SortableHeaderItem.js +50 -0
  65. data/webpack/components/PreupgradeReportsList/components/__tests__/InhibitorInfoItem.test.js +27 -0
  66. data/webpack/components/PreupgradeReportsList/components/__tests__/PreupgradeReportEntry.fixtures.js +38 -0
  67. data/webpack/components/PreupgradeReportsList/components/__tests__/PreupgradeReportEntry.test.js +2 -0
  68. data/webpack/components/PreupgradeReportsList/components/__tests__/PreupgradeReportsListHeader.test.js +14 -0
  69. data/webpack/components/PreupgradeReportsList/components/__tests__/SortableHeaderItem.test.js +29 -0
  70. data/webpack/components/PreupgradeReportsList/components/__tests__/__snapshots__/InhibitorInfoItem.test.js.snap +32 -0
  71. data/webpack/components/PreupgradeReportsList/components/__tests__/__snapshots__/PreupgradeReportEntry.test.js.snap +95 -14
  72. data/webpack/components/PreupgradeReportsList/components/__tests__/__snapshots__/PreupgradeReportsListHeader.test.js.snap +113 -0
  73. data/webpack/components/PreupgradeReportsList/components/__tests__/__snapshots__/SortableHeaderItem.test.js.snap +36 -0
  74. data/webpack/components/PreupgradeReportsList/components/__tests__/__snapshots__/helpers.test.js.snap +191 -29
  75. data/webpack/components/PreupgradeReportsList/components/__tests__/helpers.test.js +19 -8
  76. data/webpack/components/PreupgradeReportsList/components/foreman_leapp.scss +15 -0
  77. data/webpack/components/PreupgradeReportsList/components/helpers.js +177 -21
  78. data/webpack/components/PreupgradeReportsList/components/images/i_severity-critical.svg +61 -0
  79. data/webpack/components/PreupgradeReportsList/components/images/i_severity-high.svg +61 -0
  80. data/webpack/components/PreupgradeReportsList/components/images/i_severity-low.svg +62 -0
  81. data/webpack/components/PreupgradeReportsList/components/images/i_severity-med.svg +62 -0
  82. data/webpack/components/PreupgradeReportsList/index.js +48 -10
  83. data/webpack/csrf.js +4 -0
  84. metadata +61 -10
  85. data/app/views/foreman_leapp/job_templates/remediation.erb +0 -17
  86. data/app/views/foreman_leapp/job_templates/upgrade.erb +0 -16
  87. data/webpack/components/PreupgradeReportsList/components/StringInfoItem.js +0 -49
  88. data/webpack/components/PreupgradeReportsList/components/__tests__/StringInfoItem.test.js +0 -13
  89. data/webpack/components/PreupgradeReportsList/components/__tests__/__snapshots__/StringInfoItem.test.js.snap +0 -12
@@ -4,16 +4,37 @@ import PreupgradeReports from '../PreupgradeReports';
4
4
 
5
5
  import { preupgradeReports } from './PreupgradeReports.fixtures';
6
6
 
7
+ const csrfToken = 'xyz';
8
+ const newJobInvocationUrl = '/job_invocations/new';
9
+ const getPreupgradeReports = () => {};
10
+
7
11
  const fixtures = {
8
- 'should render when loaded': {
12
+ 'should render when loaded with reports': {
9
13
  loading: false,
10
14
  error: {},
11
15
  preupgradeReports,
16
+ csrfToken,
17
+ newJobInvocationUrl,
18
+ getPreupgradeReports,
19
+ reportsExpected: true,
20
+ },
21
+ 'should render when loaded without reports': {
22
+ loading: false,
23
+ error: {},
24
+ preupgradeReports: [],
25
+ csrfToken,
26
+ newJobInvocationUrl,
27
+ getPreupgradeReports,
28
+ reportsExpected: true,
12
29
  },
13
30
  'should render when loading': {
14
31
  loading: true,
15
32
  error: {},
16
33
  preupgradeReports: [],
34
+ csrfToken,
35
+ newJobInvocationUrl,
36
+ getPreupgradeReports,
37
+ reportsExpected: false,
17
38
  },
18
39
  'should render error': {
19
40
  loading: false,
@@ -22,6 +43,10 @@ const fixtures = {
22
43
  errorMsg: 'Well, this is embarassing',
23
44
  },
24
45
  preupgradeReports: [],
46
+ csrfToken,
47
+ newJobInvocationUrl,
48
+ getPreupgradeReports,
49
+ reportsExpected: false,
25
50
  },
26
51
  };
27
52
 
@@ -0,0 +1,78 @@
1
+ import { testSelectorsSnapshotWithFixtures } from '@theforeman/test';
2
+
3
+ import {
4
+ preupgradeReports,
5
+ reportsWithRemediations,
6
+ } from './PreupgradeReports.fixtures';
7
+
8
+ import {
9
+ flattenEntries,
10
+ isEmpty,
11
+ entryFixable,
12
+ anyEntriesFixable,
13
+ idsForInvocationFromReports,
14
+ entriesPage,
15
+ filterEntries,
16
+ fixableEntries,
17
+ sortEntries,
18
+ } from '../PreupgradeReportsHelpers';
19
+
20
+ const fixtures = {
21
+ 'should return flattened entrues': () => flattenEntries(preupgradeReports),
22
+ 'should detect empty object': () => isEmpty({}),
23
+ 'should detect non-empty object': () => isEmpty({ foo: 'bar' }),
24
+ 'should detect entry is fixable': () =>
25
+ entryFixable({ detail: { remediations: [{ type: 'command' }] } }),
26
+ 'should detect entry is not fixable when not having a command': () =>
27
+ entryFixable({ detail: { remediations: [{ type: 'hint' }] } }),
28
+ 'should detect entry is not fixable when not having remediations': () =>
29
+ !!entryFixable({ detail: {} }),
30
+ 'should detect no entry is fixable': () =>
31
+ anyEntriesFixable(preupgradeReports),
32
+ 'should detect a fixable entry in reports': () =>
33
+ anyEntriesFixable(reportsWithRemediations),
34
+ 'should collect ids for job invocation from reports': () =>
35
+ idsForInvocationFromReports(preupgradeReports),
36
+ 'should return entries page': () =>
37
+ entriesPage(flattenEntries(preupgradeReports), { page: 2, perPage: 3 }),
38
+ 'should filter entries by title': () =>
39
+ filterEntries('title', 'broken', flattenEntries(preupgradeReports)),
40
+ 'should filter entries by severity': () =>
41
+ filterEntries('severity', 'medium', flattenEntries(preupgradeReports)),
42
+ 'should filter entries by host': () =>
43
+ filterEntries('hostname', 'foo', flattenEntries(preupgradeReports)),
44
+ 'should filter entries by remediations': () =>
45
+ filterEntries('fix', 'command', flattenEntries(reportsWithRemediations)),
46
+ 'should filter entries by inhibitor': () =>
47
+ filterEntries('inhibitor', 'yes', flattenEntries(preupgradeReports)),
48
+ 'should return fixable entries': () =>
49
+ fixableEntries(reportsWithRemediations),
50
+ 'should sort entries by title in ascending order': () =>
51
+ sortEntries(flattenEntries(preupgradeReports), {
52
+ attribute: 'title',
53
+ order: 'asc',
54
+ }),
55
+ 'should sort entries by title in descending order': () =>
56
+ sortEntries(flattenEntries(preupgradeReports), {
57
+ attribute: 'title',
58
+ order: 'desc',
59
+ }),
60
+ 'should sort entries by hostname': () =>
61
+ sortEntries(flattenEntries(preupgradeReports), {
62
+ attribute: 'hostname',
63
+ order: 'asc',
64
+ }),
65
+ 'should sort entries by severity': () =>
66
+ sortEntries(flattenEntries(preupgradeReports), {
67
+ attribute: 'severity',
68
+ order: 'asc',
69
+ }),
70
+ 'should sort entries by remediations': () =>
71
+ sortEntries(flattenEntries(reportsWithRemediations), {
72
+ attribute: 'fix',
73
+ order: 'asc',
74
+ }),
75
+ };
76
+
77
+ describe('PreupgradeReportsHelpers', () =>
78
+ testSelectorsSnapshotWithFixtures(fixtures));
@@ -8,7 +8,7 @@ exports[`PreupgradeReports should render error 1`] = `
8
8
  />
9
9
  `;
10
10
 
11
- exports[`PreupgradeReports should render when loaded 1`] = `
11
+ exports[`PreupgradeReports should render when loaded with reports 1`] = `
12
12
  <LoadingState
13
13
  additionalClasses=""
14
14
  loading={false}
@@ -16,16 +16,27 @@ exports[`PreupgradeReports should render when loaded 1`] = `
16
16
  size="lg"
17
17
  timeout={300}
18
18
  >
19
- <PreupgradeReportsList
19
+ <PreupgradeReports
20
+ csrfToken="xyz"
21
+ error={Object {}}
22
+ getPreupgradeReports={[Function]}
23
+ loading={false}
24
+ newJobInvocationUrl="/job_invocations/new"
20
25
  preupgradeReports={
21
26
  Array [
22
27
  Object {
23
28
  "entries": Array [
24
29
  Object {
25
- "severity": "Too severe to talk about",
30
+ "flags": Array [],
31
+ "hostname": "host.example.com",
32
+ "id": 42,
33
+ "severity": "info",
26
34
  "title": "Fix me!",
27
35
  },
28
36
  Object {
37
+ "flags": Array [],
38
+ "hostname": "host.example.com",
39
+ "id": 43,
29
40
  "severity": "medium",
30
41
  "title": "I am broken too",
31
42
  },
@@ -35,18 +46,62 @@ exports[`PreupgradeReports should render when loaded 1`] = `
35
46
  Object {
36
47
  "entries": Array [
37
48
  Object {
49
+ "flags": Array [
50
+ "inhibitor",
51
+ ],
52
+ "hostname": "foo.example.com",
53
+ "id": 44,
38
54
  "severity": "high",
39
55
  "title": "Octocat is not happy",
40
56
  },
41
57
  Object {
58
+ "flags": Array [],
59
+ "hostname": "foo.example.com",
60
+ "id": 45,
42
61
  "severity": "low",
43
62
  "title": "Not enough credits",
44
63
  },
64
+ Object {
65
+ "flags": Array [],
66
+ "hostname": "foo.example.com",
67
+ "id": 46,
68
+ "severity": "medium",
69
+ "title": "SELinux is turned off",
70
+ },
71
+ Object {
72
+ "flags": Array [],
73
+ "hostname": "foo.example.com",
74
+ "id": 47,
75
+ "severity": "medium",
76
+ "title": "Root password is too short",
77
+ },
78
+ Object {
79
+ "flags": Array [],
80
+ "hostname": "foo.example.com",
81
+ "id": 49,
82
+ "severity": "high",
83
+ "title": "No chocolate chip cookies in cookie jar",
84
+ },
45
85
  ],
46
86
  "hostId": 6,
47
87
  },
48
88
  ]
49
89
  }
90
+ reportsExpected={true}
91
+ />
92
+ </LoadingState>
93
+ `;
94
+
95
+ exports[`PreupgradeReports should render when loaded without reports 1`] = `
96
+ <LoadingState
97
+ additionalClasses=""
98
+ loading={false}
99
+ loadingText="Loading"
100
+ size="lg"
101
+ timeout={300}
102
+ >
103
+ <NoReports
104
+ reportsExpected={true}
50
105
  />
51
106
  </LoadingState>
52
107
  `;
@@ -59,8 +114,8 @@ exports[`PreupgradeReports should render when loading 1`] = `
59
114
  size="lg"
60
115
  timeout={300}
61
116
  >
62
- <PreupgradeReportsList
63
- preupgradeReports={Array []}
117
+ <NoReports
118
+ reportsExpected={false}
64
119
  />
65
120
  </LoadingState>
66
121
  `;
@@ -0,0 +1,489 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`PreupgradeReportsHelpers should collect ids for job invocation from reports 1`] = `
4
+ Object {
5
+ "entryIds": Array [],
6
+ "hostIds": Array [],
7
+ }
8
+ `;
9
+
10
+ exports[`PreupgradeReportsHelpers should detect a fixable entry in reports 1`] = `true`;
11
+
12
+ exports[`PreupgradeReportsHelpers should detect empty object 1`] = `true`;
13
+
14
+ exports[`PreupgradeReportsHelpers should detect entry is fixable 1`] = `true`;
15
+
16
+ exports[`PreupgradeReportsHelpers should detect entry is not fixable when not having a command 1`] = `false`;
17
+
18
+ exports[`PreupgradeReportsHelpers should detect entry is not fixable when not having remediations 1`] = `false`;
19
+
20
+ exports[`PreupgradeReportsHelpers should detect no entry is fixable 1`] = `false`;
21
+
22
+ exports[`PreupgradeReportsHelpers should detect non-empty object 1`] = `false`;
23
+
24
+ exports[`PreupgradeReportsHelpers should filter entries by host 1`] = `
25
+ Array [
26
+ Object {
27
+ "flags": Array [
28
+ "inhibitor",
29
+ ],
30
+ "hostname": "foo.example.com",
31
+ "id": 44,
32
+ "severity": "high",
33
+ "title": "Octocat is not happy",
34
+ },
35
+ Object {
36
+ "flags": Array [],
37
+ "hostname": "foo.example.com",
38
+ "id": 45,
39
+ "severity": "low",
40
+ "title": "Not enough credits",
41
+ },
42
+ Object {
43
+ "flags": Array [],
44
+ "hostname": "foo.example.com",
45
+ "id": 46,
46
+ "severity": "medium",
47
+ "title": "SELinux is turned off",
48
+ },
49
+ Object {
50
+ "flags": Array [],
51
+ "hostname": "foo.example.com",
52
+ "id": 47,
53
+ "severity": "medium",
54
+ "title": "Root password is too short",
55
+ },
56
+ Object {
57
+ "flags": Array [],
58
+ "hostname": "foo.example.com",
59
+ "id": 49,
60
+ "severity": "high",
61
+ "title": "No chocolate chip cookies in cookie jar",
62
+ },
63
+ ]
64
+ `;
65
+
66
+ exports[`PreupgradeReportsHelpers should filter entries by inhibitor 1`] = `
67
+ Array [
68
+ Object {
69
+ "flags": Array [
70
+ "inhibitor",
71
+ ],
72
+ "hostname": "foo.example.com",
73
+ "id": 44,
74
+ "severity": "high",
75
+ "title": "Octocat is not happy",
76
+ },
77
+ ]
78
+ `;
79
+
80
+ exports[`PreupgradeReportsHelpers should filter entries by remediations 1`] = `
81
+ Array [
82
+ Object {
83
+ "detail": Object {
84
+ "remediations": Array [
85
+ Object {
86
+ "type": "command",
87
+ },
88
+ ],
89
+ },
90
+ "severity": "high",
91
+ "title": "Octocat is not happy",
92
+ },
93
+ ]
94
+ `;
95
+
96
+ exports[`PreupgradeReportsHelpers should filter entries by severity 1`] = `
97
+ Array [
98
+ Object {
99
+ "flags": Array [],
100
+ "hostname": "host.example.com",
101
+ "id": 43,
102
+ "severity": "medium",
103
+ "title": "I am broken too",
104
+ },
105
+ Object {
106
+ "flags": Array [],
107
+ "hostname": "foo.example.com",
108
+ "id": 46,
109
+ "severity": "medium",
110
+ "title": "SELinux is turned off",
111
+ },
112
+ Object {
113
+ "flags": Array [],
114
+ "hostname": "foo.example.com",
115
+ "id": 47,
116
+ "severity": "medium",
117
+ "title": "Root password is too short",
118
+ },
119
+ ]
120
+ `;
121
+
122
+ exports[`PreupgradeReportsHelpers should filter entries by title 1`] = `
123
+ Array [
124
+ Object {
125
+ "flags": Array [],
126
+ "hostname": "host.example.com",
127
+ "id": 43,
128
+ "severity": "medium",
129
+ "title": "I am broken too",
130
+ },
131
+ ]
132
+ `;
133
+
134
+ exports[`PreupgradeReportsHelpers should return entries page 1`] = `
135
+ Array [
136
+ Object {
137
+ "flags": Array [],
138
+ "hostname": "foo.example.com",
139
+ "id": 45,
140
+ "severity": "low",
141
+ "title": "Not enough credits",
142
+ },
143
+ Object {
144
+ "flags": Array [],
145
+ "hostname": "foo.example.com",
146
+ "id": 46,
147
+ "severity": "medium",
148
+ "title": "SELinux is turned off",
149
+ },
150
+ Object {
151
+ "flags": Array [],
152
+ "hostname": "foo.example.com",
153
+ "id": 47,
154
+ "severity": "medium",
155
+ "title": "Root password is too short",
156
+ },
157
+ ]
158
+ `;
159
+
160
+ exports[`PreupgradeReportsHelpers should return fixable entries 1`] = `
161
+ Array [
162
+ Object {
163
+ "detail": Object {
164
+ "remediations": Array [
165
+ Object {
166
+ "type": "command",
167
+ },
168
+ ],
169
+ },
170
+ "severity": "high",
171
+ "title": "Octocat is not happy",
172
+ },
173
+ ]
174
+ `;
175
+
176
+ exports[`PreupgradeReportsHelpers should return flattened entrues 1`] = `
177
+ Array [
178
+ Object {
179
+ "flags": Array [],
180
+ "hostname": "host.example.com",
181
+ "id": 42,
182
+ "severity": "info",
183
+ "title": "Fix me!",
184
+ },
185
+ Object {
186
+ "flags": Array [],
187
+ "hostname": "host.example.com",
188
+ "id": 43,
189
+ "severity": "medium",
190
+ "title": "I am broken too",
191
+ },
192
+ Object {
193
+ "flags": Array [
194
+ "inhibitor",
195
+ ],
196
+ "hostname": "foo.example.com",
197
+ "id": 44,
198
+ "severity": "high",
199
+ "title": "Octocat is not happy",
200
+ },
201
+ Object {
202
+ "flags": Array [],
203
+ "hostname": "foo.example.com",
204
+ "id": 45,
205
+ "severity": "low",
206
+ "title": "Not enough credits",
207
+ },
208
+ Object {
209
+ "flags": Array [],
210
+ "hostname": "foo.example.com",
211
+ "id": 46,
212
+ "severity": "medium",
213
+ "title": "SELinux is turned off",
214
+ },
215
+ Object {
216
+ "flags": Array [],
217
+ "hostname": "foo.example.com",
218
+ "id": 47,
219
+ "severity": "medium",
220
+ "title": "Root password is too short",
221
+ },
222
+ Object {
223
+ "flags": Array [],
224
+ "hostname": "foo.example.com",
225
+ "id": 49,
226
+ "severity": "high",
227
+ "title": "No chocolate chip cookies in cookie jar",
228
+ },
229
+ ]
230
+ `;
231
+
232
+ exports[`PreupgradeReportsHelpers should sort entries by hostname 1`] = `
233
+ Array [
234
+ Object {
235
+ "flags": Array [
236
+ "inhibitor",
237
+ ],
238
+ "hostname": "foo.example.com",
239
+ "id": 44,
240
+ "severity": "high",
241
+ "title": "Octocat is not happy",
242
+ },
243
+ Object {
244
+ "flags": Array [],
245
+ "hostname": "foo.example.com",
246
+ "id": 45,
247
+ "severity": "low",
248
+ "title": "Not enough credits",
249
+ },
250
+ Object {
251
+ "flags": Array [],
252
+ "hostname": "foo.example.com",
253
+ "id": 46,
254
+ "severity": "medium",
255
+ "title": "SELinux is turned off",
256
+ },
257
+ Object {
258
+ "flags": Array [],
259
+ "hostname": "foo.example.com",
260
+ "id": 47,
261
+ "severity": "medium",
262
+ "title": "Root password is too short",
263
+ },
264
+ Object {
265
+ "flags": Array [],
266
+ "hostname": "foo.example.com",
267
+ "id": 49,
268
+ "severity": "high",
269
+ "title": "No chocolate chip cookies in cookie jar",
270
+ },
271
+ Object {
272
+ "flags": Array [],
273
+ "hostname": "host.example.com",
274
+ "id": 42,
275
+ "severity": "info",
276
+ "title": "Fix me!",
277
+ },
278
+ Object {
279
+ "flags": Array [],
280
+ "hostname": "host.example.com",
281
+ "id": 43,
282
+ "severity": "medium",
283
+ "title": "I am broken too",
284
+ },
285
+ ]
286
+ `;
287
+
288
+ exports[`PreupgradeReportsHelpers should sort entries by remediations 1`] = `
289
+ Array [
290
+ Object {
291
+ "detail": Object {
292
+ "remediations": Array [
293
+ Object {
294
+ "type": "hint",
295
+ },
296
+ ],
297
+ },
298
+ "severity": "info",
299
+ "title": "Fix me!",
300
+ },
301
+ Object {
302
+ "detail": Object {
303
+ "remediations": Array [
304
+ Object {
305
+ "type": "command",
306
+ },
307
+ ],
308
+ },
309
+ "severity": "high",
310
+ "title": "Octocat is not happy",
311
+ },
312
+ Object {
313
+ "severity": "medium",
314
+ "title": "I am broken too",
315
+ },
316
+ Object {
317
+ "severity": "low",
318
+ "title": "Not enough credits",
319
+ },
320
+ ]
321
+ `;
322
+
323
+ exports[`PreupgradeReportsHelpers should sort entries by severity 1`] = `
324
+ Array [
325
+ Object {
326
+ "flags": Array [],
327
+ "hostname": "host.example.com",
328
+ "id": 42,
329
+ "severity": "info",
330
+ "title": "Fix me!",
331
+ },
332
+ Object {
333
+ "flags": Array [],
334
+ "hostname": "foo.example.com",
335
+ "id": 45,
336
+ "severity": "low",
337
+ "title": "Not enough credits",
338
+ },
339
+ Object {
340
+ "flags": Array [],
341
+ "hostname": "host.example.com",
342
+ "id": 43,
343
+ "severity": "medium",
344
+ "title": "I am broken too",
345
+ },
346
+ Object {
347
+ "flags": Array [],
348
+ "hostname": "foo.example.com",
349
+ "id": 46,
350
+ "severity": "medium",
351
+ "title": "SELinux is turned off",
352
+ },
353
+ Object {
354
+ "flags": Array [],
355
+ "hostname": "foo.example.com",
356
+ "id": 47,
357
+ "severity": "medium",
358
+ "title": "Root password is too short",
359
+ },
360
+ Object {
361
+ "flags": Array [
362
+ "inhibitor",
363
+ ],
364
+ "hostname": "foo.example.com",
365
+ "id": 44,
366
+ "severity": "high",
367
+ "title": "Octocat is not happy",
368
+ },
369
+ Object {
370
+ "flags": Array [],
371
+ "hostname": "foo.example.com",
372
+ "id": 49,
373
+ "severity": "high",
374
+ "title": "No chocolate chip cookies in cookie jar",
375
+ },
376
+ ]
377
+ `;
378
+
379
+ exports[`PreupgradeReportsHelpers should sort entries by title in ascending order 1`] = `
380
+ Array [
381
+ Object {
382
+ "flags": Array [],
383
+ "hostname": "host.example.com",
384
+ "id": 42,
385
+ "severity": "info",
386
+ "title": "Fix me!",
387
+ },
388
+ Object {
389
+ "flags": Array [],
390
+ "hostname": "host.example.com",
391
+ "id": 43,
392
+ "severity": "medium",
393
+ "title": "I am broken too",
394
+ },
395
+ Object {
396
+ "flags": Array [],
397
+ "hostname": "foo.example.com",
398
+ "id": 49,
399
+ "severity": "high",
400
+ "title": "No chocolate chip cookies in cookie jar",
401
+ },
402
+ Object {
403
+ "flags": Array [],
404
+ "hostname": "foo.example.com",
405
+ "id": 45,
406
+ "severity": "low",
407
+ "title": "Not enough credits",
408
+ },
409
+ Object {
410
+ "flags": Array [
411
+ "inhibitor",
412
+ ],
413
+ "hostname": "foo.example.com",
414
+ "id": 44,
415
+ "severity": "high",
416
+ "title": "Octocat is not happy",
417
+ },
418
+ Object {
419
+ "flags": Array [],
420
+ "hostname": "foo.example.com",
421
+ "id": 47,
422
+ "severity": "medium",
423
+ "title": "Root password is too short",
424
+ },
425
+ Object {
426
+ "flags": Array [],
427
+ "hostname": "foo.example.com",
428
+ "id": 46,
429
+ "severity": "medium",
430
+ "title": "SELinux is turned off",
431
+ },
432
+ ]
433
+ `;
434
+
435
+ exports[`PreupgradeReportsHelpers should sort entries by title in descending order 1`] = `
436
+ Array [
437
+ Object {
438
+ "flags": Array [],
439
+ "hostname": "foo.example.com",
440
+ "id": 46,
441
+ "severity": "medium",
442
+ "title": "SELinux is turned off",
443
+ },
444
+ Object {
445
+ "flags": Array [],
446
+ "hostname": "foo.example.com",
447
+ "id": 47,
448
+ "severity": "medium",
449
+ "title": "Root password is too short",
450
+ },
451
+ Object {
452
+ "flags": Array [
453
+ "inhibitor",
454
+ ],
455
+ "hostname": "foo.example.com",
456
+ "id": 44,
457
+ "severity": "high",
458
+ "title": "Octocat is not happy",
459
+ },
460
+ Object {
461
+ "flags": Array [],
462
+ "hostname": "foo.example.com",
463
+ "id": 45,
464
+ "severity": "low",
465
+ "title": "Not enough credits",
466
+ },
467
+ Object {
468
+ "flags": Array [],
469
+ "hostname": "foo.example.com",
470
+ "id": 49,
471
+ "severity": "high",
472
+ "title": "No chocolate chip cookies in cookie jar",
473
+ },
474
+ Object {
475
+ "flags": Array [],
476
+ "hostname": "host.example.com",
477
+ "id": 43,
478
+ "severity": "medium",
479
+ "title": "I am broken too",
480
+ },
481
+ Object {
482
+ "flags": Array [],
483
+ "hostname": "host.example.com",
484
+ "id": 42,
485
+ "severity": "info",
486
+ "title": "Fix me!",
487
+ },
488
+ ]
489
+ `;