color-picker.spec.js 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. import { createTest, createVue, destroyVM } from '../util';
  2. import ColorPicker from 'packages/color-picker';
  3. describe('ColorPicker', () => {
  4. let vm;
  5. afterEach(() => {
  6. vm.$destroy(true);
  7. destroyVM(vm);
  8. const dropdown = document.querySelector('.el-color-dropdown');
  9. if (dropdown && dropdown.parentNode) dropdown.parentNode.removeChild(dropdown);
  10. });
  11. it('should work', () => {
  12. vm = createTest(ColorPicker, true);
  13. expect(vm.$el).to.exist;
  14. });
  15. it('should show alpha slider when show-alpha=true', (done) => {
  16. const vm = createVue({
  17. template: `
  18. <el-color-picker v-model="color" show-alpha></el-color-picker>
  19. `,
  20. data() {
  21. return {
  22. color: null
  23. };
  24. }
  25. }, true);
  26. const trigger = vm.$el.querySelector('.el-color-picker__trigger');
  27. trigger.click();
  28. setTimeout(() => {
  29. const alphaSlider = document.querySelector('.el-color-alpha-slider');
  30. expect(alphaSlider).to.exist;
  31. done();
  32. }, ANIMATION_TIME);
  33. });
  34. it('should show color picker when click trigger', (done) => {
  35. vm = createTest(ColorPicker, true);
  36. const trigger = vm.$el.querySelector('.el-color-picker__trigger');
  37. trigger.click();
  38. vm.$nextTick(() => {
  39. const dropdown = document.querySelector('.el-color-dropdown');
  40. expect(dropdown).to.exist;
  41. done();
  42. });
  43. });
  44. const ANIMATION_TIME = 300;
  45. it('should pick a color when confirm button click', (done) => {
  46. const vm = createVue({
  47. template: `
  48. <el-color-picker v-model="color"></el-color-picker>
  49. `,
  50. data() {
  51. return {
  52. color: null
  53. };
  54. }
  55. }, true);
  56. const trigger = vm.$el.querySelector('.el-color-picker__trigger');
  57. trigger.click();
  58. setTimeout(() => {
  59. const dropdown = document.querySelector('.el-color-dropdown__btn');
  60. dropdown.click();
  61. vm.$nextTick(() => {
  62. expect(vm.color).to.equal('#FF0000');
  63. done();
  64. });
  65. }, ANIMATION_TIME);
  66. });
  67. it('should init the right color when open', (done) => {
  68. const vm = createVue({
  69. template: `
  70. <el-color-picker v-model="color"></el-color-picker>
  71. `,
  72. data() {
  73. return {
  74. color: '#0f0'
  75. };
  76. }
  77. }, true);
  78. const trigger = vm.$el.querySelector('.el-color-picker__trigger');
  79. trigger.click();
  80. setTimeout(() => {
  81. const dropdown = document.querySelector('.el-color-dropdown__btn');
  82. dropdown.click();
  83. vm.$nextTick(() => {
  84. const hueBar = document.querySelector('.el-color-hue-slider__thumb');
  85. const top = parseInt(hueBar.style.top, 10);
  86. expect(top > 10).to.be.true;
  87. done();
  88. });
  89. }, ANIMATION_TIME);
  90. });
  91. it('should clear a color when clear button click', (done) => {
  92. const vm = createVue({
  93. template: `
  94. <el-color-picker v-model="color"></el-color-picker>
  95. `,
  96. data() {
  97. return {
  98. color: '#f00'
  99. };
  100. }
  101. }, true);
  102. const trigger = vm.$el.querySelector('.el-color-picker__trigger');
  103. trigger.click();
  104. setTimeout(() => {
  105. const clearBtn = document.querySelector('.el-color-dropdown__link-btn');
  106. clearBtn.click();
  107. setTimeout(() => {
  108. expect(vm.color).to.equal(null);
  109. done();
  110. }, 30);
  111. }, ANIMATION_TIME);
  112. });
  113. it('should change hue when clicking the hue bar', (done) => {
  114. const vm = createVue({
  115. template: `
  116. <el-color-picker v-model="color"></el-color-picker>
  117. `,
  118. data() {
  119. return {
  120. color: '#f00'
  121. };
  122. }
  123. }, true);
  124. const trigger = vm.$el.querySelector('.el-color-picker__trigger');
  125. trigger.click();
  126. setTimeout(() => {
  127. const hueBar = document.querySelector('.el-color-hue-slider');
  128. hueBar.__vue__.handleClick({ target: null, clientX: 0, clientY: 1000 });
  129. vm.$nextTick(() => {
  130. const picker = vm.$children[0];
  131. expect(picker.color._hue > 0).to.true;
  132. done();
  133. });
  134. }, ANIMATION_TIME);
  135. });
  136. it('should change alpha when clicking the alpha bar', (done) => {
  137. const vm = createVue({
  138. template: `
  139. <el-color-picker v-model="color" show-alpha></el-color-picker>
  140. `,
  141. data() {
  142. return {
  143. color: '#f00'
  144. };
  145. }
  146. }, true);
  147. const trigger = vm.$el.querySelector('.el-color-picker__trigger');
  148. trigger.click();
  149. setTimeout(() => {
  150. const alphaBar = document.querySelector('.el-color-alpha-slider');
  151. alphaBar.__vue__.handleClick({ target: null, clientX: 50, clientY: 0 });
  152. vm.$nextTick(() => {
  153. const picker = vm.$children[0];
  154. expect(picker.color._alpha < 1).to.true;
  155. done();
  156. });
  157. }, ANIMATION_TIME);
  158. });
  159. it('should change saturation and value when clicking the sv-panel', (done) => {
  160. const vm = createVue({
  161. template: `
  162. <el-color-picker v-model="color" color-format="hsv"></el-color-picker>
  163. `,
  164. data() {
  165. return {
  166. color: 'hsv(0, 50%, 50%)'
  167. };
  168. }
  169. }, true);
  170. const trigger = vm.$el.querySelector('.el-color-picker__trigger');
  171. trigger.click();
  172. setTimeout(() => {
  173. const svPanel = document.querySelector('.el-color-svpanel');
  174. svPanel.__vue__.handleDrag({ clientX: 0, clientY: 0 });
  175. vm.$nextTick(() => {
  176. const picker = vm.$children[0];
  177. expect(picker.color._saturation !== 50).to.true;
  178. expect(picker.color._value !== 50).to.true;
  179. done();
  180. });
  181. }, ANIMATION_TIME);
  182. });
  183. });