switch.spec.js 1.8 KB

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