rate.spec.js 3.7 KB

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