From ab128c3d1cf22599a20de85ca103f1d38d280848 Mon Sep 17 00:00:00 2001
From: Vahagn Aharonian <vahagn.aharonian@gmail.com>
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/Select.spec.jsx')

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

