date-picker.spec.js 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. import { createTest, createVue } from '../util';
  2. import DatePicker from 'packages/date-picker';
  3. describe('DatePicker', () => {
  4. it('create', () => {
  5. const vm = createTest(DatePicker, {
  6. readonly: true,
  7. placeholder: '23333',
  8. format: 'HH-mm-ss'
  9. });
  10. const input = vm.$el.querySelector('input');
  11. expect(input.getAttribute('placeholder')).to.equal('23333');
  12. expect(input.getAttribute('readonly')).to.equal('readonly');
  13. });
  14. it('select date', done => {
  15. const vm = createVue({
  16. template: `
  17. <el-date-picker ref="compo" v-model="value"></el-date-picker>
  18. `,
  19. data() {
  20. return { value: '' };
  21. }
  22. }, true);
  23. const input = vm.$el.querySelector('input');
  24. const date = new Date();
  25. input.blur();
  26. input.focus();
  27. setTimeout(_ => {
  28. const $el = vm.$refs.compo.picker.$el;
  29. const spans = $el.querySelectorAll('.el-date-picker__header-label');
  30. const arrowLeftElm = $el.querySelector('.el-date-picker__prev-btn.el-icon-arrow-left');
  31. const arrowRightElm = $el.querySelector('.el-date-picker__next-btn.el-icon-arrow-right');
  32. expect(spans[0].textContent).to.include(date.getFullYear());
  33. expect(spans[1].textContent).to.include(date.getMonth() + 1);
  34. $el.querySelector('.el-date-picker__prev-btn.el-icon-d-arrow-left').click();
  35. // click 5
  36. let count = 5;
  37. while (--count) {
  38. arrowLeftElm.click();
  39. }
  40. // click 3
  41. count = 3;
  42. while (--count) {
  43. arrowRightElm.click();
  44. }
  45. setTimeout(_ => {
  46. expect(spans[0].textContent).to.include(date.getFullYear() - 1);
  47. expect(spans[1].textContent).to.include(date.getMonth() - 1);
  48. $el.querySelector('td.available').click();
  49. vm.$nextTick(_ => {
  50. expect(vm.value).to.exist;
  51. });
  52. done();
  53. }, 150);
  54. }, 150);
  55. });
  56. it('type:month', done => {
  57. const vm = createTest(DatePicker, {
  58. type: 'month'
  59. }, true);
  60. const input = vm.$el.querySelector('input');
  61. input.blur();
  62. input.focus();
  63. setTimeout(_ => {
  64. expect(vm.picker.$el.querySelector('.el-month-table').style.display).to.be.empty;
  65. expect(vm.picker.$el.querySelector('.el-year-table').style.display).to.be.equal('none');
  66. vm.picker.$el.querySelector('.el-month-table a.cell').click();
  67. setTimeout(_ => {
  68. expect(vm.picker.$el.style.display).to.be.equal('none');
  69. done();
  70. }, 500);
  71. }, 150);
  72. });
  73. it('type:year', done => {
  74. const vm = createTest(DatePicker, {
  75. type: 'year'
  76. }, true);
  77. const input = vm.$el.querySelector('input');
  78. input.blur();
  79. input.focus();
  80. setTimeout(_ => {
  81. expect(vm.picker.$el.querySelector('.el-year-table').style.display).to.empty;
  82. expect(vm.picker.$el.querySelector('.el-month-table').style.display).to.be.equal('none');
  83. vm.picker.$el.querySelector('.el-icon-d-arrow-left').click();
  84. vm.picker.$el.querySelector('.el-icon-d-arrow-right').click();
  85. vm.picker.$el.querySelector('.el-year-table a.cell').click();
  86. setTimeout(_ => {
  87. expect(vm.picker.$el.style.display).to.be.equal('none');
  88. expect(vm.picker.date).to.exist;
  89. done();
  90. }, 500);
  91. }, 150);
  92. });
  93. it('type:datetime', done => {
  94. const vm = createTest(DatePicker, {
  95. type: 'datetime'
  96. }, true);
  97. const input = vm.$el.querySelector('input');
  98. input.blur();
  99. input.focus();
  100. setTimeout(_ => {
  101. expect(vm.picker.$el.querySelector('.el-time-panel')).to.ok;
  102. done();
  103. }, 150);
  104. });
  105. it('type:week', done => {
  106. const vm = createTest(DatePicker, {
  107. type: 'week'
  108. }, true);
  109. const input = vm.$el.querySelector('input');
  110. input.blur();
  111. input.focus();
  112. setTimeout(_ => {
  113. expect(vm.picker.$el.querySelector('.is-week-mode')).to.be.ok;
  114. done();
  115. }, 150);
  116. });
  117. it('type:daterange', done => {
  118. const vm = createTest(DatePicker, {
  119. type: 'daterange'
  120. }, true);
  121. const input = vm.$el.querySelector('input');
  122. input.blur();
  123. input.focus();
  124. setTimeout(_ => {
  125. const panels = vm.picker.$el.querySelectorAll('.el-date-range-picker__content');
  126. expect(Array.prototype.slice.call(panels)).to.length(2);
  127. panels[0].querySelector('td.available').click();
  128. setTimeout(_ => {
  129. panels[1].querySelector('td.available').click();
  130. const { minDate, maxDate } = vm.picker;
  131. expect(minDate).to.exist;
  132. expect(maxDate).to.exist;
  133. expect(maxDate > minDate).to.true;
  134. done();
  135. }, 150);
  136. }, 150);
  137. });
  138. it('type:datetimerange', done => {
  139. const vm = createTest(DatePicker, {
  140. type: 'datetimerange'
  141. }, true);
  142. const input = vm.$el.querySelector('input');
  143. input.blur();
  144. input.focus();
  145. setTimeout(_ => {
  146. expect(Array.prototype.slice.call(vm.picker.$el.querySelectorAll('.el-time-panel'))).to.length(2);
  147. done();
  148. }, 150);
  149. });
  150. it('picker-options:shortcuts', done => {
  151. const vm = createTest(DatePicker, {
  152. pickerOptions: {
  153. shortcuts: [
  154. {
  155. text: '今天',
  156. onClick(picker) {
  157. picker.$emit('pick', new Date());
  158. }
  159. }
  160. ]
  161. }
  162. }, true);
  163. const input = vm.$el.querySelector('input');
  164. input.blur();
  165. input.focus();
  166. setTimeout(_ => {
  167. expect(vm.picker.$el.querySelector('.el-picker-panel__shortcut').textContent).to.be.equal('今天');
  168. expect(vm.picker.$el.querySelector('.el-picker-panel__sidebar')).to.be.ok;
  169. done();
  170. }, 150);
  171. });
  172. it('picker-options:disabledDate', done => {
  173. const vm = createTest(DatePicker, {
  174. pickerOptions: {
  175. disabledDate(time) {
  176. return time.getTime() < Date.now() - 8.64e7;
  177. }
  178. }
  179. }, true);
  180. const input = vm.$el.querySelector('input');
  181. input.blur();
  182. input.focus();
  183. setTimeout(_ => {
  184. expect(vm.picker.$el.querySelector('.disabled')).to.be.ok;
  185. done();
  186. }, 150);
  187. });
  188. });