mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-06 03:57:59 +08:00
138 lines
2.9 KiB
JavaScript
138 lines
2.9 KiB
JavaScript
import Uploader from 'packages/uploader';
|
|
import { mount } from 'avoriaz';
|
|
|
|
window.File = function() {
|
|
this.name = 'test';
|
|
this.size = 10000;
|
|
};
|
|
|
|
window.FileReader = function() {
|
|
this.readAsDataURL = this.readAsText = function() {
|
|
this.onload && this.onload({
|
|
target: {
|
|
result: 'test'
|
|
}
|
|
});
|
|
};
|
|
};
|
|
|
|
const mockFile = new File([], '/Users');
|
|
|
|
describe('Uploader', () => {
|
|
let wrapper;
|
|
afterEach(() => {
|
|
wrapper && wrapper.destroy();
|
|
});
|
|
|
|
it('disabled', () => {
|
|
const afterRead = sinon.spy();
|
|
wrapper = mount(Uploader, {
|
|
propsData: {
|
|
disabled: true,
|
|
afterRead
|
|
}
|
|
});
|
|
|
|
expect(wrapper.contains('input')).to.equal(true);
|
|
wrapper.vm.onChange({ target: { files: [] }});
|
|
expect(afterRead.calledOnce).to.be.false;
|
|
});
|
|
|
|
it('before read', () => {
|
|
const afterRead = sinon.spy();
|
|
wrapper = mount(Uploader, {
|
|
propsData: {
|
|
beforeRead: () => false,
|
|
afterRead
|
|
}
|
|
});
|
|
|
|
wrapper.vm.onChange({ target: { files: [mockFile] }});
|
|
expect(afterRead.calledOnce).to.be.false;
|
|
});
|
|
|
|
it('read text', done => {
|
|
wrapper = mount(Uploader, {
|
|
propsData: {
|
|
resultType: 'text',
|
|
afterRead: (file) => {
|
|
expect(file.content).to.equal('test');
|
|
done();
|
|
}
|
|
}
|
|
});
|
|
|
|
wrapper.vm.onChange({ target: { files: [mockFile] }});
|
|
});
|
|
|
|
it('read dataUrl', done => {
|
|
wrapper = mount(Uploader, {
|
|
propsData: {
|
|
afterRead: (file) => {
|
|
expect(file.content).to.equal('test');
|
|
done();
|
|
}
|
|
}
|
|
});
|
|
|
|
wrapper.vm.onChange({ target: { files: [mockFile] }});
|
|
});
|
|
|
|
it('unknown resultType', () => {
|
|
const afterRead = sinon.spy();
|
|
wrapper = mount(Uploader, {
|
|
propsData: {
|
|
resultType: 'xxxx',
|
|
afterRead
|
|
}
|
|
});
|
|
wrapper.vm.onChange({ target: { files: [mockFile] }});
|
|
expect(afterRead.calledOnce).to.be.false;
|
|
});
|
|
|
|
it('read multiple files', done => {
|
|
wrapper = mount(Uploader, {
|
|
propsData: {
|
|
afterRead: (file) => {
|
|
expect(file.length).to.equal(2);
|
|
done();
|
|
}
|
|
}
|
|
});
|
|
|
|
wrapper.vm.onChange({ target: { files: [mockFile, mockFile] }});
|
|
});
|
|
|
|
it('size overlimit', done => {
|
|
const spy = sinon.spy();
|
|
wrapper = mount(Uploader, {
|
|
propsData: {
|
|
maxSize: 1
|
|
}
|
|
});
|
|
wrapper.vm.$on('oversize', spy);
|
|
wrapper.vm.onChange({ target: { files: [mockFile] }});
|
|
|
|
setTimeout(() => {
|
|
expect(spy.calledOnce).to.be.true;
|
|
done();
|
|
}, 50);
|
|
});
|
|
|
|
it('multi file size overlimit', done => {
|
|
const spy = sinon.spy();
|
|
wrapper = mount(Uploader, {
|
|
propsData: {
|
|
maxSize: 1
|
|
}
|
|
});
|
|
wrapper.vm.$on('oversize', spy);
|
|
wrapper.vm.onChange({ target: { files: [mockFile, mockFile] }});
|
|
|
|
setTimeout(() => {
|
|
expect(spy.calledOnce).to.be.true;
|
|
done();
|
|
}, 50);
|
|
});
|
|
});
|