import { createTest, createVue, destroyVM, wait } from '../util';
import Image from 'packages/image';
import { IMAGE_SUCCESS, IMAGE_FAIL } from '../mocks/uri';
const src = IMAGE_SUCCESS;
describe('Image', () => {
let vm;
afterEach(() => {
destroyVM(vm);
});
it('create', async() => {
vm = createTest(Image, {
src,
fit: 'fill'
}, true);
const placeholder = vm.$el.querySelector('.el-image__placeholder');
const error = vm.$el.querySelector('.el-image__error');
let img = vm.$el.querySelector('.el-image__inner');
expect(placeholder).to.exist;
expect(error).to.be.null;
expect(img).to.be.null;
await wait();
img = vm.$el.querySelector('.el-image__inner');
expect(img.style.objectFit).to.equal('fill');
});
it('load failed', async() => {
vm = createTest(Image, {
src: IMAGE_FAIL
}, true);
await wait();
const error = vm.$el.querySelector('.el-image__error');
expect(error).to.be.exist;
});
it('lazy load', async() => {
vm = createVue({
template: `
`,
data() {
return {
src
};
}
}, true);
const { image, wrapper } = vm.$refs;
const [image1, image2] = image;
await wait();
expect(image1.loading).to.be.false;
expect(image2.loading).to.be.true;
wrapper.scrollTop = 10;
await wait();
expect(image2.loading).to.be.false;
});
it('$attrs', async() => {
vm = createVue({
template: `
`,
data() {
return {
src
};
}
}, true);
await wait();
const $img = vm.$el.querySelector('.el-image__inner');
expect($img.getAttribute('alt')).to.be.equal('$attrs test');
expect($img.getAttribute('referrerpolicy')).to.be.equal('origin');
});
it('pass event listeners', async() => {
let result;
vm = createVue({
template: `
`,
data() {
return {
src
};
},
methods: {
handleClick(e) {
result = e;
}
}
}, true);
await wait();
vm.$el.querySelector('.el-image__inner').click();
await wait();
expect(result).to.exist;
});
it('big image preview', async() => {
vm = createVue({
template: `
`,
data() {
return {
src: src,
srcList: [src]
};
}
}, true);
await wait();
vm.$el.querySelector('.el-image__inner').click();
await wait();
expect(document.querySelector('.el-image-viewer__wrapper')).to.exist;
document.querySelector('.el-image-viewer__close').click();
await wait(1000);
expect(document.querySelector('.el-image-viewer__wrapper')).to.not.exist;
});
});