fix: onSave datasource raises React error (#8049)

* fix: datasource save raises React error

* add test
This commit is contained in:
Maxime Beauchemin
2019-08-15 14:13:18 -07:00
committed by GitHub
parent 8773fdceb2
commit 5e0c91ef49
2 changed files with 11 additions and 2 deletions

View File

@@ -368,5 +368,12 @@ describe('MetricsControl', () => {
wrapper.setProps({ ...props, columns: [] }); wrapper.setProps({ ...props, columns: [] });
expect(onChange.calledOnce).toEqual(false); expect(onChange.calledOnce).toEqual(false);
}); });
it('Does not fail if no columns or savedMetrics are passed', () => {
const { wrapper } = setup({
savedMetrics: null,
columns: null,
});
expect(wrapper.exists('.metrics-select')).toEqual(true);
});
}); });
}); });

View File

@@ -54,6 +54,8 @@ const propTypes = {
const defaultProps = { const defaultProps = {
onChange: () => {}, onChange: () => {},
clearable: true, clearable: true,
savedMetrics: [],
columns: [],
}; };
function isDictionaryForAdhocMetric(value) { function isDictionaryForAdhocMetric(value) {
@@ -62,7 +64,7 @@ function isDictionaryForAdhocMetric(value) {
function columnsContainAllMetrics(value, nextProps) { function columnsContainAllMetrics(value, nextProps) {
const columnNames = new Set( const columnNames = new Set(
[...nextProps.columns, ...nextProps.savedMetrics] [...(nextProps.columns || []), ...(nextProps.savedMetrics || [])]
// eslint-disable-next-line camelcase // eslint-disable-next-line camelcase
.map(({ column_name, metric_name }) => (column_name || metric_name)), .map(({ column_name, metric_name }) => (column_name || metric_name)),
); );
@@ -243,7 +245,7 @@ export default class MetricsControl extends React.PureComponent {
Object.keys(AGGREGATES).map(aggregate => ({ aggregate_name: aggregate })) : Object.keys(AGGREGATES).map(aggregate => ({ aggregate_name: aggregate })) :
[]; [];
const options = [ const options = [
...columns, ...(columns || []),
...aggregates, ...aggregates,
...(savedMetrics || []), ...(savedMetrics || []),
]; ];