From ab128c3d1cf22599a20de85ca103f1d38d280848 Mon Sep 17 00:00:00 2001 From: Vahagn Aharonian Date: Thu, 1 Feb 2018 12:50:34 +0400 Subject: Add tests; fix the logic --- tests/Select.spec.jsx | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) (limited to 'tests') diff --git a/tests/Select.spec.jsx b/tests/Select.spec.jsx index 2a15e7c..f414c18 100644 --- a/tests/Select.spec.jsx +++ b/tests/Select.spec.jsx @@ -552,5 +552,125 @@ describe('Select', () => { done(); }); }); + + it('disabled correctly', done => { + let change; + const picker = renderPicker({ + use12Hours: true, + format: undefined, + onChange(v) { + change = v; + }, + disabledHours() { + return [0, 2, 6, 18, 12]; + }, + defaultValue: moment() + .hour(0) + .minute(0) + .second(0), + showSecond: false, + }); + expect(picker.state.open).not.to.be.ok(); + const input = TestUtils.scryRenderedDOMComponentsWithClass(picker, 'rc-time-picker-input')[0]; + let header; + async.series( + [ + next => { + expect(picker.state.open).to.be(false); + + Simulate.click(input); + setTimeout(next, 100); + }, + next => { + expect(picker.state.open).to.be(true); + header = TestUtils.scryRenderedDOMComponentsWithClass( + picker.panelInstance, + 'rc-time-picker-panel-input', + )[0]; + expect(header).to.be.ok(); + expect(header.value).to.be('12:00 am'); + expect(input.value).to.be('12:00 am'); + + const selector = TestUtils.scryRenderedDOMComponentsWithClass( + picker.panelInstance, + 'rc-time-picker-panel-select', + )[0]; + const option = selector.getElementsByTagName('li')[2]; + Simulate.click(option); + setTimeout(next, 100); + }, + next => { + expect(change).not.to.be.ok(); + expect(header.value).to.be('12:00 am'); + expect(input.value).to.be('12:00 am'); + expect(picker.state.open).to.be.ok(); + + const selector = TestUtils.scryRenderedDOMComponentsWithClass( + picker.panelInstance, + 'rc-time-picker-panel-select', + )[0]; + const option = selector.getElementsByTagName('li')[5]; + Simulate.click(option); + setTimeout(next, 100); + }, + next => { + expect(change).to.be.ok(); + expect(change.hour()).to.be(5); + expect(header.value).to.be('5:00 am'); + expect(input.value).to.be('5:00 am'); + expect(picker.state.open).to.be.ok(); + + const selector = TestUtils.scryRenderedDOMComponentsWithClass( + picker.panelInstance, + 'rc-time-picker-panel-select', + )[2]; + Simulate.click(selector.getElementsByTagName('li')[1]); + + setTimeout(next, 200); + change = null; + }, + next => { + expect(change).not.to.be.ok(); + expect(header.value).to.be('5:00 pm'); + expect(input.value).to.be('5:00 pm'); + expect(picker.state.open).to.be.ok(); + + const selector = TestUtils.scryRenderedDOMComponentsWithClass( + picker.panelInstance, + 'rc-time-picker-panel-select', + )[0]; + const option = selector.getElementsByTagName('li')[0]; + Simulate.click(option); + setTimeout(next, 100); + }, + next => { + expect(change).not.to.be.ok(); + expect(header.value).to.be('5:00 pm'); + expect(input.value).to.be('5:00 pm'); + expect(picker.state.open).to.be.ok(); + + const selector = TestUtils.scryRenderedDOMComponentsWithClass( + picker.panelInstance, + 'rc-time-picker-panel-select', + )[0]; + const option = selector.getElementsByTagName('li')[5]; + Simulate.click(option); + setTimeout(next, 100); + }, + next => { + expect(change).to.be.ok(); + expect(change.hour()).to.be(17); + expect(header.value).to.be('5:00 pm'); + expect(input.value).to.be('5:00 pm'); + expect(picker.state.open).to.be.ok(); + + next(); + }, + ], + () => { + done(); + }, + ); + }); }); }); -- cgit v1.2.3