time-picker.spec.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. import { createTest } 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. });
  13. it('format', () => {
  14. const vm = createTest(TimePicker, {
  15. format: 'HH-mm-ss',
  16. value: new Date(2016, 9, 10, 18, 40)
  17. });
  18. expect(vm.$el.querySelector('input').value).to.equal('18-40-00');
  19. });
  20. it('default value', done => {
  21. const vm = createTest(TimePicker, {
  22. value: new Date(2016, 9, 10, 18, 40)
  23. }, true);
  24. const input = vm.$el.querySelector('input');
  25. input.blur();
  26. input.focus();
  27. input.blur();
  28. Vue.nextTick(_ => {
  29. const times = vm.picker.$el.querySelectorAll('.active');
  30. expect(times[0].textContent).to.equal('18');
  31. expect(times[1].textContent).to.equal('40');
  32. expect(times[2].textContent).to.equal('0');
  33. done();
  34. });
  35. });
  36. it('select time', done => {
  37. const vm = createTest(TimePicker, true);
  38. const input = vm.$el.querySelector('input');
  39. input.blur();
  40. input.focus();
  41. Vue.nextTick(_ => {
  42. const list = vm.picker.$el.querySelectorAll('.el-time-spinner__list');
  43. const hoursElm = list[0];
  44. const minutesElm = list[1];
  45. const secondsElm = list[2];
  46. const hourElm = hoursElm.querySelectorAll('.el-time-spinner__item')[4];
  47. const minuteElm = minutesElm.querySelectorAll('.el-time-spinner__item')[36];
  48. const secondElm = secondsElm.querySelectorAll('.el-time-spinner__item')[20];
  49. hourElm.click();
  50. minuteElm.click();
  51. secondElm.click();
  52. Vue.nextTick(_ => {
  53. const date = vm.picker.currentDate;
  54. expect(hourElm.classList.contains('active')).to.true;
  55. expect(minuteElm.classList.contains('active')).to.true;
  56. expect(secondElm.classList.contains('active')).to.true;
  57. expect(date.getHours()).to.equal(4);
  58. expect(date.getMinutes()).to.equal(36);
  59. expect(date.getSeconds()).to.equal(20);
  60. done();
  61. });
  62. });
  63. });
  64. it('selectableRange', done => {
  65. const vm = createTest(TimePicker, {
  66. pickerOptions: {
  67. selectableRange: '18:30:00 - 20:30:00'
  68. }
  69. }, true);
  70. const input = vm.$el.querySelector('input');
  71. input.blur();
  72. input.focus();
  73. setTimeout(_ => {
  74. const list = vm.picker.$el.querySelectorAll('.el-time-spinner__list');
  75. const hoursElm = list[0];
  76. const disabledHours = [].slice
  77. .call(hoursElm.querySelectorAll('.disabled'))
  78. .map(node => Number(node.textContent));
  79. hoursElm.querySelectorAll('.disabled')[0].click();
  80. expect(disabledHours).to.not.include.members([18, 19, 20]);
  81. done();
  82. }, 150);
  83. });
  84. });