foreman_rh_cloud 1.0.4.1 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/foreman_inventory_upload/accounts_controller.rb +1 -0
  3. data/app/controllers/foreman_inventory_upload/uploads_controller.rb +14 -7
  4. data/app/models/setting/rh_cloud.rb +13 -0
  5. data/config/routes.rb +1 -0
  6. data/lib/foreman_inventory_upload.rb +12 -0
  7. data/lib/foreman_inventory_upload/async/async_helpers.rb +13 -0
  8. data/lib/foreman_inventory_upload/async/generate_all_reports_job.rb +8 -0
  9. data/lib/foreman_inventory_upload/async/shell_process.rb +3 -1
  10. data/lib/foreman_inventory_upload/generators/archived_report.rb +6 -3
  11. data/lib/foreman_inventory_upload/generators/fact_helpers.rb +13 -0
  12. data/lib/foreman_inventory_upload/generators/queries.rb +2 -0
  13. data/lib/foreman_inventory_upload/generators/slice.rb +30 -10
  14. data/lib/foreman_rh_cloud/engine.rb +4 -0
  15. data/lib/foreman_rh_cloud/version.rb +1 -1
  16. data/test/controllers/accounts_controller_test.rb +8 -3
  17. data/test/controllers/uploads_controller_test.rb +13 -0
  18. data/test/unit/archived_report_generator_test.rb +1 -0
  19. data/test/unit/fact_helpers_test.rb +29 -0
  20. data/test/unit/slice_generator_test.rb +109 -12
  21. data/test/unit/slice_generator_test.rb.orig +280 -0
  22. data/webpack/ForemanInventoryUpload/Components/AccountList/AccountList.fixtures.js +2 -0
  23. data/webpack/ForemanInventoryUpload/Components/AccountList/AccountListActions.js +2 -1
  24. data/webpack/ForemanInventoryUpload/Components/AccountList/AccountListReducer.js +8 -0
  25. data/webpack/ForemanInventoryUpload/Components/AccountList/AccountListSelectors.js +2 -0
  26. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountListReducer.test.js +11 -0
  27. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountListSelectors.test.js +9 -1
  28. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/__snapshots__/AccountListReducer.test.js.snap +10 -0
  29. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/__snapshots__/AccountListSelectors.test.js.snap +5 -2
  30. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/AutoUploadSwitcher.fixtures.js +1 -0
  31. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/AutoUploadSwitcher.js +32 -0
  32. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/AutoUploadSwitcherActions.js +27 -0
  33. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/AutoUploadSwitcherConstants.js +2 -0
  34. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/__tests__/AutoUploadSwitcher.test.js +14 -0
  35. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/__tests__/AutoUploadSwitcherActions.test.js +14 -0
  36. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/__tests__/__snapshots__/AutoUploadSwitcher.test.js.snap +38 -0
  37. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/__tests__/__snapshots__/AutoUploadSwitcherActions.test.js.snap +14 -0
  38. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/autoUploadSwitcher.scss +3 -0
  39. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/index.js +17 -0
  40. data/webpack/ForemanInventoryUpload/Components/Dashboard/__tests__/DashboardIntegration.test.js +2 -1
  41. data/webpack/ForemanInventoryUpload/Components/PageHeader/PageHeader.js +21 -0
  42. data/webpack/ForemanInventoryUpload/Components/PageHeader/__tests__/PageHeader.test.js +13 -0
  43. data/webpack/ForemanInventoryUpload/Components/PageHeader/__tests__/__snapshots__/PageHeader.test.js.snap +33 -0
  44. data/webpack/ForemanInventoryUpload/Components/PageHeader/index.js +1 -0
  45. data/webpack/ForemanInventoryUpload/Components/ScheduledRun/ScheduledRun.fixtures.js +1 -0
  46. data/webpack/ForemanInventoryUpload/Components/ScheduledRun/ScheduledRun.js +4 -2
  47. data/webpack/ForemanInventoryUpload/Components/ScheduledRun/__tests__/ScheduledRun.test.js +0 -1
  48. data/webpack/ForemanInventoryUpload/Components/ScheduledRun/__tests__/__snapshots__/ScheduledRun.test.js.snap +0 -2
  49. data/webpack/ForemanInventoryUpload/Components/ScheduledRun/index.js +12 -1
  50. data/webpack/ForemanInventoryUpload/Components/TabBody/__tests__/__snapshots__/TabBody.test.js.snap +1 -1
  51. data/webpack/ForemanInventoryUpload/ForemanInventoryUpload.js +5 -4
  52. data/webpack/ForemanInventoryUpload/__snapshots__/ForemanInventoryUpload.test.js.snap +6 -5
  53. metadata +22 -2
