1 import ReactDOM from 'react-dom';
2 import React from 'react';
3 import TimePicker from '../src/TimePicker';
5 import TestUtils from 'react-addons-test-utils';
6 var Simulate = TestUtils.Simulate;
7 import expect from 'expect.js';
8 import async from 'async';
9 import {KeyCode} from 'rc-util';
11 import DateTimeFormat from 'gregorian-calendar-format';
12 import GregorianCalendar from 'gregorian-calendar';
13 import zhCn from 'gregorian-calendar/lib/locale/zh_CN';
14 import TimePickerLocale from '../src/locale/zh_CN';
16 describe('Select', function () {
19 function renderPicker(props) {
20 var showSecond = true;
21 var formatter = new DateTimeFormat('HH:mm:ss');
23 return ReactDOM.render(
26 locale={TimePickerLocale}
27 showSecond={showSecond}
28 defaultValue={formatTime('01:02:03', formatter)}
33 function formatTime(time, formatter) {
34 return formatter.parse(time, {
40 beforeEach(function () {
41 container = document.createElement('div');
42 document.body.appendChild(container);
45 afterEach(function () {
46 ReactDOM.unmountComponentAtNode(container);
47 document.body.removeChild(container);
50 describe('select number', function () {
52 it('select number correctly', function (done) {
53 var picker = renderPicker();
54 expect(picker.state.open).not.to.be.ok();
55 var input = TestUtils.scryRenderedDOMComponentsWithClass(picker, 'rc-time-picker-input')[0];
57 async.series([function (next) {
58 expect(picker.state.open).to.be(false);
60 Simulate.click(input);
61 setTimeout(next, 100);
63 expect(picker.state.open).to.be(true);
64 selector = TestUtils.scryRenderedDOMComponentsWithClass(picker.panelInstance, 'rc-time-picker-panel-select');
66 setTimeout(next, 100);
68 expect(selector.length).to.be(3);
78 describe('select to change value', function () {
80 it('hour correctly', function (done) {
82 var picker = renderPicker({
83 onChange: function (v) {
87 expect(picker.state.open).not.to.be.ok();
88 var input = TestUtils.scryRenderedDOMComponentsWithClass(picker, 'rc-time-picker-input')[0];
90 async.series([function (next) {
91 expect(picker.state.open).to.be(false);
93 Simulate.click(input);
94 setTimeout(next, 100);
96 expect(picker.state.open).to.be(true);
97 header = TestUtils.scryRenderedDOMComponentsWithClass(picker.panelInstance, 'rc-time-picker-panel-input')[0];
98 var selector = TestUtils.scryRenderedDOMComponentsWithClass(picker.panelInstance, 'rc-time-picker-panel-select')[0];
99 var option = selector.getElementsByTagName('li')[19];
100 expect(header).to.be.ok();
101 expect(ReactDOM.findDOMNode(header).value).to.be('01:02:03');
102 expect(ReactDOM.findDOMNode(input).value).to.be('01:02:03');
104 Simulate.click(option);
105 setTimeout(next, 100);
107 expect(change).to.be.ok();
108 expect(change.getHourOfDay()).to.be(19);
109 expect(ReactDOM.findDOMNode(header).value).to.be('19:02:03');
110 expect(ReactDOM.findDOMNode(input).value).to.be('19:02:03');
111 expect(picker.state.open).to.be.ok();
119 it('minute correctly', function (done) {
121 var picker = renderPicker({
122 onChange: function (v) {
126 expect(picker.state.open).not.to.be.ok();
127 var input = TestUtils.scryRenderedDOMComponentsWithClass(picker, 'rc-time-picker-input')[0];
129 async.series([function (next) {
130 expect(picker.state.open).to.be(false);
132 Simulate.click(input);
133 setTimeout(next, 100);
135 expect(picker.state.open).to.be(true);
136 header = TestUtils.scryRenderedDOMComponentsWithClass(picker.panelInstance, 'rc-time-picker-panel-input')[0];
137 var selector = TestUtils.scryRenderedDOMComponentsWithClass(picker.panelInstance, 'rc-time-picker-panel-select')[1];
138 var option = selector.getElementsByTagName('li')[19];
139 expect(header).to.be.ok();
140 expect(ReactDOM.findDOMNode(header).value).to.be('01:02:03');
141 expect(ReactDOM.findDOMNode(input).value).to.be('01:02:03');
143 Simulate.click(option);
144 setTimeout(next, 100);
146 expect(change).to.be.ok();
147 expect(change.getMinutes()).to.be(19);
148 expect(ReactDOM.findDOMNode(header).value).to.be('01:19:03');
149 expect(ReactDOM.findDOMNode(input).value).to.be('01:19:03');
150 expect(picker.state.open).to.be.ok();
158 it('second correctly', function (done) {
160 var picker = renderPicker({
161 onChange: function (v) {
165 expect(picker.state.open).not.to.be.ok();
166 var input = TestUtils.scryRenderedDOMComponentsWithClass(picker, 'rc-time-picker-input')[0];
168 async.series([function (next) {
169 expect(picker.state.open).to.be(false);
171 Simulate.click(input);
172 setTimeout(next, 100);
174 expect(picker.state.open).to.be(true);
175 header = TestUtils.scryRenderedDOMComponentsWithClass(picker.panelInstance, 'rc-time-picker-panel-input')[0];
176 var selector = TestUtils.scryRenderedDOMComponentsWithClass(picker.panelInstance, 'rc-time-picker-panel-select')[2];
177 var option = selector.getElementsByTagName('li')[19];
178 expect(header).to.be.ok();
179 expect(ReactDOM.findDOMNode(header).value).to.be('01:02:03');
180 expect(ReactDOM.findDOMNode(input).value).to.be('01:02:03');
182 Simulate.click(option);
183 setTimeout(next, 100);
185 expect(change).to.be.ok();
186 expect(change.getSeconds()).to.be(19);
187 expect(ReactDOM.findDOMNode(header).value).to.be('01:02:19');
188 expect(ReactDOM.findDOMNode(input).value).to.be('01:02:19');
189 expect(picker.state.open).to.be.ok();