From ce401de06dedb5cb866944b5c8903671cb9b4056 Mon Sep 17 00:00:00 2001 From: wny Date: Thu, 8 Feb 2018 16:59:39 +0800 Subject: [PATCH] =?UTF-8?q?[bugfix]=20=E4=BF=AE=E5=A4=8Dsku=E6=94=B9?= =?UTF-8?q?=E5=8F=98=E5=90=8EskuMessages=E6=B2=A1=E6=9C=89=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E7=9A=84bug=20(#627)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/sku/components/SkuMessages.vue | 11 ++++++- test/unit/specs/sku.spec.js | 41 ++++++++++++++++++++++--- 2 files changed, 47 insertions(+), 5 deletions(-) diff --git a/packages/sku/components/SkuMessages.vue b/packages/sku/components/SkuMessages.vue index ecf606467..720b9a96c 100644 --- a/packages/sku/components/SkuMessages.vue +++ b/packages/sku/components/SkuMessages.vue @@ -54,10 +54,16 @@ export default create({ data() { return { - messageValues: this.messages.map(() => ({ value: '' })) + messageValues: this.resetMessageValues(this.messages) }; }, + watch: { + messages(val) { + this.messageValues = this.resetMessageValues(val); + } + }, + computed: { messagePlaceholderMap() { return this.messageConfig.placeholderMap || {}; @@ -65,6 +71,9 @@ export default create({ }, methods: { + resetMessageValues(messages) { + return (messages || []).map(() => ({ value: '' })); + }, getType(message) { if (+message.multiple === 1) { return 'textarea'; diff --git a/test/unit/specs/sku.spec.js b/test/unit/specs/sku.spec.js index 6d2947dee..79aa4867d 100644 --- a/test/unit/specs/sku.spec.js +++ b/test/unit/specs/sku.spec.js @@ -219,15 +219,17 @@ describe('Sku', (done) => { }); it('should not render sku group when none_sku is true', (done) => { - const newData = Object.assign({}, data); - newData.sku.none_sku = true; // eslint-disable-line + const newSku = { + ...data.sku, + none_sku: true + }; wrapper = mount(Sku, { attachToDocument: true, propsData: { value: false, - sku: newData.sku, - goodsId: newData.goods_id, + sku: newSku, + goodsId: data.goods_id, goods: goods } }); @@ -364,4 +366,35 @@ describe('Sku', (done) => { }); }); }); + + it('should reset values when sku change', (done) => { + wrapper = mount(Sku, { + attachToDocument: true, + propsData: { + value: true, + sku: data.sku, + goodsId: data.goods_id, + goods: goods, + resetStepperOnHide: true, + resetSelectedSkuOnHide: true + } + }); + + const newSku = { + ...data.sku, + tree: [], + list: [], + messages: [], + none_sku: true + }; + + wrapper.vm.sku = newSku; + const skuMessages = wrapper.find(Sku.SkuMessages)[0]; + + wrapper.vm.$nextTick(() => { + expect(wrapper.vm.selectedSku).to.be.empty; + expect(skuMessages.vm.messageValues).to.be.empty; + done(); + }); + }); });