Skip to content

Commit

Permalink
fix(Slider): do not render Slider when range.min === range.max
Browse files Browse the repository at this point in the history
  • Loading branch information
vvo committed Feb 19, 2016
1 parent 8c89862 commit f20274e
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 3 deletions.
1 change: 1 addition & 0 deletions functional-tests/app/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ search.addWidget(

search.addWidget(
instantsearch.widgets.currentRefinedValues({
autoHideContainer: false,
container: '#current-refined-values',
cssClasses: {
header: 'facet-title',
Expand Down
6 changes: 6 additions & 0 deletions src/components/Slider/Slider.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,12 @@ class Slider extends React.Component {
}

render() {
if (this.props.range.min === this.props.range.max) {
// There's no need to try to render the Slider, it will not be usable
// and will throw
return null;
}

// setup pips
let pips;
if (this.props.pips === false) {
Expand Down
15 changes: 12 additions & 3 deletions src/components/Slider/__tests__/Slider-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ describe('Slider', () => {
let renderer;
let Slider;
let Nouislider;
let props;

beforeEach(() => {
let {createRenderer} = TestUtils;
Expand All @@ -23,6 +24,9 @@ describe('Slider', () => {
// need to be required AFTER jsdom has initialized global.window/navigator
Slider = require('../Slider.js');
Nouislider = require('react-nouislider');
props = {
range: {min: 0, max: 5000}
};
});


Expand All @@ -33,17 +37,22 @@ describe('Slider', () => {
animate={false}
behaviour="snap"
connect
cssClasses={{}}
cssPrefix="ais-range-slider--"
onChange={() => {}}
pips={{density: 3, format: {to: function noRefCheck() {}}, mode: 'positions', stepped: true, values: [0, 50, 100]}}
templateProps={{}}
range={props.range}
/>
);
});

it('should not render anything when ranges are equal', () => {
props.range.min = props.range.max = 8;
let out = render();
expect(out).toEqual(null);
});

function render() {
renderer.render(<Slider cssClasses={{}} templateProps={{}} />);
renderer.render(<Slider {...props} />);
return renderer.getRenderOutput();
}
});

0 comments on commit f20274e

Please sign in to comment.