tabs.spec.js 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. import { createVue, destroyVM } from '../util';
  2. describe('Tabs', () => {
  3. let vm;
  4. afterEach(() => {
  5. destroyVM(vm);
  6. });
  7. it('create', done => {
  8. vm = createVue({
  9. template: `
  10. <el-tabs>
  11. <el-tab-pane label="用户管理">A</el-tab-pane>
  12. <el-tab-pane label="配置管理">B</el-tab-pane>
  13. <el-tab-pane label="角色管理">C</el-tab-pane>
  14. <el-tab-pane label="定时任务补偿">D</el-tab-pane>
  15. </el-tabs>
  16. `
  17. }, true);
  18. let tabList = vm.$el.querySelector('.el-tabs__header').children;
  19. let paneList = vm.$el.querySelector('.el-tabs__content').children;
  20. setTimeout(_ => {
  21. expect(tabList[0].classList.contains('is-active')).to.be.true;
  22. expect(paneList[0].style.display).to.not.ok;
  23. tabList[2].click();
  24. vm.$nextTick(_ => {
  25. expect(tabList[2].classList.contains('is-active')).to.be.true;
  26. expect(paneList[2].style.display).to.not.ok;
  27. done();
  28. });
  29. }, 100);
  30. });
  31. it('active-name', done => {
  32. vm = createVue({
  33. template: `
  34. <el-tabs :active-name="activeName" @click="handleClick">
  35. <el-tab-pane name="tab-A" label="用户管理">A</el-tab-pane>
  36. <el-tab-pane name="tab-B" label="配置管理">B</el-tab-pane>
  37. <el-tab-pane name="tab-C" label="角色管理">C</el-tab-pane>
  38. <el-tab-pane name="tab-D" label="定时任务补偿">D</el-tab-pane>
  39. </el-tabs>
  40. `,
  41. data() {
  42. return {
  43. activeName: 'tab-B'
  44. };
  45. },
  46. methods: {
  47. handleClick(tab) {
  48. this.activeName = tab.name;
  49. }
  50. }
  51. }, true);
  52. let tabList = vm.$el.querySelector('.el-tabs__header').children;
  53. let paneList = vm.$el.querySelector('.el-tabs__content').children;
  54. setTimeout(_ => {
  55. expect(tabList[1].classList.contains('is-active')).to.be.true;
  56. expect(paneList[1].style.display).to.not.ok;
  57. tabList[3].click();
  58. vm.$nextTick(_ => {
  59. expect(tabList[3].classList.contains('is-active')).to.be.true;
  60. expect(paneList[3].style.display).to.not.ok;
  61. expect(vm.activeName === 'tab-D');
  62. done();
  63. });
  64. }, 100);
  65. });
  66. it('card', () => {
  67. vm = createVue({
  68. template: `
  69. <el-tabs type="card">
  70. <el-tab-pane label="用户管理">A</el-tab-pane>
  71. <el-tab-pane label="配置管理">B</el-tab-pane>
  72. <el-tab-pane label="角色管理">C</el-tab-pane>
  73. <el-tab-pane label="定时任务补偿">D</el-tab-pane>
  74. </el-tabs>
  75. `
  76. }, true);
  77. expect(vm.$el.classList.contains('el-tabs--card')).to.be.true;
  78. });
  79. it('border card', () => {
  80. vm = createVue({
  81. template: `
  82. <el-tabs type="border-card">
  83. <el-tab-pane label="用户管理">A</el-tab-pane>
  84. <el-tab-pane label="配置管理">B</el-tab-pane>
  85. <el-tab-pane label="角色管理">C</el-tab-pane>
  86. <el-tab-pane label="定时任务补偿">D</el-tab-pane>
  87. </el-tabs>
  88. `
  89. }, true);
  90. expect(vm.$el.classList.contains('el-tabs--border-card')).to.be.true;
  91. });
  92. it('closable', done => {
  93. vm = createVue({
  94. template: `
  95. <el-tabs type="card" closable @tab-remove="handleRemove">
  96. <el-tab-pane label="用户管理">A</el-tab-pane>
  97. <el-tab-pane label="配置管理">B</el-tab-pane>
  98. <el-tab-pane label="角色管理">C</el-tab-pane>
  99. <el-tab-pane label="定时任务补偿">D</el-tab-pane>
  100. </el-tabs>
  101. `,
  102. data() {
  103. return {
  104. removeTabName: ''
  105. };
  106. },
  107. methods: {
  108. handleRemove(tab) {
  109. this.removeTabName = tab.label;
  110. }
  111. }
  112. }, true);
  113. let tabList = vm.$el.querySelector('.el-tabs__header').children;
  114. let paneList = vm.$el.querySelector('.el-tabs__content').children;
  115. setTimeout(_ => {
  116. tabList[1].querySelector('.el-icon-close').click();
  117. vm.$nextTick(_ => {
  118. expect(tabList.length).to.be.equal(3);
  119. expect(paneList.length).to.be.equal(3);
  120. expect(vm.removeTabName).to.be.equal('配置管理');
  121. expect(tabList[1].innerText.trim()).to.be.equal('角色管理');
  122. expect(paneList[0].innerText.trim()).to.be.equal('A');
  123. done();
  124. });
  125. }, 100);
  126. });
  127. it('closable edge', done => {
  128. vm = createVue({
  129. template: `
  130. <el-tabs type="card" closable>
  131. <el-tab-pane label="用户管理">A</el-tab-pane>
  132. <el-tab-pane label="配置管理">B</el-tab-pane>
  133. <el-tab-pane label="角色管理">C</el-tab-pane>
  134. <el-tab-pane label="定时任务补偿">D</el-tab-pane>
  135. </el-tabs>
  136. `
  137. }, true);
  138. let tabList = vm.$el.querySelector('.el-tabs__header').children;
  139. let paneList = vm.$el.querySelector('.el-tabs__content').children;
  140. setTimeout(_ => {
  141. tabList[0].querySelector('.el-icon-close').click();
  142. vm.$nextTick(_ => {
  143. expect(tabList.length).to.be.equal(3);
  144. expect(paneList.length).to.be.equal(3);
  145. expect(tabList[0].innerText.trim()).to.be.equal('配置管理');
  146. expect(paneList[0].innerText.trim()).to.be.equal('B');
  147. tabList[2].click();
  148. tabList[2].querySelector('.el-icon-close').click();
  149. vm.$nextTick(_ => {
  150. expect(tabList.length).to.be.equal(2);
  151. expect(paneList.length).to.be.equal(2);
  152. expect(tabList[1].classList.contains('is-active')).to.be.true;
  153. expect(tabList[1].innerText.trim()).to.be.equal('角色管理');
  154. expect(paneList[1].innerText.trim()).to.be.equal('C');
  155. done();
  156. });
  157. });
  158. }, 100);
  159. });
  160. });