date-picker.spec.js 21 KB

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