aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorVahagn Aharonian <vahagn.aharonian@gmail.com>2018-02-01 12:50:34 +0400
committerVahagn Aharonian <vahagn.aharonian@gmail.com>2018-02-01 12:50:34 +0400
commitab128c3d1cf22599a20de85ca103f1d38d280848 (patch)
tree323906260eb7480d9e1fecdb2d36bd955d482bba
parentf30361fe767d300312c3d1467a60462d9f7da059 (diff)
downloadtime-picker-ab128c3d1cf22599a20de85ca103f1d38d280848.tar.gz
time-picker-ab128c3d1cf22599a20de85ca103f1d38d280848.tar.zst
time-picker-ab128c3d1cf22599a20de85ca103f1d38d280848.zip
Add tests; fix the logic
-rw-r--r--src/Combobox.jsx8
-rw-r--r--tests/Select.spec.jsx120
2 files changed, 126 insertions, 2 deletions
diff --git a/src/Combobox.jsx b/src/Combobox.jsx
index 18fd54c..19fbd19 100644
--- a/src/Combobox.jsx
+++ b/src/Combobox.jsx
@@ -90,8 +90,12 @@ class Combobox extends Component {
90 hourOptionsAdj = [12].concat(hourOptions.filter(h => h < 12 && h > 0)); 90 hourOptionsAdj = [12].concat(hourOptions.filter(h => h < 12 && h > 0));
91 hourAdj = (hour % 12) || 12; 91 hourAdj = (hour % 12) || 12;
92 92
93 if (!this.isAM() && Array.isArray(disabledOptions)) { 93 if (Array.isArray(disabledOptions)) {
94 disabledOptions = disabledOptions.map(h => h - 12); 94 if (this.isAM()) {
95 disabledOptions = disabledOptions.filter(h => h < 12).map(h => (h === 0 ? 12 : h));
96 } else {
97 disabledOptions = disabledOptions.map(h => (h === 12 ? 12 : h - 12));
98 }
95 } 99 }
96 } else { 100 } else {
97 hourOptionsAdj = hourOptions; 101 hourOptionsAdj = hourOptions;
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', () => {
552 done(); 552 done();
553 }); 553 });
554 }); 554 });
555
556 it('disabled correctly', done => {
557 let change;
558 const picker = renderPicker({
559 use12Hours: true,
560 format: undefined,
561 onChange(v) {
562 change = v;
563 },
564 disabledHours() {
565 return [0, 2, 6, 18, 12];
566 },
567 defaultValue: moment()
568 .hour(0)
569 .minute(0)
570 .second(0),
571 showSecond: false,
572 });
573 expect(picker.state.open).not.to.be.ok();
574 const input = TestUtils.scryRenderedDOMComponentsWithClass(picker, 'rc-time-picker-input')[0];
575 let header;
576 async.series(
577 [
578 next => {
579 expect(picker.state.open).to.be(false);
580
581 Simulate.click(input);
582 setTimeout(next, 100);
583 },
584 next => {
585 expect(picker.state.open).to.be(true);
586 header = TestUtils.scryRenderedDOMComponentsWithClass(
587 picker.panelInstance,
588 'rc-time-picker-panel-input',
589 )[0];
590 expect(header).to.be.ok();
591 expect(header.value).to.be('12:00 am');
592 expect(input.value).to.be('12:00 am');
593
594 const selector = TestUtils.scryRenderedDOMComponentsWithClass(
595 picker.panelInstance,
596 'rc-time-picker-panel-select',
597 )[0];
598 const option = selector.getElementsByTagName('li')[2];
599 Simulate.click(option);
600 setTimeout(next, 100);
601 },
602 next => {
603 expect(change).not.to.be.ok();
604 expect(header.value).to.be('12:00 am');
605 expect(input.value).to.be('12:00 am');
606 expect(picker.state.open).to.be.ok();
607
608 const selector = TestUtils.scryRenderedDOMComponentsWithClass(
609 picker.panelInstance,
610 'rc-time-picker-panel-select',
611 )[0];
612 const option = selector.getElementsByTagName('li')[5];
613 Simulate.click(option);
614 setTimeout(next, 100);
615 },
616 next => {
617 expect(change).to.be.ok();
618 expect(change.hour()).to.be(5);
619 expect(header.value).to.be('5:00 am');
620 expect(input.value).to.be('5:00 am');
621 expect(picker.state.open).to.be.ok();
622
623 const selector = TestUtils.scryRenderedDOMComponentsWithClass(
624 picker.panelInstance,
625 'rc-time-picker-panel-select',
626 )[2];
627 Simulate.click(selector.getElementsByTagName('li')[1]);
628
629 setTimeout(next, 200);
630 change = null;
631 },
632 next => {
633 expect(change).not.to.be.ok();
634 expect(header.value).to.be('5:00 pm');
635 expect(input.value).to.be('5:00 pm');
636 expect(picker.state.open).to.be.ok();
637
638 const selector = TestUtils.scryRenderedDOMComponentsWithClass(
639 picker.panelInstance,
640 'rc-time-picker-panel-select',
641 )[0];
642 const option = selector.getElementsByTagName('li')[0];
643 Simulate.click(option);
644 setTimeout(next, 100);
645 },
646 next => {
647 expect(change).not.to.be.ok();
648 expect(header.value).to.be('5:00 pm');
649 expect(input.value).to.be('5:00 pm');
650 expect(picker.state.open).to.be.ok();
651
652 const selector = TestUtils.scryRenderedDOMComponentsWithClass(
653 picker.panelInstance,
654 'rc-time-picker-panel-select',
655 )[0];
656 const option = selector.getElementsByTagName('li')[5];
657 Simulate.click(option);
658 setTimeout(next, 100);
659 },
660 next => {
661 expect(change).to.be.ok();
662 expect(change.hour()).to.be(17);
663 expect(header.value).to.be('5:00 pm');
664 expect(input.value).to.be('5:00 pm');
665 expect(picker.state.open).to.be.ok();
666
667 next();
668 },
669 ],
670 () => {
671 done();
672 },
673 );
674 });
555 }); 675 });
556}); 676});