diff --git a/superset/assets/spec/javascripts/explore/components/FilterControl_spec.jsx b/superset/assets/spec/javascripts/explore/components/FilterControl_spec.jsx index 114e3e96b18a4..2b83fff457979 100644 --- a/superset/assets/spec/javascripts/explore/components/FilterControl_spec.jsx +++ b/superset/assets/spec/javascripts/explore/components/FilterControl_spec.jsx @@ -227,12 +227,7 @@ describe('FilterControl', () => { // Sets active to null after success $.ajax.getCall(0).args[0].success(['opt1', 'opt2', null, '']); expect(wrapper.state().filters[0].valuesLoading).to.equal(false); - expect(wrapper.state().filters[0].valueChoices).to.deep.equal([ - { value: 'opt1', label: 'opt1' }, - { value: 'opt2', label: 'opt2' }, - { value: '', label: '' }, - { value: '', label: '' }, - ]); + expect(wrapper.state().filters[0].valueChoices).to.deep.equal(['opt1', 'opt2', null, '']); expect(wrapper.state().activeRequest).to.equal(null); }); diff --git a/superset/assets/spec/javascripts/utils/common_spec.jsx b/superset/assets/spec/javascripts/utils/common_spec.jsx index 5aa4b4334f43b..861c38ae530c8 100644 --- a/superset/assets/spec/javascripts/utils/common_spec.jsx +++ b/superset/assets/spec/javascripts/utils/common_spec.jsx @@ -1,6 +1,6 @@ import { it, describe } from 'mocha'; import { expect } from 'chai'; -import { isTruthy } from '../../../src/utils/common'; +import { isTruthy, optionFromValue } from '../../../src/utils/common'; describe('utils/common', () => { describe('isTruthy', () => { @@ -40,4 +40,14 @@ describe('utils/common', () => { expect(isTruthy('false')).to.equal(false); }); }); + describe('optionFromValue', () => { + it('converts values as expected', () => { + expect(optionFromValue(false)).to.deep.equal({ value: false, label: '' }); + expect(optionFromValue(true)).to.deep.equal({ value: true, label: '' }); + expect(optionFromValue(null)).to.deep.equal({ value: '', label: '' }); + expect(optionFromValue('')).to.deep.equal({ value: '', label: '' }); + expect(optionFromValue('foo')).to.deep.equal({ value: 'foo', label: 'foo' }); + expect(optionFromValue(5)).to.deep.equal({ value: 5, label: '5' }); + }); + }); }); diff --git a/superset/assets/src/components/OnPasteSelect.jsx b/superset/assets/src/components/OnPasteSelect.jsx index d715d2afa85af..40bbbd09328d7 100644 --- a/superset/assets/src/components/OnPasteSelect.jsx +++ b/superset/assets/src/components/OnPasteSelect.jsx @@ -2,31 +2,6 @@ import React from 'react'; import PropTypes from 'prop-types'; import Select from 'react-select'; - -function optionLabel(opt) { - if (opt === null) { - return ''; - } else if (opt === '') { - return ''; - } else if (opt === true) { - return ''; - } else if (opt === '') { - return ''; - } - return opt; -} -function optionValue(opt) { - if (opt === null) { - return ''; - } - return opt; -} -function optionFromValue(opt) { - // From a list of options, handles special values & labels - return { value: optionValue(opt), label: optionLabel(opt) }; -} - - export default class OnPasteSelect extends React.Component { onPaste(evt) { if (!this.props.multi) { @@ -80,7 +55,6 @@ export default class OnPasteSelect extends React.Component { this.pasteInput = ref; }; const inputProps = { onPaste: this.onPaste.bind(this) }; - console.log(this.props); return ( '; } else if (opt === false) { return ''; + } else if (typeof opt !== 'string' && opt.toString) { + return opt.toString(); } return opt; }