Skip to content

Commit db2afef

Browse files
fix: reporting config page create and delete bugs
1 parent 79647fc commit db2afef

File tree

4 files changed

+66
-5
lines changed

4 files changed

+66
-5
lines changed

src/components/ReportingConfig/ReportingConfigForm.jsx

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,9 @@ class ReportingConfigForm extends React.Component {
141141
submitState,
142142
} = this.state;
143143
const selectedCatalogs = (config?.enterpriseCustomerCatalogs || []).map(item => item.uuid);
144-
const dataTypesOptions = reportingConfigTypes.dataType.map(item => ({ label: item[1], value: item[0] }));
144+
const dataTypesOptions = reportingConfigTypes.dataType.map((item, index) => ({
145+
key: index, label: item[1], value: item[0],
146+
}));
145147
const dataTypesOptionsValues = dataTypesOptions.map(item => item.value);
146148
const selectedDataTypesOption = config ? [{ label: config.dataType, value: config.dataType, hidden: true }] : [];
147149
return (
@@ -404,7 +406,16 @@ ReportingConfigForm.propTypes = {
404406
uuid: PropTypes.string,
405407
title: PropTypes.string,
406408
})).isRequired,
407-
reportingConfigTypes: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string)).isRequired,
409+
reportingConfigTypes: PropTypes.shape({
410+
dataType: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string)),
411+
reportType: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string)),
412+
deliveryMethod: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string)),
413+
dayOfWeek: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.oneOfType([
414+
PropTypes.string,
415+
PropTypes.number,
416+
]))),
417+
frequency: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string)),
418+
}).isRequired,
408419
createConfig: PropTypes.func.isRequired,
409420
updateConfig: PropTypes.func,
410421
deleteConfig: PropTypes.func,

src/components/ReportingConfig/ReportingConfigForm.test.jsx

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,23 @@ const createConfig = () => { };
114114
const updateConfig = () => { };
115115

116116
describe('<ReportingConfigForm />', () => {
117+
it('properly handles deletion of configs', () => {
118+
const mock = jest.fn();
119+
const wrapper = mount((
120+
<ReportingConfigForm
121+
config={config}
122+
createConfig={createConfig}
123+
updateConfig={updateConfig}
124+
availableCatalogs={availableCatalogs}
125+
reportingConfigTypes={reportingConfigTypes}
126+
deleteConfig={mock}
127+
/>
128+
));
129+
// It's finding three buttons for some reason??
130+
wrapper.find('.btn-outline-danger').at(0).simulate('click');
131+
expect(mock).toHaveBeenCalled();
132+
});
133+
117134
it('renders the proper fields when changing the delivery method', () => {
118135
const wrapper = mount((
119136
<ReportingConfigForm
@@ -251,7 +268,7 @@ describe('<ReportingConfigForm />', () => {
251268
/>
252269
));
253270
expect(
254-
wrapper.find('select#enterpriseCustomerCatalogs').instance().value = ['test-enterprise-customer-catalog'],
255-
);
271+
wrapper.find('select#enterpriseCustomerCatalogs').instance().value,
272+
).toEqual('test-enterprise-customer-catalog');
256273
});
257274
});

src/components/ReportingConfig/index.jsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,10 @@ class ReportingConfig extends React.Component {
7373
.findIndex(config => config.uuid === uuid);
7474

7575
this.setState((state) => {
76-
const newReportingConfig = { ...state.reportingConfigs }.splice(deletedIndex, 1);
76+
// Copy the existing, needs to be updated, list of reporting configs
77+
const newReportingConfig = [...state.reportingConfigs];
78+
// Splice out the one that's being deleted
79+
newReportingConfig.splice(deletedIndex, 1);
7780
return {
7881
reportingConfigs: newReportingConfig,
7982
};
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import React from 'react';
2+
import { mount } from 'enzyme';
3+
import ReportingConfig from './index';
4+
5+
const defaultProps = {
6+
location: {
7+
state: { hasRequestedCodes: true },
8+
},
9+
match: { path: 'foobar' },
10+
history: { replace: jest.fn() },
11+
enterpriseId: 'enterpriseFoobar',
12+
};
13+
14+
describe('<ReportingConfig /> ', () => {
15+
it('properly removes forms on delete', () => {
16+
const wrapper = mount(<ReportingConfig {...defaultProps} />);
17+
const configUuidToDelete = 'fake enterprise uuid';
18+
wrapper.setState(
19+
{
20+
reportingConfigs: [
21+
{ uuid: configUuidToDelete },
22+
{ uuid: 'foo' },
23+
{ uuid: 'bar' },
24+
],
25+
},
26+
);
27+
// Make sure deleteConfig doesn't blow things up
28+
wrapper.instance().deleteConfig(configUuidToDelete);
29+
});
30+
});

0 commit comments

Comments
 (0)