collapse.spec.js 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. import { createVue, destroyVM } from '../util';
  2. describe('Collapse', () => {
  3. let vm;
  4. afterEach(() => {
  5. destroyVM(vm);
  6. });
  7. it('create', done => {
  8. vm = createVue({
  9. data() {
  10. return {
  11. activeNames: ['1']
  12. };
  13. },
  14. template: `
  15. <el-collapse v-model="activeNames" ref="collapse">
  16. <el-collapse-item title="一致性 Consistency" name="1" ref="item1">
  17. <div>与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;</div>
  18. <div>在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。</div>
  19. </el-collapse-item>
  20. <el-collapse-item title="反馈 Feedback" name="2">
  21. <div>控制反馈:通过界面样式和交互动效让用户可以清晰的感知自己的操作;</div>
  22. <div>页面反馈:操作后,通过页面元素的变化清晰地展现当前状态。</div>
  23. </el-collapse-item>
  24. <el-collapse-item title="效率 Efficiency" name="3" ref="item3">
  25. <div>简化流程:设计简洁直观的操作流程;</div>
  26. <div>清晰明确:语言表达清晰且表意明确,让用户快速理解进而作出决策;</div>
  27. <div>帮助用户识别:界面简单直白,让用户快速识别而非回忆,减少用户记忆负担。</div>
  28. </el-collapse-item>
  29. <el-collapse-item title="可控 Controllability" name="4">
  30. <div>用户决策:根据场景可给予用户操作建议或安全提示,但不能代替用户进行决策;</div>
  31. <div>结果可控:用户可以自由的进行操作,包括撤销、回退和终止当前操作等。</div>
  32. </el-collapse-item>
  33. </el-collapse>
  34. `
  35. }, true);
  36. expect(vm.$refs.item1.isActive).to.be.true;
  37. vm.$refs.item3.$el.querySelector('.el-collapse-item__header').click();
  38. vm.$nextTick(_ => {
  39. expect(vm.$refs.item1.isActive).to.be.true;
  40. expect(vm.$refs.item3.isActive).to.be.true;
  41. vm.$refs.item1.$el.querySelector('.el-collapse-item__header').click();
  42. vm.$nextTick(_ => {
  43. expect(vm.$refs.item1.isActive).to.be.false;
  44. done();
  45. });
  46. });
  47. });
  48. it('accordion', done => {
  49. vm = createVue({
  50. data() {
  51. return {
  52. activeNames: ['1']
  53. };
  54. },
  55. template: `
  56. <el-collapse accordion v-model="activeNames" ref="collapse">
  57. <el-collapse-item title="一致性 Consistency" name="1" ref="item1">
  58. <div>与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;</div>
  59. <div>在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。</div>
  60. </el-collapse-item>
  61. <el-collapse-item title="反馈 Feedback" name="2">
  62. <div>控制反馈:通过界面样式和交互动效让用户可以清晰的感知自己的操作;</div>
  63. <div>页面反馈:操作后,通过页面元素的变化清晰地展现当前状态。</div>
  64. </el-collapse-item>
  65. <el-collapse-item title="效率 Efficiency" name="3" ref="item3">
  66. <div>简化流程:设计简洁直观的操作流程;</div>
  67. <div>清晰明确:语言表达清晰且表意明确,让用户快速理解进而作出决策;</div>
  68. <div>帮助用户识别:界面简单直白,让用户快速识别而非回忆,减少用户记忆负担。</div>
  69. </el-collapse-item>
  70. <el-collapse-item title="可控 Controllability" name="4">
  71. <div>用户决策:根据场景可给予用户操作建议或安全提示,但不能代替用户进行决策;</div>
  72. <div>结果可控:用户可以自由的进行操作,包括撤销、回退和终止当前操作等。</div>
  73. </el-collapse-item>
  74. </el-collapse>
  75. `
  76. }, true);
  77. expect(vm.$refs.item1.isActive).to.be.true;
  78. vm.$refs.item3.$el.querySelector('.el-collapse-item__header').click();
  79. vm.$nextTick(_ => {
  80. expect(vm.$refs.item1.isActive).to.be.false;
  81. expect(vm.$refs.item3.isActive).to.be.true;
  82. done();
  83. });
  84. });
  85. it('event:change', done => {
  86. vm = createVue({
  87. data() {
  88. return {
  89. activeNames: ['1']
  90. };
  91. },
  92. template: `
  93. <el-collapse v-model="activeNames" ref="collapse">
  94. <el-collapse-item title="一致性 Consistency" name="1" ref="item1">
  95. <div>与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;</div>
  96. <div>在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。</div>
  97. </el-collapse-item>
  98. <el-collapse-item title="反馈 Feedback" name="2">
  99. <div>控制反馈:通过界面样式和交互动效让用户可以清晰的感知自己的操作;</div>
  100. <div>页面反馈:操作后,通过页面元素的变化清晰地展现当前状态。</div>
  101. </el-collapse-item>
  102. <el-collapse-item title="效率 Efficiency" name="3" ref="item3">
  103. <div>简化流程:设计简洁直观的操作流程;</div>
  104. <div>清晰明确:语言表达清晰且表意明确,让用户快速理解进而作出决策;</div>
  105. <div>帮助用户识别:界面简单直白,让用户快速识别而非回忆,减少用户记忆负担。</div>
  106. </el-collapse-item>
  107. <el-collapse-item title="可控 Controllability" name="4">
  108. <div>用户决策:根据场景可给予用户操作建议或安全提示,但不能代替用户进行决策;</div>
  109. <div>结果可控:用户可以自由的进行操作,包括撤销、回退和终止当前操作等。</div>
  110. </el-collapse-item>
  111. </el-collapse>
  112. `
  113. }, true);
  114. const spy = sinon.spy();
  115. vm.$refs.collapse.$on('change', spy);
  116. vm.$refs.item3.$el.querySelector('.el-collapse-item__header').click();
  117. vm.$nextTick(_ => {
  118. expect(spy.withArgs().calledOnce).to.be.true;
  119. done();
  120. });
  121. });
  122. });