index.spec.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. import List from '..';
  2. import { mount, later } from '../../../test/utils';
  3. function mockOffsetParent(el) {
  4. Object.defineProperty(el, 'offsetParent', {
  5. get() {
  6. return {};
  7. }
  8. });
  9. }
  10. test('load event', async () => {
  11. const wrapper = mount(List);
  12. wrapper.vm.$on('input', value => {
  13. wrapper.vm.loading = value;
  14. });
  15. mockOffsetParent(wrapper.vm.$el);
  16. await later();
  17. expect(wrapper.emitted('load')).toBeTruthy();
  18. expect(wrapper.emitted('input')).toBeTruthy();
  19. wrapper.vm.loading = false;
  20. await later();
  21. expect(wrapper.emitted('input')[1]).toBeTruthy();
  22. wrapper.destroy();
  23. });
  24. test('error loaded, click error-text and reload', async () => {
  25. const wrapper = mount(List, {
  26. propsData: {
  27. errorText: 'Request failed. Click to reload...',
  28. error: true
  29. }
  30. });
  31. mockOffsetParent(wrapper.vm.$el);
  32. await later();
  33. expect(wrapper.emitted('load')).toBeFalsy();
  34. expect(wrapper.emitted('input')).toBeFalsy();
  35. // 模拟点击error-text的行为
  36. wrapper.setProps({
  37. error: false
  38. });
  39. wrapper.vm.$emit('input', true);
  40. wrapper.vm.$emit('load');
  41. expect(wrapper.vm.$props.error).toBeFalsy();
  42. expect(wrapper.emitted('load')).toBeTruthy();
  43. expect(wrapper.emitted('input')).toBeTruthy();
  44. wrapper.destroy();
  45. });
  46. test('finished', async () => {
  47. const wrapper = mount(List, {
  48. propsData: {
  49. finished: true
  50. }
  51. });
  52. mockOffsetParent(wrapper.vm.$el);
  53. await later();
  54. expect(wrapper.emitted('load')).toBeFalsy();
  55. expect(wrapper.emitted('input')).toBeFalsy();
  56. wrapper.vm.finished = false;
  57. await later();
  58. expect(wrapper.emitted('load')).toBeTruthy();
  59. expect(wrapper.emitted('input')).toBeTruthy();
  60. });
  61. test('immediate check false', async () => {
  62. const wrapper = mount(List, {
  63. propsData: {
  64. immediateCheck: false
  65. }
  66. });
  67. await later();
  68. expect(wrapper.emitted('load')).toBeFalsy();
  69. expect(wrapper.emitted('input')).toBeFalsy();
  70. });
  71. test('keey-alive live cycle', () => {
  72. const wrapper = mount(
  73. {
  74. template: `
  75. <keep-alive>
  76. <list v-if="show" />
  77. </keep-alive>
  78. `,
  79. props: ['show'],
  80. components: { List }
  81. },
  82. {
  83. propsData: {
  84. show: true
  85. }
  86. }
  87. );
  88. expect(wrapper.vm.$el).toBeTruthy();
  89. wrapper.vm.show = false;
  90. expect(wrapper.vm.el).toBeFalsy();
  91. });