tabs.spec.js 5.5 KB

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