dropdown.spec.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. import { createVue, triggerEvent } from '../util';
  2. describe('Dropdown', () => {
  3. it('create', done => {
  4. const vm = createVue({
  5. template: `
  6. <el-dropdown ref="dropdown">
  7. <span class="el-dropdown-link">
  8. 下拉菜单<i class="el-icon-caret-bottom el-icon-right"></i>
  9. </span>
  10. <el-dropdown-menu slot="dropdown" class="dropdown-test-creat">
  11. <el-dropdown-item>黄金糕</el-dropdown-item>
  12. <el-dropdown-item>狮子头</el-dropdown-item>
  13. <el-dropdown-item>螺蛳粉</el-dropdown-item>
  14. <el-dropdown-item>双皮奶</el-dropdown-item>
  15. <el-dropdown-item>蚵仔煎</el-dropdown-item>
  16. </el-dropdown-menu>
  17. </el-dropdown>
  18. `
  19. }, true);
  20. let dropdown = vm.$refs.dropdown;
  21. let dropdownElm = dropdown.$el;
  22. let triggerElm = dropdownElm.children[0];
  23. triggerEvent(triggerElm, 'mouseenter');
  24. setTimeout(_ => {
  25. expect(dropdown.visible).to.be.true;
  26. triggerEvent(triggerElm, 'mouseleave');
  27. setTimeout(_ => {
  28. expect(dropdown.visible).to.not.true;
  29. done();
  30. }, 300);
  31. }, 400);
  32. });
  33. it('menu click', done => {
  34. const vm = createVue({
  35. template: `
  36. <el-dropdown>
  37. <span class="el-dropdown-link">
  38. 下拉菜单<i class="el-icon-caret-bottom el-icon-right"></i>
  39. </span>
  40. <el-dropdown-menu slot="dropdown" class="dropdown-test-menu-click">
  41. <el-dropdown-item>黄金糕</el-dropdown-item>
  42. <el-dropdown-item @click.native="handleClick">狮子头</el-dropdown-item>
  43. <el-dropdown-item>螺蛳粉</el-dropdown-item>
  44. <el-dropdown-item>双皮奶</el-dropdown-item>
  45. <el-dropdown-item>蚵仔煎</el-dropdown-item>
  46. </el-dropdown-menu>
  47. </el-dropdown>
  48. `,
  49. data() {
  50. return {
  51. clickedItem: ''
  52. };
  53. },
  54. methods: {
  55. handleClick(ev) {
  56. this.clickedItem = ev.target.innerText;
  57. }
  58. }
  59. }, true);
  60. let dropdownElm = vm.$el;
  61. let triggerElm = dropdownElm.children[0];
  62. triggerEvent(triggerElm, 'mouseenter');
  63. setTimeout(_ => {
  64. let dropdownMenu = document.querySelector('.dropdown-test-menu-click');
  65. dropdownMenu.children[1].click();
  66. setTimeout(_ => {
  67. expect(dropdownMenu.style.display).to.be.equal('none');
  68. expect(vm.clickedItem).to.be.equal('狮子头');
  69. done();
  70. }, 600);
  71. }, 400);
  72. });
  73. it('trigger', done => {
  74. const vm = createVue({
  75. template: `
  76. <el-dropdown trigger="click" ref="dropdown">
  77. <span class="el-dropdown-link">
  78. 下拉菜单trigger click<i class="el-icon-caret-bottom el-icon-right"></i>
  79. </span>
  80. <el-dropdown-menu slot="dropdown" class="dropdown-test-menu-click">
  81. <el-dropdown-item>黄金糕</el-dropdown-item>
  82. <el-dropdown-item @click.native="handleClick">狮子头</el-dropdown-item>
  83. <el-dropdown-item>螺蛳粉</el-dropdown-item>
  84. <el-dropdown-item>双皮奶</el-dropdown-item>
  85. <el-dropdown-item>蚵仔煎</el-dropdown-item>
  86. </el-dropdown-menu>
  87. </el-dropdown>
  88. `,
  89. data() {
  90. return {
  91. clickedItem: ''
  92. };
  93. },
  94. methods: {
  95. handleClick(ev) {
  96. this.clickedItem = ev.target.innerText;
  97. }
  98. }
  99. }, true);
  100. let dropdownElm = vm.$el;
  101. let dropdown = vm.$refs.dropdown;
  102. let triggerElm = dropdownElm.children[0];
  103. triggerEvent(triggerElm, 'mouseenter');
  104. dropdown.$nextTick(_ => {
  105. expect(dropdown.visible).to.not.true;
  106. dropdownElm.children[0].click();
  107. dropdown.$nextTick(_ => {
  108. expect(dropdown.visible).to.be.true;
  109. done();
  110. });
  111. });
  112. });
  113. it('split button', done => {
  114. const vm = createVue({
  115. template: `
  116. <el-dropdown split-button type="primary" @click="handleClick" ref="dropdown">
  117. 更多菜单
  118. <el-dropdown-menu slot="dropdown" class="dropdown-test-split-button">
  119. <el-dropdown-item>黄金糕</el-dropdown-item>
  120. <el-dropdown-item>狮子头</el-dropdown-item>
  121. <el-dropdown-item>螺蛳粉</el-dropdown-item>
  122. <el-dropdown-item>双皮奶</el-dropdown-item>
  123. <el-dropdown-item>蚵仔煎</el-dropdown-item>
  124. </el-dropdown-menu>
  125. </el-dropdown>
  126. `,
  127. data() {
  128. return {
  129. btnClicked: false
  130. };
  131. },
  132. methods: {
  133. handleClick(ev) {
  134. this.btnClicked = true;
  135. }
  136. }
  137. }, true);
  138. let dropdown = vm.$refs.dropdown;
  139. let dropdownElm = dropdown.$el;
  140. let triggerElm = dropdownElm.querySelector('.el-dropdown__caret-button');
  141. triggerEvent(triggerElm, 'mouseenter');
  142. setTimeout(_ => {
  143. expect(dropdown.visible).to.be.true;
  144. triggerEvent(triggerElm, 'mouseleave');
  145. setTimeout(_ => {
  146. expect(dropdown.visible).to.not.true;
  147. done();
  148. }, 400);
  149. }, 400);
  150. });
  151. });