rate.spec.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. import { createTest, createVue, destroyVM } from '../util';
  2. import Rate from 'packages/rate';
  3. import Vue from 'vue';
  4. describe('Rate', () => {
  5. let vm;
  6. afterEach(() => {
  7. destroyVM(vm);
  8. });
  9. it('create', () => {
  10. vm = createTest(Rate, { max: 10 }, true);
  11. const stars = vm.$el.querySelectorAll('.el-rate__item');
  12. expect(stars.length).to.equal(10);
  13. });
  14. it('with texts', () => {
  15. vm = createVue({
  16. template: `
  17. <div>
  18. <el-rate
  19. v-model="value"
  20. show-text
  21. :texts="['1', '2', '3', '4', '5']"></el-rate>
  22. </div>
  23. `,
  24. data() {
  25. return {
  26. value: 4
  27. };
  28. }
  29. }, true);
  30. const text = vm.$el.querySelector('.el-rate__text');
  31. expect(text.textContent).to.equal('4');
  32. });
  33. it('value change', done => {
  34. vm = createVue({
  35. template: `
  36. <div>
  37. <el-rate v-model="value"></el-rate>
  38. </div>
  39. `,
  40. data() {
  41. return {
  42. value: 0
  43. };
  44. }
  45. }, true);
  46. const rate = vm.$children[0];
  47. expect(rate.value).to.equal(0);
  48. vm.value = 3;
  49. Vue.nextTick(() => {
  50. expect(rate.value).to.equal(3);
  51. done();
  52. });
  53. });
  54. it('click', () => {
  55. vm = createVue({
  56. template: `
  57. <div>
  58. <el-rate v-model="value"></el-rate>
  59. </div>
  60. `,
  61. data() {
  62. return {
  63. value: 0
  64. };
  65. }
  66. }, true);
  67. const thirdStar = vm.$el.querySelectorAll('.el-rate__item')[2];
  68. thirdStar.click();
  69. expect(vm.value).to.equal(3);
  70. });
  71. it('colors', () => {
  72. vm = createVue({
  73. template: `
  74. <div>
  75. <el-rate v-model="value" :colors="['#99A9BF', '#F7BA2A', '#FF9900']"></el-rate>
  76. </div>
  77. `,
  78. data() {
  79. return {
  80. value: 4
  81. };
  82. }
  83. }, true);
  84. const thirdIcon = vm.$el.querySelectorAll('.el-rate__item')[2].querySelector('.el-rate__icon');
  85. expect(thirdIcon.style.color).to.equal('rgb(255, 153, 0)');
  86. });
  87. it('threshold', () => {
  88. vm = createVue({
  89. template: `
  90. <div>
  91. <el-rate v-model="value" :low-threshold="3"></el-rate>
  92. </div>
  93. `,
  94. data() {
  95. return {
  96. value: 3
  97. };
  98. }
  99. }, true);
  100. const thirdIcon = vm.$el.querySelectorAll('.el-rate__item')[2].querySelector('.el-rate__icon');
  101. expect(thirdIcon.style.color).to.equal('rgb(247, 186, 42)');
  102. });
  103. it('disabled', () => {
  104. const vm1 = createVue({
  105. template: `
  106. <div>
  107. <el-rate v-model="value" disabled show-text></el-rate>
  108. </div>
  109. `,
  110. data() {
  111. return {
  112. value: 3.7
  113. };
  114. }
  115. }, true);
  116. const vm2 = createVue({
  117. template: `
  118. <div>
  119. <el-rate v-model="value" disabled show-text></el-rate>
  120. </div>
  121. `,
  122. data() {
  123. return {
  124. value: 3.4
  125. };
  126. }
  127. }, true);
  128. const firstStar = vm1.$el.querySelectorAll('.el-rate__item')[0];
  129. firstStar.click();
  130. vm1.$children[0].resetCurrentValue();
  131. expect(vm1.value).to.equal(3.7);
  132. const fourthStar = vm2.$el.querySelectorAll('.el-rate__item')[3];
  133. const halfStar = fourthStar.querySelector('.el-rate__decimal');
  134. expect(halfStar.style.width).to.equal('0%');
  135. });
  136. it('allow half', () => {
  137. vm = createVue({
  138. template: `
  139. <div>
  140. <el-rate v-model="value" allow-half></el-rate>
  141. </div>
  142. `,
  143. data() {
  144. return {
  145. value: 0
  146. };
  147. }
  148. }, true);
  149. const rate = vm.$children[0];
  150. const secondStar = vm.$el.querySelectorAll('.el-rate__item')[1];
  151. rate.setCurrentValue(1, { target: secondStar, offsetX: 2 });
  152. secondStar.click();
  153. rate.resetCurrentValue();
  154. expect(vm.value).to.equal(0.5);
  155. });
  156. });