time-select.spec.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. import { createTest, createVue, destroyVM } from '../util';
  2. import TimeSelect from 'packages/time-select';
  3. import Vue from 'vue';
  4. describe('TimeSelect', () => {
  5. it('should render correct contents', done => {
  6. const vm = createTest(TimeSelect, {
  7. pickerOptions: {
  8. start: '08:30',
  9. step: '00:15',
  10. end: '18:30'
  11. },
  12. placeholder: 'test'
  13. }, true);
  14. const input = vm.$el.querySelector('input');
  15. input.focus();
  16. input.blur();
  17. Vue.nextTick(_ => {
  18. expect(vm.picker.start).to.equal('08:30');
  19. expect(vm.picker.end).to.equal('18:30');
  20. expect(vm.picker.step).to.equal('00:15');
  21. expect(vm.$el.querySelector('input').getAttribute('placeholder')).to.equal('test');
  22. destroyVM(vm);
  23. done();
  24. });
  25. });
  26. it('select time', done => {
  27. const vm = createVue({
  28. template: `
  29. <div>
  30. <el-time-select ref="compo" v-model="value">
  31. </el-time-select>
  32. </div>
  33. `,
  34. data() {
  35. return {
  36. value: ''
  37. };
  38. }
  39. }, true);
  40. const input = vm.$el.querySelector('input');
  41. input.focus();
  42. input.blur();
  43. Vue.nextTick(_ => {
  44. const items = vm.$refs.compo.picker.$el.querySelectorAll('.time-select-item');
  45. const target = items[4];
  46. const time = target.textContent;
  47. target.click();
  48. Vue.nextTick(_ => {
  49. expect(vm.value).to.equal(time);
  50. destroyVM(vm);
  51. done();
  52. });
  53. });
  54. });
  55. it('set default value', done => {
  56. const vm = createTest(TimeSelect, {
  57. value: '14:30'
  58. }, true);
  59. const input = vm.$el.querySelector('input');
  60. input.focus();
  61. input.blur();
  62. setTimeout(_ => {
  63. expect(input.value).to.equal('14:30');
  64. expect(vm.picker.$el.querySelector('.selected')).to.be.ok;
  65. expect(vm.picker.$el.querySelector('.selected').textContent).to.equal('14:30');
  66. destroyVM(vm);
  67. done();
  68. }, 50);
  69. });
  70. it('set minTime', done => {
  71. const vm = createVue(`
  72. <el-time-select
  73. ref="picker"
  74. :picker-options="{
  75. minTime: '14:30'
  76. }">
  77. </el-time-select>
  78. `, true);
  79. const input = vm.$el.querySelector('input');
  80. const picker = vm.$refs.picker;
  81. input.focus();
  82. input.blur();
  83. setTimeout(_ => {
  84. const elms = picker.picker.$el.querySelectorAll('.disabled');
  85. const elm = elms[elms.length - 1];
  86. expect(elm.textContent).to.equal('14:30');
  87. destroyVM(vm);
  88. done();
  89. }, 50);
  90. });
  91. it('minTime < value', done => {
  92. const vm = createVue({
  93. template: `
  94. <el-time-select
  95. ref="picker"
  96. v-model="value"
  97. :picker-options="{
  98. minTime: '14:30'
  99. }">
  100. </el-time-select>
  101. `,
  102. data() {
  103. return { value: '09:30' };
  104. }
  105. }, true);
  106. const input = vm.$el.querySelector('input');
  107. const picker = vm.$refs.picker;
  108. input.focus();
  109. input.blur();
  110. setTimeout(_ => {
  111. vm.value = '10:30';
  112. setTimeout(_ => {
  113. expect(picker.picker.value).to.equal('09:30');
  114. destroyVM(vm);
  115. done();
  116. }, 50);
  117. }, 50);
  118. });
  119. });