date-picker.spec.js 21 KB

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