slider.spec.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. import { createTest, createVue } from '../util';
  2. import Slider from 'packages/slider';
  3. import Vue from 'vue';
  4. describe('Slider', () => {
  5. it('create', () => {
  6. const vm = createTest(Slider);
  7. const popup = vm.$el.querySelector('.el-slider__pop');
  8. expect(popup.textContent).to.equal('0');
  9. });
  10. it('should not exceed min and max', done => {
  11. const vm = createVue({
  12. template: `
  13. <div>
  14. <el-slider v-model="value" :min="50">
  15. </el-slider>
  16. </div>
  17. `,
  18. data() {
  19. return {
  20. value: 50
  21. };
  22. }
  23. }, true);
  24. setTimeout(() => {
  25. vm.value = 40;
  26. Vue.nextTick(() => {
  27. expect(vm.value).to.equal(50);
  28. vm.value = 120;
  29. Vue.nextTick(() => {
  30. expect(vm.value).to.equal(100);
  31. done();
  32. });
  33. });
  34. }, 100);
  35. });
  36. it('show tooltip', () => {
  37. const vm = createTest(Slider);
  38. const popup = vm.$el.querySelector('.el-slider__pop');
  39. vm.onDragStart({ clientX: 0 });
  40. expect(getComputedStyle(popup).display).to.not.equal('none');
  41. vm.onDragEnd();
  42. expect(popup.style.display).to.equal('none');
  43. });
  44. it('drag', done => {
  45. const vm = createVue({
  46. template: `
  47. <div>
  48. <el-slider v-model="value"></el-slider>
  49. </div>
  50. `,
  51. data() {
  52. return {
  53. value: 0
  54. };
  55. }
  56. }, true);
  57. const slider = vm.$children[0];
  58. setTimeout(() => {
  59. slider.onButtonDown({ clientX: 0 });
  60. slider.onDragging({ clientX: 100 });
  61. slider.onDragEnd();
  62. expect(vm.value > 0).to.true;
  63. done();
  64. }, 150);
  65. });
  66. it('click', done => {
  67. const vm = createVue({
  68. template: `
  69. <div>
  70. <el-slider v-model="value"></el-slider>
  71. </div>
  72. `,
  73. data() {
  74. return {
  75. value: 0
  76. };
  77. }
  78. }, true);
  79. const slider = vm.$children[0];
  80. setTimeout(() => {
  81. slider.onSliderClick({ clientX: 100 });
  82. setTimeout(() => {
  83. expect(vm.value > 0).to.true;
  84. done();
  85. }, 150);
  86. }, 150);
  87. });
  88. it('show input', done => {
  89. const vm = createVue({
  90. template: `
  91. <div>
  92. <el-slider v-model="value" show-input></el-slider>
  93. </div>
  94. `,
  95. data() {
  96. return {
  97. value: 0
  98. };
  99. }
  100. }, true);
  101. setTimeout(() => {
  102. const inputNumber = vm.$el.querySelector('.el-input-number').__vue__;
  103. inputNumber.currentValue = 40;
  104. setTimeout(() => {
  105. expect(vm.value).to.equal(40);
  106. done();
  107. }, 150);
  108. }, 150);
  109. });
  110. it('show stops', done => {
  111. const vm = createTest(Slider, {
  112. showStops: true,
  113. step: 10
  114. }, true);
  115. const stops = vm.$el.querySelectorAll('.el-slider__stop');
  116. expect(stops.length).to.equal(9);
  117. done();
  118. });
  119. });