time-picker.spec.js 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. import { createTest, destroyVM } from '../util';
  2. import TimePicker from 'packages/time-picker';
  3. import Vue from 'vue';
  4. describe('TimePicker', () => {
  5. it('create', () => {
  6. const vm = createTest(TimePicker, {
  7. placeholder: 'test',
  8. readonly: true
  9. });
  10. expect(vm.$el.querySelector('input').getAttribute('placeholder')).to.equal('test');
  11. expect(vm.$el.querySelector('input').getAttribute('readonly')).to.ok;
  12. destroyVM(vm);
  13. });
  14. it('format', () => {
  15. const vm = createTest(TimePicker, {
  16. format: 'HH-mm-ss',
  17. value: new Date(2016, 9, 10, 18, 40)
  18. });
  19. expect(vm.$el.querySelector('input').value).to.equal('18-40-00');
  20. destroyVM(vm);
  21. });
  22. it('default value', done => {
  23. const vm = createTest(TimePicker, {
  24. value: new Date(2016, 9, 10, 18, 40)
  25. }, true);
  26. const input = vm.$el.querySelector('input');
  27. input.blur();
  28. input.focus();
  29. input.blur();
  30. Vue.nextTick(_ => {
  31. const times = vm.picker.$el.querySelectorAll('.active');
  32. expect(times[0].textContent).to.equal('18');
  33. expect(times[1].textContent).to.equal('40');
  34. expect(times[2].textContent).to.equal('0');
  35. destroyVM(vm);
  36. done();
  37. });
  38. });
  39. it('select time', done => {
  40. const vm = createTest(TimePicker, true);
  41. const input = vm.$el.querySelector('input');
  42. input.blur();
  43. input.focus();
  44. Vue.nextTick(_ => {
  45. const list = vm.picker.$el.querySelectorAll('.el-time-spinner__list');
  46. const hoursElm = list[0];
  47. const minutesElm = list[1];
  48. const secondsElm = list[2];
  49. const hourElm = hoursElm.querySelectorAll('.el-time-spinner__item')[4];
  50. const minuteElm = minutesElm.querySelectorAll('.el-time-spinner__item')[36];
  51. const secondElm = secondsElm.querySelectorAll('.el-time-spinner__item')[20];
  52. hourElm.click();
  53. minuteElm.click();
  54. secondElm.click();
  55. Vue.nextTick(_ => {
  56. const date = vm.picker.currentDate;
  57. expect(hourElm.classList.contains('active')).to.true;
  58. expect(minuteElm.classList.contains('active')).to.true;
  59. expect(secondElm.classList.contains('active')).to.true;
  60. expect(date.getHours()).to.equal(4);
  61. expect(date.getMinutes()).to.equal(36);
  62. expect(date.getSeconds()).to.equal(20);
  63. destroyVM(vm);
  64. done();
  65. });
  66. });
  67. });
  68. it('click cancel button', done => {
  69. const vm = createTest(TimePicker, true);
  70. const input = vm.$el.querySelector('input');
  71. input.blur();
  72. input.focus();
  73. Vue.nextTick(_ => {
  74. vm.picker.$el.querySelector('.el-time-panel__btn.cancel').click();
  75. Vue.nextTick(_ => {
  76. expect(vm.picker.currentDate).to.empty;
  77. done();
  78. });
  79. });
  80. });
  81. it('click confirm button', done => {
  82. const vm = createTest(TimePicker, true);
  83. const input = vm.$el.querySelector('input');
  84. input.blur();
  85. input.focus();
  86. Vue.nextTick(_ => {
  87. vm.picker.$el.querySelector('.el-time-panel__btn.confirm').click();
  88. Vue.nextTick(_ => {
  89. expect(vm.picker.currentDate).to.exist;
  90. done();
  91. });
  92. });
  93. });
  94. it('set format', done => {
  95. const vm = createTest(TimePicker, {
  96. pickerOptions: {
  97. format: 'HH:mm'
  98. }
  99. }, true);
  100. const input = vm.$el.querySelector('input');
  101. input.blur();
  102. input.focus();
  103. setTimeout(_ => {
  104. expect(vm.picker.$el.querySelectorAll('.el-time-spinner__wrapper')[2].style.display).to.equal('none');
  105. destroyVM(vm);
  106. done();
  107. }, 20);
  108. });
  109. it('set format to empty', done => {
  110. const vm = createTest(TimePicker, {
  111. pickerOptions: {
  112. format: ''
  113. }
  114. }, true);
  115. const input = vm.$el.querySelector('input');
  116. input.blur();
  117. input.focus();
  118. setTimeout(_ => {
  119. expect(vm.picker.$el.querySelectorAll('.el-time-spinner__wrapper')[2].style.display).to.equal('none');
  120. destroyVM(vm);
  121. done();
  122. }, 20);
  123. });
  124. it('selectableRange', done => {
  125. const vm = createTest(TimePicker, {
  126. pickerOptions: {
  127. selectableRange: '18:30:00 - 20:30:00'
  128. }
  129. }, true);
  130. const input = vm.$el.querySelector('input');
  131. input.blur();
  132. input.focus();
  133. setTimeout(_ => {
  134. const list = vm.picker.$el.querySelectorAll('.el-time-spinner__list');
  135. const hoursElm = list[0];
  136. const disabledHours = [].slice
  137. .call(hoursElm.querySelectorAll('.disabled'))
  138. .map(node => Number(node.textContent));
  139. hoursElm.querySelectorAll('.disabled')[0].click();
  140. expect(disabledHours).to.not.include.members([18, 19, 20]);
  141. destroyVM(vm);
  142. done();
  143. }, 20);
  144. });
  145. });
  146. describe('TimePicker(range)', () => {
  147. let vm;
  148. beforeEach(done => {
  149. vm = createTest(TimePicker, {
  150. isRange: true,
  151. value: [new Date(2016, 9, 10, 18, 40), new Date(2016, 9, 10, 19, 40)]
  152. }, true);
  153. const input = vm.$el.querySelector('input');
  154. input.blur();
  155. input.focus();
  156. input.blur();
  157. setTimeout(done, 20);
  158. });
  159. afterEach(() => destroyVM(vm));
  160. it('create', () => {
  161. expect(vm.picker.$el.querySelectorAll('.el-time-range-picker__cell')).to.length(2);
  162. });
  163. it('default value', () => {
  164. expect(vm.picker.minTime.getTime()).to.equal(new Date(2016, 9, 10, 18, 40).getTime());
  165. expect(vm.picker.maxTime.getTime()).to.equal(new Date(2016, 9, 10, 19, 40).getTime());
  166. });
  167. it('minTime < maxTime', done => {
  168. const vm2 = createTest(TimePicker, {
  169. isRange: true,
  170. value: [new Date(2016, 9, 10, 21, 40), new Date(2016, 9, 10, 20, 40)]
  171. }, true);
  172. const input = vm2.$el.querySelector('input');
  173. input.blur();
  174. input.focus();
  175. input.blur();
  176. setTimeout(() => {
  177. expect(vm2.picker.maxTime > vm2.picker.minTime).to.true;
  178. destroyVM(vm2);
  179. done();
  180. }, 20);
  181. });
  182. it('click cancel button', done => {
  183. vm.picker.$el.querySelector('.el-time-panel__btn.cancel').click();
  184. Vue.nextTick(_ => {
  185. expect(vm.picker.currentDate).to.empty;
  186. done();
  187. });
  188. });
  189. });