slider.spec.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. import { createTest, createVue, triggerEvent, destroyVM } from '../util';
  2. import Slider from 'packages/slider';
  3. describe('Slider', () => {
  4. let vm;
  5. afterEach(() => {
  6. destroyVM(vm);
  7. });
  8. it('create', () => {
  9. vm = createTest(Slider);
  10. expect(vm.value).to.equal(0);
  11. });
  12. it('should not exceed min and max', done => {
  13. vm = createVue({
  14. template: `
  15. <div>
  16. <el-slider v-model="value" :min="50">
  17. </el-slider>
  18. </div>
  19. `,
  20. data() {
  21. return {
  22. value: 50
  23. };
  24. }
  25. }, true);
  26. setTimeout(() => {
  27. vm.value = 40;
  28. vm.$nextTick(() => {
  29. expect(vm.value).to.equal(50);
  30. vm.value = 120;
  31. vm.$nextTick(() => {
  32. expect(vm.value).to.equal(100);
  33. done();
  34. });
  35. });
  36. }, 100);
  37. });
  38. it('show tooltip', () => {
  39. vm = createVue({
  40. template: `
  41. <div>
  42. <el-slider v-model="value">
  43. </el-slider>
  44. </div>
  45. `,
  46. data() {
  47. return {
  48. value: 0
  49. };
  50. }
  51. }, true);
  52. const slider = vm.$children[0];
  53. slider.handleMouseEnter();
  54. expect(slider.$refs.tooltip.showPopper).to.true;
  55. slider.handleMouseLeave();
  56. expect(slider.$refs.tooltip.showPopper).to.false;
  57. });
  58. it('drag', done => {
  59. vm = createVue({
  60. template: `
  61. <div>
  62. <el-slider v-model="value"></el-slider>
  63. </div>
  64. `,
  65. data() {
  66. return {
  67. value: 0
  68. };
  69. }
  70. }, true);
  71. const slider = vm.$children[0];
  72. setTimeout(() => {
  73. slider.onButtonDown({ clientX: 0 });
  74. slider.onDragging({ clientX: 100 });
  75. slider.onDragEnd();
  76. expect(vm.value > 0).to.true;
  77. done();
  78. }, 150);
  79. });
  80. it('click', done => {
  81. vm = createVue({
  82. template: `
  83. <div>
  84. <el-slider v-model="value"></el-slider>
  85. </div>
  86. `,
  87. data() {
  88. return {
  89. value: 0
  90. };
  91. }
  92. }, true);
  93. const slider = vm.$children[0];
  94. setTimeout(() => {
  95. slider.onSliderClick({ clientX: 100 });
  96. setTimeout(() => {
  97. expect(vm.value > 0).to.true;
  98. done();
  99. }, 150);
  100. }, 150);
  101. });
  102. it('disabled', done => {
  103. vm = createVue({
  104. template: `
  105. <div>
  106. <el-slider v-model="value" disabled></el-slider>
  107. </div>
  108. `,
  109. data() {
  110. return {
  111. value: 0
  112. };
  113. }
  114. }, true);
  115. const slider = vm.$children[0];
  116. setTimeout(() => {
  117. slider.onButtonDown({ clientX: 0 });
  118. slider.onDragging({ clientX: 100 });
  119. slider.onDragEnd();
  120. slider.onSliderClick({ clientX: 200 });
  121. expect(vm.value).to.equal(0);
  122. done();
  123. }, 100);
  124. });
  125. it('show input', done => {
  126. vm = createVue({
  127. template: `
  128. <div>
  129. <el-slider v-model="value" show-input></el-slider>
  130. </div>
  131. `,
  132. data() {
  133. return {
  134. value: 0
  135. };
  136. }
  137. }, true);
  138. setTimeout(() => {
  139. triggerEvent(vm.$el.querySelector('.el-input-number'), 'keyup');
  140. const inputNumber = vm.$el.querySelector('.el-input-number').__vue__;
  141. inputNumber.currentValue = 40;
  142. setTimeout(() => {
  143. expect(vm.value).to.equal(40);
  144. done();
  145. }, 150);
  146. }, 150);
  147. });
  148. it('show stops', done => {
  149. vm = createTest(Slider, {
  150. showStops: true,
  151. step: 10
  152. }, true);
  153. const stops = vm.$el.querySelectorAll('.el-slider__stop');
  154. expect(stops.length).to.equal(9);
  155. done();
  156. });
  157. });