image.spec.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. import { createTest, createVue, destroyVM, wait } from '../util';
  2. import Image from 'packages/image';
  3. import { IMAGE_SUCCESS, IMAGE_FAIL } from '../mocks/uri';
  4. const src = IMAGE_SUCCESS;
  5. describe('Image', () => {
  6. let vm;
  7. afterEach(() => {
  8. destroyVM(vm);
  9. });
  10. it('create', async() => {
  11. vm = createTest(Image, {
  12. src,
  13. fit: 'fill'
  14. }, true);
  15. const placeholder = vm.$el.querySelector('.el-image__placeholder');
  16. const error = vm.$el.querySelector('.el-image__error');
  17. let img = vm.$el.querySelector('.el-image__inner');
  18. expect(placeholder).to.exist;
  19. expect(error).to.be.null;
  20. expect(img).to.be.null;
  21. await wait();
  22. img = vm.$el.querySelector('.el-image__inner');
  23. expect(img.style.objectFit).to.equal('fill');
  24. });
  25. it('load failed', async() => {
  26. vm = createTest(Image, {
  27. src: IMAGE_FAIL
  28. }, true);
  29. await wait();
  30. const error = vm.$el.querySelector('.el-image__error');
  31. expect(error).to.be.exist;
  32. });
  33. it('lazy load', async() => {
  34. vm = createVue({
  35. template: `
  36. <div ref="wrapper" style="height: 200px; overflow: auto;">
  37. <el-image
  38. v-for="item in 2"
  39. :key="item"
  40. :src="src"
  41. ref="image"
  42. style="display: block; height: 200px;"
  43. lazy></el-image>
  44. </div>
  45. `,
  46. data() {
  47. return {
  48. src
  49. };
  50. }
  51. }, true);
  52. const { image, wrapper } = vm.$refs;
  53. const [image1, image2] = image;
  54. await wait();
  55. expect(image1.loading).to.be.false;
  56. expect(image2.loading).to.be.true;
  57. wrapper.scrollTop = 10;
  58. await wait();
  59. expect(image2.loading).to.be.false;
  60. });
  61. it('$attrs', async() => {
  62. vm = createVue({
  63. template: `
  64. <el-image
  65. alt="$attrs test"
  66. referrerpolicy="origin"
  67. :src="src"></el-image>
  68. `,
  69. data() {
  70. return {
  71. src
  72. };
  73. }
  74. }, true);
  75. await wait();
  76. const $img = vm.$el.querySelector('.el-image__inner');
  77. expect($img.getAttribute('alt')).to.be.equal('$attrs test');
  78. expect($img.getAttribute('referrerpolicy')).to.be.equal('origin');
  79. });
  80. it('pass event listeners', async() => {
  81. let result;
  82. vm = createVue({
  83. template: `
  84. <el-image @click="handleClick" :src="src"></el-image>
  85. `,
  86. data() {
  87. return {
  88. src
  89. };
  90. },
  91. methods: {
  92. handleClick(e) {
  93. result = e;
  94. }
  95. }
  96. }, true);
  97. await wait();
  98. vm.$el.querySelector('.el-image__inner').click();
  99. await wait();
  100. expect(result).to.exist;
  101. });
  102. it('big image preview', async() => {
  103. vm = createVue({
  104. template: `
  105. <el-image :src="src" :preview-src-list="srcList"></el-image>
  106. `,
  107. data() {
  108. return {
  109. src: src,
  110. srcList: [src]
  111. };
  112. }
  113. }, true);
  114. await wait();
  115. vm.$el.querySelector('.el-image__inner').click();
  116. await wait();
  117. expect(vm.$el.querySelector('.el-image-viewer__wrapper')).to.exist;
  118. vm.$el.querySelector('.el-image-viewer__close').click();
  119. await wait(1000);
  120. expect(vm.$el.querySelector('.el-image-viewer__wrapper')).to.not.exist;
  121. });
  122. });