switch.spec.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import { createTest, createVue } from '../util';
  2. import Switch from 'packages/switch';
  3. import Vue from 'vue';
  4. describe('Switch', () => {
  5. it('create', () => {
  6. const vm = createTest(Switch, {
  7. onText: 'on',
  8. offText: 'off',
  9. onColor: '#0f0',
  10. offColor: '#f00',
  11. width: 100
  12. });
  13. const core = vm.$el.querySelector('.el-switch__core');
  14. expect(core.style.backgroundColor).to.equal('rgb(0, 255, 0)');
  15. expect(core.style.width).to.equal('100px');
  16. expect(vm.$el.querySelector('.el-switch__label--left').querySelector('span').textContent).to.equal('on');
  17. });
  18. it('switch with icons', () => {
  19. const vm = createTest(Switch, {
  20. onIconClass: 'el-icon-check',
  21. offIconClass: 'el-icon-close'
  22. });
  23. const icon = vm.$el.querySelector('.el-switch__label--left').querySelector('i');
  24. expect(icon.classList.contains('el-icon-check')).to.true;
  25. });
  26. it('value correctly update', done => {
  27. const vm = createVue({
  28. template: `
  29. <div>
  30. <el-switch v-model="value"></el-switch>
  31. </div>
  32. `,
  33. data() {
  34. return {
  35. value: true
  36. };
  37. }
  38. }, true);
  39. const core = vm.$el.querySelector('.el-switch__core');
  40. const button = vm.$el.querySelector('.el-switch__button');
  41. core.click();
  42. Vue.nextTick(() => {
  43. expect(vm.value).to.equal(false);
  44. expect(getComputedStyle(core).backgroundColor).to.equal('rgb(192, 204, 218)');
  45. expect(/2px, 2px/.test(button.style.transform)).to.true;
  46. core.click();
  47. expect(vm.value).to.equal(true);
  48. done();
  49. });
  50. });
  51. it('disabled switch should not respond to user click', done => {
  52. const vm = createVue({
  53. template: `
  54. <div>
  55. <el-switch disabled v-model="value"></el-switch>
  56. </div>
  57. `,
  58. data() {
  59. return {
  60. value: true
  61. };
  62. }
  63. }, true);
  64. vm.$el.querySelector('.el-switch__core').click();
  65. Vue.nextTick(() => {
  66. expect(vm.value).to.true;
  67. done();
  68. });
  69. });
  70. });