@@ -0,0 +1 @@
1
+ export const handleToggleResponse = { data: { autoUploadEnabled: true } };
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { Switch, FieldLevelHelp } from 'patternfly-react';
4
+ import { translate as __ } from 'foremanReact/common/I18n';
5
+ import './autoUploadSwitcher.scss';
6
+
7
+ const AutoUploadSwitcher = ({ autoUploadEnabled, handleToggle }) => (
8
+ <div className="auto_upload_switcher">
9
+ <Switch
10
+ size="mini"
11
+ value={autoUploadEnabled}
12
+ onChange={() => handleToggle(autoUploadEnabled)}
13
+ />
14
+ <FieldLevelHelp
15
+ content={__(
16
+ 'Enable automatic upload of your host inventory to the Red Hat cloud'
17
+ )}
18
+ />
19
+ <span>Allow Auto Upload</span>
20
+ </div>
21
+ );
22
+
23
+ AutoUploadSwitcher.propTypes = {
24
+ autoUploadEnabled: PropTypes.bool,
25
+ handleToggle: PropTypes.func.isRequired,
26
+ };
27
+
28
+ AutoUploadSwitcher.defaultProps = {
29
+ autoUploadEnabled: true,
30
+ };
31
+
32
+ export default AutoUploadSwitcher;
@@ -0,0 +1,27 @@
1
+ import API from 'foremanReact/API';
2
+ import {
3
+ AUTO_UPLOAD_TOGGLE,
4
+ AUTO_UPLOAD_TOGGLE_ERROR,
5
+ } from './AutoUploadSwitcherConstants';
6
+
7
+ export const handleToggle = currentAutoUploadEnabled => async dispatch => {
8
+ const toggledAutoUploadEnabled = !currentAutoUploadEnabled;
9
+ try {
10
+ const {
11
+ data: { autoUploadEnabled },
12
+ } = await API.post('auto_upload', { value: toggledAutoUploadEnabled });
13
+ dispatch({
14
+ type: AUTO_UPLOAD_TOGGLE,
15
+ payload: {
16
+ autoUploadEnabled,
17
+ },
18
+ });
19
+ } catch (error) {
20
+ dispatch({
21
+ type: AUTO_UPLOAD_TOGGLE_ERROR,
22
+ payload: {
23
+ error: error.message,
24
+ },
25
+ });
26
+ }
27
+ };
@@ -0,0 +1,2 @@
1
+ export const AUTO_UPLOAD_TOGGLE = 'AUTO_UPLOAD_TOGGLE';
2
+ export const AUTO_UPLOAD_TOGGLE_ERROR = 'AUTO_UPLOAD_TOGGLE_ERROR';
@@ -0,0 +1,14 @@
1
+ import { testComponentSnapshotsWithFixtures } from 'react-redux-test-utils';
2
+ import { noop } from 'patternfly-react';
3
+
4
+ import AutoUploadSwitcher from '../AutoUploadSwitcher';
5
+
6
+ const fixtures = {
7
+ 'render with props': { autoUploadEnabled: true, handleToggle: noop },
8
+ /** fixtures, props for the component */
9
+ };
10
+
11
+ describe('AutoUploadSwitcher', () => {
12
+ describe('rendering', () =>
13
+ testComponentSnapshotsWithFixtures(AutoUploadSwitcher, fixtures));
14
+ });
@@ -0,0 +1,14 @@
1
+ import { testActionSnapshotWithFixtures } from 'react-redux-test-utils';
2
+ import API from 'foremanReact/API';
3
+ import { handleToggle } from '../AutoUploadSwitcherActions';
4
+ import { handleToggleResponse } from '../AutoUploadSwitcher.fixtures';
5
+
6
+ jest.mock('foremanReact/API');
7
+ API.post.mockImplementation(async () => handleToggleResponse);
8
+
9
+ const fixtures = {
10
+ 'should handleToggle': () => handleToggle(),
11
+ };
12
+
13
+ describe('AutoUploadSwitcher actions', () =>
14
+ testActionSnapshotWithFixtures(fixtures));
@@ -0,0 +1,38 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`AutoUploadSwitcher rendering render with props 1`] = `
4
+ <div
5
+ className="auto_upload_switcher"
6
+ >
7
+ <Switch
8
+ animate={true}
9
+ baseClass="bootstrap-switch"
10
+ bsSize={null}
11
+ defaultValue={true}
12
+ disabled={false}
13
+ handleWidth="auto"
14
+ inverse={false}
15
+ labelText=" "
16
+ labelWidth="auto"
17
+ offColor="default"
18
+ offText="OFF"
19
+ onChange={[Function]}
20
+ onColor="primary"
21
+ onText="ON"
22
+ readonly={false}
23
+ size="mini"
24
+ tristate={false}
25
+ value={true}
26
+ wrapperClass="wrapper"
27
+ />
28
+ <FieldLevelHelp
29
+ buttonClass=""
30
+ content="Enable automatic upload of your host inventory to the Red Hat cloud"
31
+ placement="top"
32
+ rootClose={true}
33
+ />
34
+ <span>
35
+ Allow Auto Upload
36
+ </span>
37
+ </div>
38
+ `;
@@ -0,0 +1,14 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`AutoUploadSwitcher actions should handleToggle 1`] = `
4
+ Array [
5
+ Array [
6
+ Object {
7
+ "payload": Object {
8
+ "autoUploadEnabled": true,
9
+ },
10
+ "type": "AUTO_UPLOAD_TOGGLE",
11
+ },
12
+ ],
13
+ ]
14
+ `;
@@ -0,0 +1,3 @@
1
+ .auto_upload_switcher {
2
+ float: right;
3
+ }
@@ -0,0 +1,17 @@
1
+ import { bindActionCreators } from 'redux';
2
+ import { connect } from 'react-redux';
3
+
4
+ import * as actions from './AutoUploadSwitcherActions';
5
+ import AutoUploadSwitcher from './AutoUploadSwitcher';
6
+ import { selectAutoUploadEnabled } from '../AccountList/AccountListSelectors';
7
+
8
+ // map state to props
9
+ const mapStateToProps = state => ({
10
+ autoUploadEnabled: selectAutoUploadEnabled(state),
11
+ });
12
+
13
+ // map action dispatchers to props
14
+ const mapDispatchToProps = dispatch => bindActionCreators(actions, dispatch);
15
+
16
+ // export connected component
17
+ export default connect(mapStateToProps, mapDispatchToProps)(AutoUploadSwitcher);
@@ -1,7 +1,8 @@
1
1
  import React from 'react';
