button.spec.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. import { createTest, createVue, destroyVM } from '../util';
  2. import Button from 'packages/button';
  3. describe('Button', () => {
  4. let vm;
  5. afterEach(() => {
  6. destroyVM(vm);
  7. });
  8. it('create', () => {
  9. vm = createTest(Button, {
  10. type: 'primary'
  11. }, true);
  12. let buttonElm = vm.$el;
  13. expect(buttonElm.classList.contains('el-button--primary')).to.be.true;
  14. });
  15. it('icon', () => {
  16. vm = createTest(Button, {
  17. icon: 'el-icon-search'
  18. }, true);
  19. let buttonElm = vm.$el;
  20. expect(buttonElm.querySelector('.el-icon-search')).to.be.ok;
  21. });
  22. it('nativeType', () => {
  23. vm = createTest(Button, {
  24. nativeType: 'submit'
  25. }, true);
  26. let buttonElm = vm.$el;
  27. expect(buttonElm.getAttribute('type')).to.be.equal('submit');
  28. });
  29. it('loading', () => {
  30. vm = createTest(Button, {
  31. loading: true
  32. }, true);
  33. let buttonElm = vm.$el;
  34. expect(buttonElm.classList.contains('is-loading')).to.be.true;
  35. expect(buttonElm.querySelector('.el-icon-loading')).to.be.ok;
  36. });
  37. it('disabled', () => {
  38. vm = createTest(Button, {
  39. disabled: true
  40. }, true);
  41. let buttonElm = vm.$el;
  42. expect(buttonElm.classList.contains('is-disabled')).to.be.true;
  43. });
  44. it('size', () => {
  45. vm = createTest(Button, {
  46. size: 'medium'
  47. }, true);
  48. let buttonElm = vm.$el;
  49. expect(buttonElm.classList.contains('el-button--medium')).to.be.true;
  50. });
  51. it('plain', () => {
  52. vm = createTest(Button, {
  53. plain: true
  54. }, true);
  55. let buttonElm = vm.$el;
  56. expect(buttonElm.classList.contains('is-plain')).to.be.true;
  57. });
  58. it('click', done => {
  59. let result;
  60. vm = createVue({
  61. template: `
  62. <el-button @click="handleClick"></el-button>
  63. `,
  64. methods: {
  65. handleClick(evt) {
  66. result = evt;
  67. }
  68. }
  69. }, true);
  70. vm.$el.click();
  71. setTimeout(_ => {
  72. expect(result).to.exist;
  73. done();
  74. }, 20);
  75. });
  76. it('click inside', done => {
  77. let result;
  78. vm = createVue({
  79. template: `
  80. <el-button @click="handleClick"><span class="inner-slot"></span></el-button>
  81. `,
  82. methods: {
  83. handleClick(evt) {
  84. result = evt;
  85. }
  86. }
  87. }, true);
  88. vm.$el.querySelector('.inner-slot').click();
  89. setTimeout(_ => {
  90. expect(result).to.exist;
  91. done();
  92. }, 20);
  93. });
  94. it('loading implies disabled', done => {
  95. let result;
  96. vm = createVue({
  97. template: `
  98. <el-button loading @click="handleClick"><span class="inner-slot"></span></el-button>
  99. `,
  100. methods: {
  101. handleClick(evt) {
  102. result = evt;
  103. }
  104. }
  105. }, true);
  106. vm.$el.querySelector('.inner-slot').click();
  107. setTimeout(_ => {
  108. expect(result).to.not.exist;
  109. done();
  110. }, 20);
  111. });
  112. });