progress.spec.js 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. import { createVue, destroyVM, waitImmediate } from '../util';
  2. describe('Progress', () => {
  3. let vm;
  4. afterEach(() => {
  5. destroyVM(vm);
  6. });
  7. it('create', () => {
  8. vm = createVue({
  9. template: `
  10. <div>
  11. <el-progress ref="percent0" :percentage="0"></el-progress>
  12. <el-progress ref="percent50" :percentage="50"></el-progress>
  13. <el-progress ref="percent100" :percentage="100"></el-progress>
  14. </div>
  15. `
  16. }, true);
  17. expect(vm.$refs.percent0.$el.querySelector('.el-progress__text').innerText).to.be.equal('0%');
  18. expect(vm.$refs.percent0.$el.querySelector('.el-progress-bar__inner').style.width).to.be.equal('0%');
  19. expect(vm.$refs.percent50.$el.querySelector('.el-progress__text').innerText).to.be.equal('50%');
  20. expect(vm.$refs.percent50.$el.querySelector('.el-progress-bar__inner').style.width).to.be.equal('50%');
  21. expect(vm.$refs.percent100.$el.querySelector('.el-progress__text').innerText).to.be.equal('100%');
  22. expect(vm.$refs.percent100.$el.querySelector('.el-progress-bar__inner').style.width).to.be.equal('100%');
  23. });
  24. it('status', () => {
  25. vm = createVue({
  26. template: `
  27. <div>
  28. <el-progress ref="lineSuccess" :percentage="100" status="success"></el-progress>
  29. <el-progress ref="lineException" :percentage="0" status="exception"></el-progress>
  30. <el-progress type="circle" ref="circleSuccess" :percentage="100" status="success"></el-progress>
  31. <el-progress type="circle" ref="circleException" :percentage="0" status="exception"></el-progress>
  32. </div>
  33. `
  34. }, true);
  35. expect(vm.$refs.lineSuccess.$el.classList.contains('is-success')).to.be.true;
  36. expect(vm.$refs.lineSuccess.$el.querySelector('.el-progress__text .el-icon-circle-check')).to.be.exist;
  37. expect(vm.$refs.lineException.$el.classList.contains('is-exception')).to.be.true;
  38. expect(vm.$refs.lineException.$el.querySelector('.el-progress__text .el-icon-circle-close')).to.be.exist;
  39. expect(vm.$refs.circleSuccess.$el.classList.contains('is-success')).to.be.true;
  40. expect(vm.$refs.circleSuccess.$el.querySelector('.el-progress__text .el-icon-check')).to.be.exist;
  41. expect(vm.$refs.circleException.$el.classList.contains('is-exception')).to.be.true;
  42. expect(vm.$refs.circleException.$el.querySelector('.el-progress__text .el-icon-close')).to.be.exist;
  43. });
  44. it('text inside', () => {
  45. vm = createVue({
  46. template: `
  47. <el-progress :percentage="50" text-inside></el-progress>
  48. `
  49. }, true);
  50. expect(vm.$el.classList.contains('el-progress--text-inside')).to.be.true;
  51. });
  52. it('stroke width', () => {
  53. vm = createVue({
  54. template: `
  55. <el-progress :percentage="50" :stroke-width="8"></el-progress>
  56. `
  57. }, true);
  58. expect(vm.$el.querySelector('.el-progress-bar__outer').style.height).to.be.equal('8px');
  59. });
  60. it('show text', () => {
  61. vm = createVue({
  62. template: `
  63. <el-progress :percentage="50" :show-text="false"></el-progress>
  64. `
  65. }, true);
  66. expect(vm.$el.querySelector('.el-progress__text')).to.not.exist;
  67. });
  68. it('circle', () => {
  69. vm = createVue({
  70. template: `
  71. <el-progress type="circle" :percentage="50"></el-progress>
  72. `
  73. }, true);
  74. expect(vm.$el.classList.contains('el-progress--circle')).to.be.true;
  75. });
  76. it('dashboard', () => {
  77. vm = createVue({
  78. template: `
  79. <el-progress type="dashboard" :percentage="50"></el-progress>
  80. `
  81. }, true);
  82. expect(vm.$el.classList.contains('el-progress--dashboard')).to.be.true;
  83. });
  84. it('width', () => {
  85. vm = createVue({
  86. template: `
  87. <el-progress type="circle" :percentage="50" :width="120"></el-progress>
  88. `
  89. }, true);
  90. expect(vm.$el.querySelector('.el-progress-circle').style.height).to.be.equal('120px');
  91. expect(vm.$el.querySelector('.el-progress-circle').style.width).to.be.equal('120px');
  92. });
  93. it('should work with stroke-width', () => {
  94. vm = createVue({
  95. template: `
  96. <el-progress :text-inside="true" :stroke-width="36" :percentage="0"></el-progress>
  97. `
  98. }, true);
  99. expect(vm.$el.querySelector('.el-progress-bar__innerText').offsetTop).to.be.equal(12);
  100. });
  101. it('color', () => {
  102. vm = createVue({
  103. template: `
  104. <el-progress :percentage="50" color="rgb(0, 0, 0)"></el-progress>
  105. `
  106. }, true);
  107. expect(vm.$el.querySelector('.el-progress-bar__inner').style.backgroundColor).to.equal('rgb(0, 0, 0)');
  108. });
  109. it('color is function', async() => {
  110. vm = createVue({
  111. template: `
  112. <el-progress :percentage="percentage" :color="customColor"></el-progress>
  113. `,
  114. data() {
  115. return {
  116. percentage: 50
  117. };
  118. },
  119. methods: {
  120. customColor(percentage) {
  121. if (percentage > 50) {
  122. return '#13ce66';
  123. } else {
  124. return '#20a0ff';
  125. }
  126. },
  127. increase() {
  128. this.percentage = 60;
  129. }
  130. }
  131. }, true);
  132. expect(vm.$el.querySelector('.el-progress-bar__inner').style.backgroundColor).to.equal('rgb(32, 160, 255)');
  133. vm.increase();
  134. await waitImmediate();
  135. expect(vm.$el.querySelector('.el-progress-bar__inner').style.backgroundColor).to.equal('rgb(19, 206, 102)');
  136. });
  137. it('color is array', async() => {
  138. vm = createVue({
  139. template: `
  140. <el-progress :percentage="percentage" :color="colors"></el-progress>
  141. `,
  142. data() {
  143. return {
  144. percentage: 50,
  145. colors: [
  146. {color: '#f56c6c', percentage: 20},
  147. {color: '#e6a23c', percentage: 40},
  148. {color: '#20a0ff', percentage: 60},
  149. {color: '#13ce66', percentage: 80},
  150. {color: '#6f7ad3', percentage: 100}
  151. ]
  152. };
  153. },
  154. methods: {
  155. increase() {
  156. this.percentage = 70;
  157. }
  158. }
  159. }, true);
  160. // #20a0ff
  161. expect(vm.$el.querySelector('.el-progress-bar__inner').style.backgroundColor).to.equal('rgb(32, 160, 255)');
  162. vm.increase();
  163. await waitImmediate();
  164. // #13ce66
  165. expect(vm.$el.querySelector('.el-progress-bar__inner').style.backgroundColor).to.equal('rgb(19, 206, 102)');
  166. });
  167. it('format content', () => {
  168. vm = createVue({
  169. template: `
  170. <el-progress :percentage="50" :format="format"></el-progress>
  171. `,
  172. methods: {
  173. format(percentage) {
  174. return `占比${percentage}%`;
  175. }
  176. }
  177. }, true);
  178. expect(vm.$el.querySelector('.el-progress__text').innerHTML).to.equal('占比50%');
  179. });
  180. });