date-picker.spec.js 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718
  1. import { createTest, createVue, destroyVM, triggerEvent } from '../util';
  2. import DatePicker from 'packages/date-picker';
  3. const DELAY = 10;
  4. describe('DatePicker', () => {
  5. let vm;
  6. afterEach(() => {
  7. destroyVM(vm);
  8. });
  9. it('create', () => {
  10. vm = createTest(DatePicker, {
  11. readonly: true,
  12. placeholder: '23333',
  13. format: 'HH-mm-ss'
  14. });
  15. const input = vm.$el.querySelector('input');
  16. expect(input.getAttribute('placeholder')).to.equal('23333');
  17. expect(input.getAttribute('readonly')).to.equal('readonly');
  18. });
  19. it('select date', done => {
  20. vm = createVue({
  21. template: `
  22. <el-date-picker ref="compo" v-model="value"></el-date-picker>
  23. `,
  24. data() {
  25. return { value: '' };
  26. }
  27. }, true);
  28. const input = vm.$el.querySelector('input');
  29. const date = new Date();
  30. input.blur();
  31. input.focus();
  32. setTimeout(_ => {
  33. const $el = vm.$refs.compo.picker.$el;
  34. const spans = $el.querySelectorAll('.el-date-picker__header-label');
  35. const arrowLeftElm = $el.querySelector('.el-date-picker__prev-btn.el-icon-arrow-left');
  36. const arrowRightElm = $el.querySelector('.el-date-picker__next-btn.el-icon-arrow-right');
  37. expect(spans[0].textContent).to.include(date.getFullYear());
  38. expect(spans[1].textContent).to.include(date.getMonth() + 1);
  39. $el.querySelector('.el-date-picker__prev-btn.el-icon-d-arrow-left').click();
  40. let count = 20;
  41. while (--count) {
  42. arrowLeftElm.click();
  43. }
  44. count = 18;
  45. while (--count) {
  46. arrowRightElm.click();
  47. }
  48. setTimeout(_ => {
  49. expect(spans[0].textContent).to.include(date.getFullYear() - 1);
  50. expect(spans[1].textContent).to.include(date.getMonth() - 1);
  51. $el.querySelector('td.available').click();
  52. vm.$nextTick(_ => {
  53. expect(vm.value).to.exist;
  54. });
  55. done();
  56. }, DELAY);
  57. }, DELAY);
  58. });
  59. it('clear value', done => {
  60. vm = createVue({
  61. template: `
  62. <el-date-picker v-model="value" ref="compo"></el-date-picker>
  63. `,
  64. data() {
  65. return { value: '' };
  66. }
  67. }, true);
  68. const input = vm.$el.querySelector('input');
  69. input.focus();
  70. setTimeout(_ => {
  71. const $el = vm.$refs.compo.picker.$el;
  72. $el.querySelector('td.available').click();
  73. vm.$nextTick(_ => {
  74. vm.$el.querySelector('.el-input__icon').click();
  75. setTimeout(_ => {
  76. expect(vm.value).to.empty;
  77. done();
  78. }, DELAY);
  79. });
  80. }, DELAY);
  81. });
  82. it('disabled clear value', done => {
  83. vm = createVue({
  84. template: `
  85. <el-date-picker v-model="value" ref="compo" :clearable="false"></el-date-picker>
  86. `,
  87. data() {
  88. return { value: '' };
  89. }
  90. }, true);
  91. const input = vm.$el.querySelector('input');
  92. input.focus();
  93. setTimeout(_ => {
  94. const $el = vm.$refs.compo.picker.$el;
  95. $el.querySelector('td.available').click();
  96. vm.$nextTick(_ => {
  97. vm.$el.querySelector('.el-input__icon').click();
  98. setTimeout(_ => {
  99. expect(vm.value).to.be.exist;
  100. done();
  101. }, DELAY);
  102. });
  103. }, DELAY);
  104. });
  105. it('reset', done => {
  106. vm = createVue({
  107. template: `
  108. <el-date-picker ref="compo" v-model="value"></el-date-picker>
  109. `,
  110. data() {
  111. return { value: '' };
  112. }
  113. }, true);
  114. const input = vm.$el.querySelector('input');
  115. input.blur();
  116. input.focus();
  117. setTimeout(_ => {
  118. const $el = vm.$refs.compo.picker.$el;
  119. $el.querySelector('.el-date-picker__next-btn.el-icon-arrow-right').click();
  120. setTimeout(_ => {
  121. $el.querySelector('td.available').click();
  122. vm.$nextTick(_ => {
  123. vm.value = '';
  124. setTimeout(_ => {
  125. expect(vm.$refs.compo.picker.date.getDate()).to.equal(new Date().getDate());
  126. done();
  127. }, DELAY);
  128. });
  129. }, DELAY);
  130. }, DELAY);
  131. });
  132. describe('keydown', () => {
  133. let input;
  134. let keyDown = function(el, keyCode) {
  135. const evt = document.createEvent('Events');
  136. evt.initEvent('keydown', true, true);
  137. evt.keyCode = keyCode;
  138. el.dispatchEvent(evt);
  139. };
  140. beforeEach(done => {
  141. vm = createTest(DatePicker, true);
  142. input = vm.$el.querySelector('input');
  143. input.blur();
  144. input.focus();
  145. setTimeout(done, DELAY);
  146. });
  147. afterEach(() => destroyVM(vm));
  148. it('tab', () => {
  149. keyDown(input, 9);
  150. expect(vm.pickerVisible).to.false;
  151. });
  152. it('enter', done => {
  153. input.value = '2000-10-1';
  154. triggerEvent(input, 'change', true);
  155. setTimeout(_ => {
  156. expect(vm.pickerVisible).to.true; // 敲回车不会消失
  157. expect(vm.picker.date.getFullYear()).to.equal(2000);
  158. expect(vm.picker.date.getMonth()).to.equal(9);
  159. expect(vm.picker.date.getDate()).to.equal(1);
  160. done();
  161. }, DELAY);
  162. });
  163. it('left', () => {
  164. input.value = '2000-10-1';
  165. keyDown(input, 13);
  166. input.focus();
  167. keyDown(input, 37);
  168. expect(input.selectionStart > 0).to.true;
  169. });
  170. it('right', () => {
  171. input.value = '2000-10-1';
  172. keyDown(input, 13);
  173. input.focus();
  174. keyDown(input, 39);
  175. expect(input.selectionStart > 0).to.true;
  176. });
  177. });
  178. it('type:month', done => {
  179. vm = createTest(DatePicker, {
  180. type: 'month'
  181. }, true);
  182. const input = vm.$el.querySelector('input');
  183. input.blur();
  184. input.focus();
  185. setTimeout(_ => {
  186. expect(vm.picker.$el.querySelector('.el-month-table').style.display).to.be.empty;
  187. expect(vm.picker.$el.querySelector('.el-year-table').style.display).to.be.equal('none');
  188. vm.picker.$el.querySelector('.el-month-table a.cell').click();
  189. expect(vm.pickerVisible).to.false;
  190. done();
  191. }, DELAY);
  192. });
  193. it('type:year', done => {
  194. vm = createTest(DatePicker, {
  195. type: 'year'
  196. }, true);
  197. const input = vm.$el.querySelector('input');
  198. input.blur();
  199. input.focus();
  200. setTimeout(_ => {
  201. expect(vm.picker.$el.querySelector('.el-year-table').style.display).to.empty;
  202. expect(vm.picker.$el.querySelector('.el-month-table').style.display).to.be.equal('none');
  203. const leftBtn = vm.picker.$el.querySelector('.el-icon-d-arrow-left');
  204. const rightBtn = vm.picker.$el.querySelector('.el-icon-d-arrow-right');
  205. let count = 20;
  206. while (--count) {
  207. leftBtn.click();
  208. }
  209. count = 18;
  210. while (--count) {
  211. rightBtn.click();
  212. }
  213. vm.picker.$el.querySelector('.el-year-table a.cell').click();
  214. expect(vm.pickerVisible).to.false;
  215. done();
  216. }, DELAY);
  217. });
  218. describe('type:datetime', () => {
  219. let vm;
  220. beforeEach(done => {
  221. vm = createTest(DatePicker, {
  222. type: 'datetime'
  223. }, true);
  224. const input = vm.$el.querySelector('input');
  225. input.blur();
  226. input.focus();
  227. setTimeout(done, DELAY);
  228. });
  229. afterEach(() => destroyVM(vm));
  230. it('create', () => {
  231. expect(vm.picker.$el.querySelector('.el-time-panel')).to.ok;
  232. });
  233. it('click now button', done => {
  234. const date = new Date(1999, 10, 10, 10, 10);
  235. vm.picker.$el.querySelector('.el-picker-panel__link-btn').click();
  236. setTimeout(_ => {
  237. expect(vm.picker.date > date).to.true;
  238. done();
  239. }, DELAY);
  240. });
  241. it('click timepicker', done => {
  242. const input = vm.picker.$el.querySelectorAll('.el-date-picker__editor-wrap input')[1];
  243. triggerEvent(input, 'focus');
  244. setTimeout(_ => {
  245. expect(vm.picker.$el.querySelector('.el-time-panel')).to.have.deep.property('style.display').to.equal('');
  246. done();
  247. }, DELAY);
  248. });
  249. it('input timepicker', done => {
  250. const input = vm.picker.$el.querySelectorAll('.el-date-picker__editor-wrap input')[1];
  251. input.value = '20:30:33';
  252. triggerEvent(input, 'change', true);
  253. setTimeout(_ => {
  254. expect(vm.picker.date.getHours()).to.equal(20);
  255. expect(vm.picker.date.getMinutes()).to.equal(30);
  256. expect(vm.picker.date.getSeconds()).to.equal(33);
  257. done();
  258. }, DELAY);
  259. });
  260. it('input date', done => {
  261. const input = vm.picker.$el.querySelector('.el-date-picker__editor-wrap input');
  262. input.value = '2017-2-2';
  263. triggerEvent(input, 'change', true);
  264. setTimeout(_ => {
  265. expect(vm.picker.date.getFullYear()).to.equal(2017);
  266. expect(vm.picker.date.getMonth()).to.equal(1);
  267. expect(vm.picker.date.getDate()).to.equal(2);
  268. done();
  269. }, DELAY);
  270. });
  271. it('select time', done => {
  272. const input = vm.picker.$el.querySelectorAll('.el-date-picker__editor-wrap input')[1];
  273. input.blur();
  274. input.focus();
  275. input.blur();
  276. setTimeout(_ => {
  277. const button = vm.picker.$el.querySelector('.el-time-panel .confirm');
  278. button.click();
  279. setTimeout(_ => {
  280. expect(input.value).to.exist;
  281. done();
  282. }, DELAY);
  283. }, DELAY);
  284. });
  285. });
  286. describe('type:week', () => {
  287. let vm;
  288. beforeEach(done => {
  289. vm = createTest(DatePicker, {
  290. type: 'week'
  291. }, true);
  292. const input = vm.$el.querySelector('input');
  293. input.blur();
  294. input.focus();
  295. setTimeout(done, DELAY);
  296. });
  297. afterEach(() => destroyVM(vm));
  298. it('create', () => {
  299. expect(vm.picker.$el.querySelector('.is-week-mode')).to.be.ok;
  300. });
  301. it('click cell', done => {
  302. vm.picker.$el.querySelector('.el-date-table__row .available').click();
  303. setTimeout(_ => {
  304. expect(vm.picker.week).to.exist;
  305. done();
  306. }, DELAY);
  307. });
  308. it('click year label', () => {
  309. vm.picker.$el.querySelector('.el-date-picker__header-label').click();
  310. expect(vm.picker.currentView).to.equal('year');
  311. });
  312. it('click month label', () => {
  313. vm.picker.$el.querySelectorAll('.el-date-picker__header-label')[1].click();
  314. expect(vm.picker.currentView).to.equal('month');
  315. });
  316. it('select month', done => {
  317. vm.picker.$el.querySelectorAll('.el-date-picker__header-label')[1].click();
  318. setTimeout(_ => {
  319. vm.picker.$el.querySelector('.el-month-table .cell').click();
  320. setTimeout(_ => {
  321. expect(vm.picker.$el.querySelector('.el-date-table.is-week-mode').style.display).to.equal('');
  322. done();
  323. }, DELAY);
  324. }, DELAY);
  325. });
  326. });
  327. it('type:daterange', done => {
  328. vm = createTest(DatePicker, {
  329. type: 'daterange'
  330. }, true);
  331. const input = vm.$el.querySelector('input');
  332. input.blur();
  333. input.focus();
  334. setTimeout(_ => {
  335. const panels = vm.picker.$el.querySelectorAll('.el-date-range-picker__content');
  336. expect(Array.prototype.slice.call(panels)).to.length(2);
  337. panels[0].querySelector('td.available').click();
  338. setTimeout(_ => {
  339. panels[1].querySelector('td.available').click();
  340. const { minDate, maxDate } = vm.picker;
  341. expect(minDate).to.exist;
  342. expect(maxDate).to.exist;
  343. expect(maxDate > minDate).to.true;
  344. done();
  345. }, DELAY);
  346. }, DELAY);
  347. });
  348. describe('type:datetimerange', () => {
  349. let vm;
  350. beforeEach(done => {
  351. vm = createTest(DatePicker, {
  352. type: 'datetimerange',
  353. value: [new Date(2000, 10, 10, 10, 10), new Date(2000, 10, 11, 10, 10)]
  354. }, true);
  355. const input = vm.$el.querySelector('input');
  356. input.blur();
  357. input.focus();
  358. setTimeout(done, DELAY);
  359. });
  360. afterEach(() => destroyVM(vm));
  361. it('create', () => {
  362. expect(Array.prototype.slice.call(vm.picker.$el.querySelectorAll('.el-time-panel'))).to.length(2);
  363. });
  364. it('click timepicker', done => {
  365. const input = vm.picker.$el.querySelectorAll('.el-date-range-picker__editors-wrap input')[1];
  366. input.blur();
  367. input.focus();
  368. input.blur();
  369. setTimeout(_ => {
  370. expect(vm.picker.$el.querySelector('.el-date-range-picker__time-picker-wrap .el-time-panel')).to.have.deep.property('style.display').to.equal('');
  371. done();
  372. }, DELAY);
  373. });
  374. it('click timepicker in right', done => {
  375. const input = vm.picker.$el.querySelectorAll('.el-date-range-picker__editors-wrap input')[3];
  376. input.blur();
  377. input.focus();
  378. input.blur();
  379. setTimeout(_ => {
  380. expect(vm.picker.$el.querySelectorAll('.el-date-range-picker__time-picker-wrap .el-time-panel')[1]).to.have.deep.property('style.display').to.equal('');
  381. done();
  382. }, DELAY);
  383. });
  384. it('input timepicker', done => {
  385. const input = vm.picker.$el.querySelectorAll('.el-date-range-picker__editors-wrap input')[1];
  386. input.value = '10:22:14';
  387. triggerEvent(input, 'change', true);
  388. setTimeout(_ => {
  389. expect(vm.picker.minDate.getHours()).to.equal(10);
  390. expect(vm.picker.minDate.getMinutes()).to.equal(22);
  391. expect(vm.picker.minDate.getSeconds()).to.equal(14);
  392. done();
  393. }, DELAY);
  394. });
  395. it('input timepicker in right', done => {
  396. const input = vm.picker.$el.querySelectorAll('.el-date-range-picker__editors-wrap input')[3];
  397. input.value = '10:22:14';
  398. triggerEvent(input, 'change', true);
  399. setTimeout(_ => {
  400. expect(vm.picker.maxDate.getHours()).to.equal(10);
  401. expect(vm.picker.maxDate.getMinutes()).to.equal(22);
  402. expect(vm.picker.maxDate.getSeconds()).to.equal(14);
  403. done();
  404. }, DELAY);
  405. });
  406. it('select daterange', done => {
  407. const pickers = vm.picker.$el.querySelectorAll('.el-date-range-picker__content');
  408. const leftCell = pickers[0].querySelector('td.available');
  409. const rightCell = pickers[1].querySelector('td.available');
  410. triggerEvent(leftCell, 'mousemove', true);
  411. triggerEvent(leftCell, 'click', true);
  412. setTimeout(_ => {
  413. triggerEvent(rightCell, 'mousemove', true);
  414. triggerEvent(rightCell, 'click', true);
  415. setTimeout(_ => {
  416. const { minDate, maxDate } = vm.picker;
  417. const minMonth = minDate.getMonth();
  418. const maxMonth = maxDate.getMonth();
  419. expect([1, -11]).to.include(maxMonth - minMonth); // one month
  420. done();
  421. }, DELAY);
  422. }, DELAY);
  423. });
  424. it('prev/next month button', done => {
  425. const leftBtn = vm.picker.$el.querySelector('.is-left .el-icon-arrow-left');
  426. const rightBtn = vm.picker.$el.querySelector('.is-right .el-icon-arrow-right');
  427. const left = vm.picker.$el.querySelector('.is-left .el-date-range-picker__header');
  428. const right = vm.picker.$el.querySelector('.is-right .el-date-range-picker__header');
  429. const leftText = left.textContent.match(/\d+/g);
  430. const rightText = right.textContent.match(/\d+/g);
  431. let count = 20;
  432. while (--count) {
  433. leftBtn.click();
  434. }
  435. count = 18;
  436. while (--count) {
  437. rightBtn.click();
  438. }
  439. setTimeout(_ => {
  440. const newLeft = left.textContent.match(/\d+/g);
  441. const newRight = right.textContent.match(/\d+/g);
  442. expect(leftText[1] - newLeft[1]).to.equal(2);
  443. expect(leftText[0] - newLeft[0]).to.equal(0);
  444. expect([-10, 2]).to.include(rightText[1] - newRight[1]);
  445. expect([0, 1]).to.include(rightText[0] - newRight[0]);
  446. done();
  447. }, DELAY);
  448. });
  449. it('prev/next year button', done => {
  450. const leftBtn = vm.picker.$el.querySelector('.is-left .el-icon-d-arrow-left');
  451. const rightBtn = vm.picker.$el.querySelector('.is-right .el-icon-d-arrow-right');
  452. const left = vm.picker.$el.querySelector('.is-left .el-date-range-picker__header');
  453. const right = vm.picker.$el.querySelector('.is-right .el-date-range-picker__header');
  454. const leftText = left.textContent.match(/\d+/g);
  455. const rightText = right.textContent.match(/\d+/g);
  456. let count = 20;
  457. while (--count) {
  458. leftBtn.click();
  459. }
  460. count = 18;
  461. while (--count) {
  462. rightBtn.click();
  463. }
  464. setTimeout(_ => {
  465. const newLeft = left.textContent.match(/\d+/g);
  466. const newRight = right.textContent.match(/\d+/g);
  467. expect(leftText[1] - newLeft[1]).to.equal(0);
  468. expect(leftText[0] - newLeft[0]).to.equal(2);
  469. expect(rightText[1] - newRight[1]).to.equal(0);
  470. expect(rightText[0] - newRight[0]).to.equal(2);
  471. done();
  472. }, DELAY);
  473. });
  474. it('input date', done => {
  475. const input = vm.picker.$el.querySelector('.el-date-range-picker__editors-wrap input');
  476. const pickers = vm.picker.$el.querySelectorAll('.el-date-range-picker__content');
  477. const leftCell = pickers[0].querySelector('td.available');
  478. const rightCell = pickers[1].querySelector('td.available');
  479. triggerEvent(leftCell, 'mousemove', true);
  480. triggerEvent(leftCell, 'click', true);
  481. setTimeout(_ => {
  482. triggerEvent(rightCell, 'mousemove', true);
  483. triggerEvent(rightCell, 'click', true);
  484. setTimeout(_ => {
  485. triggerEvent(input, 'input');
  486. input.value = '1989-6-4';
  487. triggerEvent(input, 'change', true);
  488. setTimeout(_ => {
  489. const minDate = vm.picker.minDate;
  490. expect(minDate.getFullYear()).to.equal(1989);
  491. expect(minDate.getMonth()).to.equal(5);
  492. expect(minDate.getDate()).to.equal(4);
  493. done();
  494. }, DELAY);
  495. }, DELAY);
  496. }, DELAY);
  497. });
  498. it('input date when minDate > maxDate', done => {
  499. const input = vm.picker.$el.querySelector('.el-date-range-picker__editors-wrap input');
  500. const input2 = vm.picker.$el.querySelectorAll('.el-date-range-picker__editors-wrap input')[2];
  501. const pickers = vm.picker.$el.querySelectorAll('.el-date-range-picker__content');
  502. const leftCell = pickers[0].querySelector('td.available');
  503. const rightCell = pickers[1].querySelector('td.available');
  504. triggerEvent(leftCell, 'mousemove', true);
  505. triggerEvent(leftCell, 'click', true);
  506. setTimeout(_ => {
  507. triggerEvent(rightCell, 'mousemove', true);
  508. triggerEvent(rightCell, 'click', true);
  509. setTimeout(_ => {
  510. triggerEvent(input2, 'input');
  511. input2.value = '1988-6-4';
  512. triggerEvent(input2, 'change');
  513. setTimeout(_ => {
  514. triggerEvent(input, 'input');
  515. input.value = '1989-6-4';
  516. triggerEvent(input, 'change', true);
  517. setTimeout(_ => {
  518. expect(vm.picker.maxDate > vm.picker.minDate).to.true;
  519. done();
  520. }, DELAY);
  521. }, DELAY);
  522. }, DELAY);
  523. }, DELAY);
  524. });
  525. it('select time', done => {
  526. const input = vm.picker.$el.querySelectorAll('.el-date-range-picker__editors-wrap input')[1];
  527. input.blur();
  528. input.focus();
  529. input.blur();
  530. setTimeout(_ => {
  531. const button = vm.picker.$el.querySelector('.el-date-range-picker__time-picker-wrap .el-time-panel .confirm');
  532. button.click();
  533. setTimeout(_ => {
  534. expect(input.value).to.exist;
  535. done();
  536. }, DELAY);
  537. }, DELAY);
  538. });
  539. });
  540. it('picker-options:shortcuts', done => {
  541. let test;
  542. vm = createTest(DatePicker, {
  543. pickerOptions: {
  544. shortcuts: [
  545. {
  546. text: '今天',
  547. onClick(picker) {
  548. test = true;
  549. picker.$emit('pick', new Date());
  550. }
  551. }
  552. ]
  553. }
  554. }, true);
  555. const input = vm.$el.querySelector('input');
  556. input.blur();
  557. input.focus();
  558. setTimeout(_ => {
  559. const shortcut = vm.picker.$el.querySelector('.el-picker-panel__shortcut');
  560. expect(shortcut.textContent).to.be.equal('今天');
  561. expect(vm.picker.$el.querySelector('.el-picker-panel__sidebar')).to.be.ok;
  562. shortcut.click();
  563. setTimeout(_ => {
  564. expect(test).to.true;
  565. done();
  566. }, DELAY);
  567. }, DELAY);
  568. });
  569. describe('picker-options:disabledDate', () => {
  570. let vm;
  571. beforeEach(done => {
  572. vm = createTest(DatePicker, {
  573. value: new Date(),
  574. pickerOptions: {
  575. disabledDate(time) {
  576. return time.getTime() < Date.now() - 8.64e7;
  577. }
  578. }
  579. }, true);
  580. const input = vm.$el.querySelector('input');
  581. input.blur();
  582. input.focus();
  583. setTimeout(done, DELAY);
  584. });
  585. afterEach(() => destroyVM(vm));
  586. it('create', () => {
  587. expect(vm.picker.$el.querySelector('.disabled')).to.be.ok;
  588. });
  589. it('set disabled value', done => {
  590. const date = new Date(1999, 10, 10, 10, 10, 10);
  591. vm.picker.value = date;
  592. setTimeout(_ => {
  593. expect(vm.picker.date > date).to.true;
  594. done();
  595. }, DELAY);
  596. });
  597. it('set value', done => {
  598. const date = new Date(3000, 10, 10, 10, 10, 10);
  599. vm.picker.value = date;
  600. setTimeout(_ => {
  601. expect(vm.picker.date.getTime() === date.getTime()).to.true;
  602. done();
  603. }, DELAY);
  604. });
  605. });
  606. });