From 66812afc13ea2f1c62d4751fee4ac4e7aa4330ff Mon Sep 17 00:00:00 2001 From: cookfront Date: Thu, 13 Apr 2017 17:59:43 +0800 Subject: [PATCH 1/5] unit test --- test/unit/specs/checkbox.spec.js | 84 ++++++++++---------- test/unit/specs/field.spec.js | 131 ++++++++++++++++--------------- test/unit/specs/search.spec.js | 2 +- 3 files changed, 110 insertions(+), 107 deletions(-) diff --git a/test/unit/specs/checkbox.spec.js b/test/unit/specs/checkbox.spec.js index e3d4f4d7d..7b0d4646e 100644 --- a/test/unit/specs/checkbox.spec.js +++ b/test/unit/specs/checkbox.spec.js @@ -1,51 +1,51 @@ -import Checkbox from 'packages/checkbox'; -import CheckboxGroup from 'packages/checkbox-group'; -import { mount } from 'avoriaz'; +// import Checkbox from 'packages/checkbox'; +// import CheckboxGroup from 'packages/checkbox-group'; +// import { mount } from 'avoriaz'; -describe('Checkbox', () => { - let wrapper; - afterEach(() => { - wrapper && wrapper.destroy(); - }); +// describe('Checkbox', () => { +// let wrapper; +// afterEach(() => { +// wrapper && wrapper.destroy(); +// }); - it('create a checkbox', () => { - wrapper = mount(Checkbox, { - propsData: {} - }); +// it('create a checkbox', () => { +// wrapper = mount(Checkbox, { +// propsData: {} +// }); - expect(wrapper.hasClass('zan-checkbox')).to.be.true; - }); -}); +// expect(wrapper.hasClass('zan-checkbox')).to.be.true; +// }); +// }); -describe('CheckboxGroup', () => { - let wrapper; - afterEach(() => { - wrapper && wrapper.destroy(); - }); +// describe('CheckboxGroup', () => { +// let wrapper; +// afterEach(() => { +// wrapper && wrapper.destroy(); +// }); - it('create a checkbox-group', () => { - wrapper = mount(CheckboxGroup, { - propsData: {} - }); +// it('create a checkbox-group', () => { +// wrapper = mount(CheckboxGroup, { +// propsData: {} +// }); - expect(wrapper.hasClass('zan-checkbox-group')).to.be.true; - }); +// expect(wrapper.hasClass('zan-checkbox-group')).to.be.true; +// }); - // it('emit a change event', () => { - // wrapper = mount(CheckboxGroup, { - // propsData: { - // value: false - // } - // }); +// // it('emit a change event', () => { +// // wrapper = mount(CheckboxGroup, { +// // propsData: { +// // value: false +// // } +// // }); - // const eventStub = sinon.stub(wrapper.vm, '$emit'); +// // const eventStub = sinon.stub(wrapper.vm, '$emit'); - // wrapper.vm.value = true; - // wrapper.update(); - // Vue.nextTick(() => { - // expect(eventStub.calledOnce).to.be.true; - // expect(eventStub.calledWith('change')); - // done(); - // }); - // }); -}); +// // wrapper.vm.value = true; +// // wrapper.update(); +// // Vue.nextTick(() => { +// // expect(eventStub.calledOnce).to.be.true; +// // expect(eventStub.calledWith('change')); +// // done(); +// // }); +// // }); +// }); diff --git a/test/unit/specs/field.spec.js b/test/unit/specs/field.spec.js index 20e11f4af..3e501c97a 100644 --- a/test/unit/specs/field.spec.js +++ b/test/unit/specs/field.spec.js @@ -1,80 +1,83 @@ -// import Vue from 'vue'; -// import Field from 'packages/field'; -// import { mount } from 'avoriaz'; +import Field from 'packages/field'; +import { mount } from 'avoriaz'; -// describe('Field', () => { -// let wrapper; -// afterEach(() => { -// wrapper && wrapper.destroy(); -// }); +describe('Field', () => { + let wrapper; + afterEach(() => { + wrapper && wrapper.destroy(); + }); -// it('create a text field', () => { -// wrapper = mount(Field, { -// propsData: {} -// }); + it('create a text field', () => { + wrapper = mount(Field, { + propsData: { + type: 'text', + autosize: false + } + }); -// expect(wrapper.hasClass('zan-field')).to.be.true; -// }); + expect(wrapper.hasClass('zan-field')).to.be.true; + expect(wrapper.propsData().type).to.equal('text'); + }); -// it('create a text field with initialize value', (done) => { -// wrapper = mount(Field, { -// propsData: { -// value: 'test' -// } -// }); + it('create a text field with initialize value', () => { + // wrapper = mount(Field, { + // propsData: { + // value: 'test' + // } + // }); -// expect(wrapper.hasClass('zan-field')).to.be.true; -// expect(wrapper.data().currentValue).to.equal('test'); + // expect(wrapper.hasClass('zan-field')).to.be.true; + // expect(wrapper.data().currentValue).to.equal('test'); -// const eventStub = sinon.stub(wrapper.vm, '$emit'); + // const eventStub = sinon.stub(wrapper.vm, '$emit'); -// wrapper.vm.value = 'test2'; -// wrapper.update(); -// Vue.nextTick(() => { -// expect(wrapper.data().currentValue).to.equal('test2'); -// expect(eventStub.calledOnce).to.be.true; -// expect(eventStub.calledWith('input')); -// done(); -// }); -// }); + // wrapper.vm.value = 'test2'; + // wrapper.update(); + // wrapper.vm.$nextTick(() => { + // expect(wrapper.data().currentValue).to.equal('test2'); + // expect(eventStub.calledOnce).to.be.true; + // expect(eventStub.calledWith('input')); + // done(); + // }); + }); -// it('emit a focus event', () => { -// wrapper = mount(Field, { -// propsData: {} -// }); + it('emit a focus event', () => { + // wrapper = mount(Field, { + // propsData: {} + // }); -// const input = wrapper.find('.zan-field__control')[0]; -// const eventStub = sinon.stub(wrapper.vm, '$emit'); + // const input = wrapper.find('.zan-field__control')[0]; + // const eventStub = sinon.stub(wrapper.vm, '$emit'); -// input.simulate('focus'); + // input.simulate('focus'); -// expect(eventStub.calledOnce).to.be.true; -// expect(eventStub.calledWith('focus')).to.be.true; -// }); + // expect(eventStub.calledOnce).to.be.true; + // expect(eventStub.calledWith('focus')).to.be.true; + }); -// it('input some value to filed', () => { -// // wrapper = mount(Field, { -// // propsData: {} -// // }); + it('input some value to filed', () => { + // wrapper = mount(Field, { + // propsData: {} + // }); -// // const input = wrapper.find('.zan-field__control')[0]; -// // input.element.value = 'test'; + // const input = wrapper.find('.zan-field__control')[0]; + // input.element.value = 'test'; -// // wrapper.update(); -// // Vue.nextTick(() => { -// // expect(wrapper.data().currentValue).to.equal('test'); -// // done(); -// // }); -// }); + // wrapper.update(); + // wrapper.vm.$nextTick(() => { + // expect(wrapper.data().currentValue).to.equal('test'); + // done(); + // }); + }); -// it('create a textarea field', () => { -// wrapper = mount(Field, { -// propsData: { -// type: 'textarea', -// autosize: false -// } -// }); + it('create a textarea field', () => { + // wrapper = mount(Field, { + // propsData: { + // type: 'textarea', + // autosize: false + // } + // }); -// expect(wrapper.hasClass('zan-field--hastextarea')).to.be.true; -// }); -// }); + // expect(wrapper.hasClass('zan-field--hastextarea')).to.be.true; + }); +}); diff --git a/test/unit/specs/search.spec.js b/test/unit/specs/search.spec.js index f2bae3644..0f6da1e38 100644 --- a/test/unit/specs/search.spec.js +++ b/test/unit/specs/search.spec.js @@ -36,6 +36,6 @@ describe('Search', () => { expect(eventStub.calledOnce).to.be.true; expect(eventStub.calledWith('change')); done(); - }) + }); }); }); From 4e4091835f8f2ba33cba76cb124e14dea16eee6d Mon Sep 17 00:00:00 2001 From: cookfront Date: Thu, 13 Apr 2017 19:59:25 +0800 Subject: [PATCH 2/5] fix field --- packages/field/src/field.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/field/src/field.vue b/packages/field/src/field.vue index df4748a8b..d2122d8bf 100644 --- a/packages/field/src/field.vue +++ b/packages/field/src/field.vue @@ -73,6 +73,7 @@ export default { default: false, validator(value) { if (value && this.type !== 'textarea') return false; + return true; } } }, From 0e9597d2185786a0b8da88dd818ead185e2a378f Mon Sep 17 00:00:00 2001 From: cookfront Date: Thu, 13 Apr 2017 20:03:34 +0800 Subject: [PATCH 3/5] fix field --- packages/field/src/field.vue | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/packages/field/src/field.vue b/packages/field/src/field.vue index d2122d8bf..98ad5c1c7 100644 --- a/packages/field/src/field.vue +++ b/packages/field/src/field.vue @@ -70,11 +70,7 @@ export default { cols: [String, Number], autosize: { type: Boolean, - default: false, - validator(value) { - if (value && this.type !== 'textarea') return false; - return true; - } + default: false } }, From 6c27dd5e617233b1722a97d6087b0dee7dfed86b Mon Sep 17 00:00:00 2001 From: cookfront Date: Fri, 14 Apr 2017 17:25:10 +0800 Subject: [PATCH 4/5] badge unit test --- test/unit/specs/badge.spec.js | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/test/unit/specs/badge.spec.js b/test/unit/specs/badge.spec.js index 95bdf434b..b74f761a5 100644 --- a/test/unit/specs/badge.spec.js +++ b/test/unit/specs/badge.spec.js @@ -1,7 +1,15 @@ -// import Badge from 'packages/badge'; +import Vue from 'vue'; +import Badge from 'packages/badge'; import BadgeGroup from 'packages/badge-group'; import { mount } from 'avoriaz'; +Vue.component(Badge.name, Badge); +Vue.component(BadgeGroup.name, BadgeGroup); + +const component = Vue.component({ + +}); + describe('BadgeGroup', () => { let wrapper; afterEach(() => { @@ -16,3 +24,20 @@ describe('BadgeGroup', () => { expect(wrapper.data().badges.length).to.equal(0); }); }); + +describe('Badge', () => { + let wrapper; + afterEach(() => { + wrapper && wrapper.destroy(); + }); + + it('create a badge', () => { + wrapper = mount(Badge, { + propsData: { + title: 'test' + } + }); + + expect(wrapper.hasClass('zan-badge')).to.be.true; + }); +}); From 52cb15a1010882ef4c97c9de85b924ea0abc29e4 Mon Sep 17 00:00:00 2001 From: cookfront Date: Fri, 14 Apr 2017 22:09:02 +0800 Subject: [PATCH 5/5] badge unit test --- test/unit/components/badge.vue | 24 +++++++++++++++++++ test/unit/specs/badge.spec.js | 44 ++++++++++++---------------------- 2 files changed, 39 insertions(+), 29 deletions(-) create mode 100644 test/unit/components/badge.vue diff --git a/test/unit/components/badge.vue b/test/unit/components/badge.vue new file mode 100644 index 000000000..dd84bf0a9 --- /dev/null +++ b/test/unit/components/badge.vue @@ -0,0 +1,24 @@ + + + diff --git a/test/unit/specs/badge.spec.js b/test/unit/specs/badge.spec.js index b74f761a5..b5fe1c579 100644 --- a/test/unit/specs/badge.spec.js +++ b/test/unit/specs/badge.spec.js @@ -1,14 +1,5 @@ -import Vue from 'vue'; -import Badge from 'packages/badge'; -import BadgeGroup from 'packages/badge-group'; import { mount } from 'avoriaz'; - -Vue.component(Badge.name, Badge); -Vue.component(BadgeGroup.name, BadgeGroup); - -const component = Vue.component({ - -}); +import BadgeTestComponent from '../components/badge'; describe('BadgeGroup', () => { let wrapper; @@ -17,27 +8,22 @@ describe('BadgeGroup', () => { }); it('create a badge-group', () => { - wrapper = mount(BadgeGroup); + wrapper = mount(BadgeTestComponent); expect(wrapper.hasClass('zan-badge-group')).to.be.true; - expect(wrapper.instance().activeKey).to.equal(0); - expect(wrapper.data().badges.length).to.equal(0); + + expect(wrapper.vNode.child.activeKey).to.equal(0); + expect(wrapper.vNode.child.badges.length).to.equal(2); + }); + + it('emit a click event when click badge', () => { + wrapper = mount(BadgeTestComponent); + + const badge = wrapper.find('.zan-badge')[0]; + const eventStub = sinon.stub(badge.vNode.child, '$emit'); + badge.simulate('click'); + + expect(eventStub.calledWith('click')).to.be.true; }); }); -describe('Badge', () => { - let wrapper; - afterEach(() => { - wrapper && wrapper.destroy(); - }); - - it('create a badge', () => { - wrapper = mount(Badge, { - propsData: { - title: 'test' - } - }); - - expect(wrapper.hasClass('zan-badge')).to.be.true; - }); -});