diff --git a/docs/examples-docs/uploader.md b/docs/examples-docs/uploader.md index 36466c171..b68520b9a 100644 --- a/docs/examples-docs/uploader.md +++ b/docs/examples-docs/uploader.md @@ -49,20 +49,7 @@ export default { #### 基础用法 -:::demo 基础用法 -```html -
- - -
-``` -::: - -#### 自定义上传图标 - -:::demo 自定义上传图标 +:::demo ```html
@@ -80,7 +67,7 @@ export default { | result-type | 读取文件的方式,以base64的方式读取;以文本的方式读取 | `string` | `dataUrl` | `dataUrl`, `text` | | disable | 是否禁用上传,在图片上传期间设置为true,禁止用户点击此组件上传图片 | `boolean` | `false` | | | before-read | 读文件之前的钩子,参数为选择的文件,若返回 false 则停止读取文件。 | `Function` | | | -| after-read | 文件读完之后回调此函数,参数为{name:'文件名',type:'文件类型',size:'文件大小',content:'读的内容'} | `Function` | | | +| after-read | 文件读完之后回调此函数,参数为{file:'选择的文件',content:'读的内容'} | `Function` | | | ### Slot diff --git a/packages/uploader/src/main.vue b/packages/uploader/src/main.vue index 9c0ad2c53..6b0a65851 100644 --- a/packages/uploader/src/main.vue +++ b/packages/uploader/src/main.vue @@ -1,11 +1,14 @@ @@ -40,12 +43,10 @@ reader.onload = (e) => { this.afterRead && this.afterRead( { - name: file.name, - type: file.type, - size: file.size, + file: file, content: e.target.result }); - this.$refs.input.value = ''; + this.$refs.input && (this.$refs.input.value = ''); }; if (this.resultType === 'dataUrl') { reader.readAsDataURL(file); diff --git a/test/unit/specs/uploader.spec.js b/test/unit/specs/uploader.spec.js new file mode 100644 index 000000000..c45684604 --- /dev/null +++ b/test/unit/specs/uploader.spec.js @@ -0,0 +1,117 @@ +import Uploader from 'packages/uploader'; +import { mount } from 'avoriaz'; + +describe('Uploader', () => { + let wrapper; + afterEach(() => { + wrapper && wrapper.destroy(); + }); + + it('enabled', () => { + wrapper = mount(Uploader, { + propsData: { + disabled: false + } + }); + + expect(wrapper.contains('input')).to.equal(true); + expect(wrapper.methods().onValueChange.call(wrapper.vm, { target: { files: [] }})).to.equal(undefined); + }); +}); +describe('Uploader', () => { + let wrapper; + afterEach(() => { + wrapper && wrapper.destroy(); + }); + + it('disabled', () => { + wrapper = mount(Uploader, { + propsData: { + disabled: true + } + }); + + expect(wrapper.contains('input')).to.equal(true); + expect(wrapper.methods().onValueChange.call(wrapper.vm, { target: { files: [] }})).to.equal(undefined); + }); +}); +describe('Uploader', () => { + let wrapper; + afterEach(() => { + wrapper && wrapper.destroy(); + }); + + it('before read', () => { + wrapper = mount(Uploader, { + propsData: { + disabled: false, + beforeRead: () => { + return false; + } + } + }); + + expect(wrapper.contains('input')).to.equal(true); + expect(wrapper.methods().onValueChange.call(wrapper.vm, { target: { files: [new File([], '')] }})).to.equal(undefined); + }); +}); +describe('Uploader', () => { + let wrapper; + afterEach(() => { + wrapper && wrapper.destroy(); + }); + + it('read text', () => { + wrapper = mount(Uploader, { + propsData: { + disabled: false, + resultType: 'text', + afterRead: (file) => { + console.log(file); + } + } + }); + + expect(wrapper.contains('input')).to.equal(true); + expect(wrapper.methods().onValueChange.call(wrapper.vm, { target: { files: [new File([], '/Users')] }})).to.equal(undefined); + }); +}); +describe('Uploader', () => { + let wrapper; + afterEach(() => { + wrapper && wrapper.destroy(); + }); + + it('read text no after hook', () => { + wrapper = mount(Uploader, { + propsData: { + disabled: false, + resultType: 'text' + } + }); + + expect(wrapper.contains('input')).to.equal(true); + expect(wrapper.methods().onValueChange.call(wrapper.vm, { target: { files: [new File([], '/Users')] }})).to.equal(undefined); + }); +}); +describe('Uploader', () => { + let wrapper; + afterEach(() => { + wrapper && wrapper.destroy(); + }); + + it('read dataUrl', () => { + wrapper = mount(Uploader, { + propsData: { + disabled: false, + resultType: 'dataUrl', + afterRead: (file) => { + console.log(file); + } + } + }); + + expect(wrapper.contains('input')).to.equal(true); + expect(wrapper.methods().onValueChange.call(wrapper.vm, { target: { files: [new File([], '/Users')] }})).to.equal(undefined); + }); +}); diff --git a/yarn.lock b/yarn.lock index b7d8f7414..9dcb294e4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1589,7 +1589,7 @@ cssesc@^0.1.0: version "0.1.0" resolved "http://registry.npm.qima-inc.com/cssesc/download/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" -"cssnano@>=2.6.1 <4": +"cssnano@>=2.6.1 <4", cssnano@^3.4.0: version "3.10.0" resolved "http://registry.npm.qima-inc.com/cssnano/download/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38" dependencies: @@ -4666,6 +4666,14 @@ optimist@^0.6.1, optimist@~0.6.1: minimist "~0.0.1" wordwrap "~0.0.2" +optimize-css-assets-webpack-plugin@^1.3.0: + version "1.3.0" + resolved "http://registry.npm.qima-inc.com/optimize-css-assets-webpack-plugin/download/optimize-css-assets-webpack-plugin-1.3.0.tgz#331b3dc7ac0b2b3597f68d18fd555f5a0c81b15c" + dependencies: + cssnano "^3.4.0" + underscore "^1.8.3" + webpack-sources "^0.1.0" + optionator@^0.8.1, optionator@^0.8.2: version "0.8.2" resolved "http://registry.npm.qima-inc.com/optionator/download/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" @@ -6531,6 +6539,10 @@ unc-path-regex@^0.1.0: version "0.1.2" resolved "http://registry.npm.qima-inc.com/unc-path-regex/download/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" +underscore@^1.8.3: + version "1.8.3" + resolved "http://registry.npm.qima-inc.com/underscore/download/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022" + underscore@~1.6.0: version "1.6.0" resolved "http://registry.npm.qima-inc.com/underscore/download/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8"