2
2
  import { IntegrationTestHelper } from 'react-redux-test-utils';
3
3
 
4
- import Dashboard, { reducers } from '../index';
4
+ import Dashboard from '../Dashboard';
5
+ import reducers from '../../../ForemanInventoryUploadReducers';
5
6
  import { accountID } from '../Dashboard.fixtures';
6
7
 
7
8
  describe('Dashboard integration test', () => {
@@ -0,0 +1,21 @@
1
+ import React from 'react';
2
+ import { Grid } from 'patternfly-react';
3
+ import { translate as __ } from 'foremanReact/common/I18n';
4
+ import AutoUploadSwitcher from '../AutoUploadSwitcher';
5
+
6
+ const PageHeader = () => (
7
+ <React.Fragment>
8
+ <Grid.Row>
9
+ <Grid.Col xs={12}>
10
+ <h1>{__('Red Hat Inventory Uploads')}</h1>
11
+ </Grid.Col>
12
+ </Grid.Row>
13
+ <Grid.Row>
14
+ <Grid.Col xs={4} xsOffset={8}>
15
+ <AutoUploadSwitcher />
16
+ </Grid.Col>
17
+ </Grid.Row>
18
+ </React.Fragment>
19
+ );
20
+
21
+ export default PageHeader;
@@ -0,0 +1,13 @@
1
+ import { testComponentSnapshotsWithFixtures } from 'react-redux-test-utils';
2
+
3
+ import PageHeader from '../PageHeader';
4
+
5
+ const fixtures = {
6
+ 'render without Props': {},
7
+ /** fixtures, props for the component */
8
+ };
9
+
10
+ describe('PageHeader', () => {
11
+ describe('rendering', () =>
12
+ testComponentSnapshotsWithFixtures(PageHeader, fixtures));
13
+ });
@@ -0,0 +1,33 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`PageHeader rendering render without Props 1`] = `
4
+ <Fragment>
5
+ <Row
6
+ bsClass="row"
7
+ componentClass="div"
8
+ >
9
+ <Col
10
+ bsClass="col"
11
+ componentClass="div"
12
+ xs={12}
13
+ >
14
+ <h1>
15
+ Red Hat Inventory Uploads
16
+ </h1>
17
+ </Col>
18
+ </Row>
19
+ <Row
20
+ bsClass="row"
21
+ componentClass="div"
22
+ >
23
+ <Col
24
+ bsClass="col"
25
+ componentClass="div"
26
+ xs={4}
27
+ xsOffset={8}
28
+ >
29
+ <Connect(AutoUploadSwitcher) />
30
+ </Col>
31
+ </Row>
32
+ </Fragment>
33
+ `;
@@ -0,0 +1 @@
1
+ export { default } from './PageHeader';
@@ -1,3 +1,4 @@
1
1
  export const props = {
2
2
  date: '2019-08-21T16:14:16.520+03:00',
3
+ autoUploadEnabled: true,
3
4
  };
@@ -5,8 +5,8 @@ import { FormattedRelative } from 'react-intl';
5
5
  import { translate as __ } from 'foremanReact/common/I18n';
6
6
  import './scheduledRun.scss';
7
7
 
8
- const ScheduledRun = ({ date }) =>
9
- date ? (
8
+ const ScheduledRun = ({ date, autoUploadEnabled }) =>
9
+ autoUploadEnabled && date ? (
10
10
  <Grid.Col sm={12} className="scheduled_run">
11
11
  <p>
12
12
  <Icon name="calendar" />
@@ -18,10 +18,12 @@ const ScheduledRun = ({ date }) =>
18
18
 
19
19
  ScheduledRun.propTypes = {
20
20
  date: PropTypes.string,
21
+ autoUploadEnabled: PropTypes.bool,
21
22
  };
22
23
 
23
24
  ScheduledRun.defaultProps = {
24
25
  date: null,
26
+ autoUploadEnabled: true,
25
27
  };
26
28
 
27
29
  export default ScheduledRun;
@@ -4,7 +4,6 @@ import ScheduledRun from '../ScheduledRun';
4
4
  import { props } from '../ScheduledRun.fixtures';
5
5
 
6
6
  const fixtures = {
7
- 'render without Props': {},
8
7
  'render with Props': props,
9
8
  };
10
9
 
@@ -21,5 +21,3 @@ exports[`ScheduledRun rendering render with Props 1`] = `
21
21
  </p>
22
22
  </Col>
23
23
  `;
24
-
25
- exports[`ScheduledRun rendering render without Props 1`] = `""`;
@@ -1 +1,12 @@
1
- export { default } from './ScheduledRun';
1
+ import { connect } from 'react-redux';
2
+
3
+ import ScheduledRun from './ScheduledRun';
4
+ import { selectAutoUploadEnabled } from '../AccountList/AccountListSelectors';
5
+
6
+ // map state to props
7
+ const mapStateToProps = state => ({
8
+ autoUploadEnabled: selectAutoUploadEnabled(state),
9
+ });
10
+
11
+ // export connected component
12
+ export default connect(mapStateToProps)(ScheduledRun);
@@ -12,7 +12,7 @@ exports[`TabBody rendering render without Props 1`] = `
12
12
  exitCode=""
13
13
  logs={null}
14
14
  />
15
- <ScheduledRun
15
+ <Connect(ScheduledRun)
16
16
  date={null}
17
17
  />
18
18
  </Row>
@@ -1,14 +1,15 @@
1
1
  import React from 'react';
2
2
  import { IntlProvider } from 'react-intl';
3
- import { translate as __ } from 'foremanReact/common/I18n';
3
+ import { Grid } from 'patternfly-react';
4
4
  import AccountList from './Components/AccountList';
5
+ import PageHeader from './Components/PageHeader';
5
6
 
6
7
  const ForemanInventoryUpload = () => (
7
8
  <IntlProvider locale={navigator.language}>
8
- <div className="inventory-upload">
9
- <h1>{__('Red Hat Inventory Uploads')}</h1>
9
+ <Grid fluid className="inventory-upload">
10
+ <PageHeader />
10
11
  <AccountList />
11
- </div>
12
+ </Grid>
12
13
  </IntlProvider>
13
14
  );
14
15
 
@@ -4,13 +4,14 @@ exports[`ForemanInventoryUpload render without Props 1`] = `
4
4
  <IntlProvider
5
5
  locale="en-US"
6
6
  >
7
- <div
7
+ <Grid
8
+ bsClass="container"
8
9
  className="inventory-upload"
10
+ componentClass="div"
11
+ fluid={true}
9
12
  >
10
- <h1>
11
- Red Hat Inventory Uploads
12
- </h1>
13
+ <PageHeader />
13
14
  <Connect(AccountList) />
14
- </div>
15
+ </Grid>
15
16
  </IntlProvider>
16
17
  `;
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_rh_cloud
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4.1
4
+ version: 1.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Foreman Red Hat Cloud team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-31 00:00:00.000000000 Z
11
+ date: 2020-04-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: katello
@@ -109,9 +109,11 @@ files:
109
109
  - app/controllers/foreman_inventory_upload/reports_controller.rb
110
110
  - app/controllers/foreman_inventory_upload/uploads_controller.rb
111
111
  - app/helpers/foreman_inventory_upload_helper.rb
112
+ - app/models/setting/rh_cloud.rb
112
113
  - app/views/foreman_inventory_upload/layouts/react.html.erb
113
114
  - config/routes.rb
114
115
  - lib/foreman_inventory_upload.rb
116
+ - lib/foreman_inventory_upload/async/async_helpers.rb
115
117
  - lib/foreman_inventory_upload/async/generate_all_reports_job.rb
116
118
  - lib/foreman_inventory_upload/async/generate_report_job.rb
117
119
  - lib/foreman_inventory_upload/async/progress_output.rb
@@ -141,9 +143,11 @@ files:
141
143
  - test/factories/inventory_upload_factories.rb
142
144
  - test/test_plugin_helper.rb
143
145
  - test/unit/archived_report_generator_test.rb
146
+ - test/unit/fact_helpers_test.rb
144
147
  - test/unit/metadata_generator_test.rb
145
148
  - test/unit/shell_process_job_test.rb
146
149
  - test/unit/slice_generator_test.rb
150
+ - test/unit/slice_generator_test.rb.orig
147
151
  - webpack/ForemanInventoryUpload/Components/AccountList/AccountList.fixtures.js
148
152
  - webpack/ForemanInventoryUpload/Components/AccountList/AccountList.js
149
153
  - webpack/ForemanInventoryUpload/Components/AccountList/AccountList.stories.js
@@ -191,6 +195,16 @@ files:
191
195
  - webpack/ForemanInventoryUpload/Components/AccountList/__tests__/__snapshots__/AccountListSelectors.test.js.snap
192
196
  - webpack/ForemanInventoryUpload/Components/AccountList/accountList.scss
193
197
  - webpack/ForemanInventoryUpload/Components/AccountList/index.js
198
+ - webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/AutoUploadSwitcher.fixtures.js
199
+ - webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/AutoUploadSwitcher.js
200
+ - webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/AutoUploadSwitcherActions.js
201
+ - webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/AutoUploadSwitcherConstants.js
202
+ - webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/__tests__/AutoUploadSwitcher.test.js
203
+ - webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/__tests__/AutoUploadSwitcherActions.test.js
204
+ - webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/__tests__/__snapshots__/AutoUploadSwitcher.test.js.snap
205
+ - webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/__tests__/__snapshots__/AutoUploadSwitcherActions.test.js.snap
206
+ - webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/autoUploadSwitcher.scss
207
+ - webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/index.js
194
208
  - webpack/ForemanInventoryUpload/Components/Dashboard/Dashboard.fixtures.js
195
209
  - webpack/ForemanInventoryUpload/Components/Dashboard/Dashboard.js
196
210
  - webpack/ForemanInventoryUpload/Components/Dashboard/Dashboard.stories.js
@@ -231,6 +245,10 @@ files:
231
245
  - webpack/ForemanInventoryUpload/Components/NavContainer/__tests__/__snapshots__/NavContainer.test.js.snap
232
246
  - webpack/ForemanInventoryUpload/Components/NavContainer/index.js
233
247
  - webpack/ForemanInventoryUpload/Components/NavContainer/navContainer.scss
248
+ - webpack/ForemanInventoryUpload/Components/PageHeader/PageHeader.js
249
+ - webpack/ForemanInventoryUpload/Components/PageHeader/__tests__/PageHeader.test.js
250
+ - webpack/ForemanInventoryUpload/Components/PageHeader/__tests__/__snapshots__/PageHeader.test.js.snap
251
+ - webpack/ForemanInventoryUpload/Components/PageHeader/index.js
234
252
  - webpack/ForemanInventoryUpload/Components/ReportGenerate/ReportGenerate.fixtures.js
235
253
  - webpack/ForemanInventoryUpload/Components/ReportGenerate/ReportGenerate.js
236
254
  - webpack/ForemanInventoryUpload/Components/ReportGenerate/ReportGenerateHelper.js
@@ -342,5 +360,7 @@ test_files:
342
360
  - test/factories/inventory_upload_factories.rb
343
361
  - test/unit/shell_process_job_test.rb
344
362
  - test/unit/metadata_generator_test.rb
363
+ - test/unit/slice_generator_test.rb.orig
364
+ - test/unit/fact_helpers_test.rb
345
365
  - test/unit/archived_report_generator_test.rb
346
366
  - test/unit/slice_generator_test.rb