diff --git a/packages/zanui-css/assets/icons.sketch b/packages/zanui-css/assets/icons.sketch index 6040a80f9..bba3bf5b7 100644 Binary files a/packages/zanui-css/assets/icons.sketch and b/packages/zanui-css/assets/icons.sketch differ diff --git a/packages/zanui-css/scripts/fount-config.js b/packages/zanui-css/scripts/fount-config.js index f0bf9e89c..7b5c4f474 100644 --- a/packages/zanui-css/scripts/fount-config.js +++ b/packages/zanui-css/scripts/fount-config.js @@ -149,6 +149,16 @@ module.exports = { src: '联系人.svg', css: 'contact', 'correct_contour_direction': true + }, + { + keywords: ['wechat'], + src: '微信支付.svg', + css: 'wechat' + }, + { + keywords: ['alipay'], + src: '支付宝.svg', + css: 'alipay' } ] }; diff --git a/test/unit/specs/checkbox.spec.js b/test/unit/specs/checkbox.spec.js index 09ec064f2..ba7853027 100644 --- a/test/unit/specs/checkbox.spec.js +++ b/test/unit/specs/checkbox.spec.js @@ -1,4 +1,6 @@ +import Vue from 'vue'; import Checkbox from 'packages/checkbox'; +import CheckboxGroup from 'packages/checkbox-group'; import { mount } from 'avoriaz'; describe('Checkbox', () => { @@ -7,7 +9,7 @@ describe('Checkbox', () => { wrapper && wrapper.destroy(); }); - it('create', () => { + it('create a checkbox', () => { wrapper = mount(Checkbox, { propsData: {} }); @@ -15,3 +17,36 @@ describe('Checkbox', () => { expect(wrapper.hasClass('zan-checkbox')).to.be.true; }); }); + +describe('CheckboxGroup', () => { + let wrapper; + afterEach(() => { + wrapper && wrapper.destroy(); + }); + + it('create a checkbox-group', () => { + wrapper = mount(CheckboxGroup, { + propsData: {} + }); + + expect(wrapper.hasClass('zan-checkbox-group')).to.be.true; + }); + + it('emit a change event', () => { + wrapper = mount(CheckboxGroup, { + propsData: { + value: false + } + }); + + 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(); + }); + }); +}); diff --git a/test/unit/specs/field.spec.js b/test/unit/specs/field.spec.js index b3ad69cca..a072e0684 100644 --- a/test/unit/specs/field.spec.js +++ b/test/unit/specs/field.spec.js @@ -1,3 +1,4 @@ +import Vue from 'vue'; import Field from 'packages/field'; import { mount } from 'avoriaz'; @@ -7,11 +8,73 @@ describe('Field', () => { wrapper && wrapper.destroy(); }); - it('create', () => { + it('create a text field', () => { wrapper = mount(Field, { propsData: {} }); expect(wrapper.hasClass('zan-field')).to.be.true; }); + + 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'); + + 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(); + }); + }); + + it('emit a focus event', () => { + wrapper = mount(Field, { + propsData: {} + }); + + const input = wrapper.find('.zan-field__control')[0]; + const eventStub = sinon.stub(wrapper.vm, '$emit'); + + input.simulate('focus'); + + expect(eventStub.calledOnce).to.be.true; + expect(eventStub.calledWith('focus')).to.be.true; + }); + + it('input some value to filed', () => { + // wrapper = mount(Field, { + // propsData: {} + // }); + + // const input = wrapper.find('.zan-field__control')[0]; + // input.element.value = 'test'; + + // wrapper.update(); + // Vue.nextTick(() => { + // expect(wrapper.data().currentValue).to.equal('test'); + // done(); + // }); + }); + + it('create a textarea field', () => { + wrapper = mount(Field, { + propsData: { + type: 'textarea', + autosize: false + } + }); + + expect(wrapper.hasClass('zan-field--hastextarea')).to.be.true; + }); }); diff --git a/test/unit/specs/popup.spec.js b/test/unit/specs/popup.spec.js new file mode 100644 index 000000000..1521aa0e6 --- /dev/null +++ b/test/unit/specs/popup.spec.js @@ -0,0 +1,42 @@ +import Vue from 'vue'; +import Popup from 'packages/popup'; +import { mount } from 'avoriaz'; + +describe('Popup', () => { + let wrapper; + afterEach(() => { + wrapper && wrapper.destroy(); + }); + + it('create a popup', () => { + wrapper = mount(Popup, { + propsData: { + position: 'bottom' + } + }); + + expect(wrapper.hasClass('zan-popup')).to.be.true; + expect(wrapper.instance().currentTransition).to.equal('popup-slide-bottom'); + }); + + it('create a show popup', () => { + wrapper = mount(Popup, { + propsData: { + value: true + } + }); + + expect(wrapper.data().currentValue).to.be.true; + + const eventStub = sinon.stub(wrapper.vm, '$emit'); + + wrapper.vm.value = false; + wrapper.update(); + Vue.nextTick(() => { + expect(wrapper.data().currentValue).to.be.true; + expect(eventStub.calledOnce).to.be.true; + expect(eventStub.calledWith('input')); + done(); + }); + }); +});