Merge remote-tracking branch 'main/dev' into dev

This commit is contained in:
陈嘉涵
2017-09-11 09:43:57 +08:00
22 changed files with 1981 additions and 222 deletions

198
test/unit/mock/sku.js Normal file
View File

@@ -0,0 +1,198 @@
/* eslint-disable */
var _global = {
"kdt_id": 55,
"user_id": 4674509,
"offline_id": 0,
"activity_alias": "",
"sku": {
"tree": [{
"k": "\u989c\u8272",
"k_id": "1",
"v": [{
"id": "30349",
"name": "\u5929\u84dd\u8272",
"imgUrl": "upload_files\/2017\/02\/21\/FjKTOxjVgnUuPmHJRdunvYky9OHP.jpg"
}],
"k_s": "s1"
}, {
"k": "\u5c3a\u5bf8",
"k_id": "2",
"v": [{
"id": "1193",
"name": "1"
}, {
"id": "1194",
"name": "2"
}],
"k_s": "s2"
}],
"list": [{
"id": 2257,
"price": 100,
"discount": 100,
"code": "",
"s1": "30349",
"s2": "1193",
"s3": "0",
"s4": "0",
"s5": "0",
"extend": null,
"kdt_id": 55,
"discount_price": 0,
"stock_num": 111,
"stock_mode": 0,
"is_sell": null,
"combin_sku": false,
"goods_id": 946755
}, {
"id": 2258,
"price": 100,
"discount": 100,
"code": "",
"s1": "30349",
"s2": "1194",
"s3": "0",
"s4": "0",
"s5": "0",
"extend": null,
"kdt_id": 55,
"discount_price": 0,
"stock_num": 6,
"stock_mode": 0,
"is_sell": null,
"combin_sku": false,
"goods_id": 946755
}],
"price": "1.00",
"stock_num": 227,
"collection_id": 2261,
"collection_price": 0,
"none_sku": false,
"sold_num": 0,
"min_price": "1.00",
"max_price": "1.00",
"messages": [{
"datetime": "0",
"disable_multiple": false,
"disable": false,
"multiple": "0",
"name": "\u7559\u8a001",
"disable_required": false,
"disable_edit_name": false,
"type": "text",
"disable_delete": false,
"disable_type": false,
"required": "1"
}, {
"datetime": "0",
"disable_multiple": false,
"disable": false,
"multiple": 0,
"name": "\u7559\u8a002",
"disable_required": false,
"disable_edit_name": false,
"type": "id_no",
"disable_delete": false,
"disable_type": false,
"required": 0
}, {
"datetime": "0",
"disable_multiple": false,
"disable": false,
"multiple": 0,
"name": "\u7559\u8a003",
"disable_required": false,
"disable_edit_name": false,
"type": "image",
"disable_delete": false,
"disable_type": false,
"required": 0
}, {
"datetime": "0",
"disable_multiple": false,
"disable": false,
"multiple": 1,
"name": "\u7559\u8a004",
"disable_required": false,
"disable_edit_name": false,
"type": "text",
"disable_delete": false,
"disable_type": false,
"required": 0
}, {
"datetime": "0",
"disable_multiple": false,
"disable": false,
"name": "\u6570\u5b57",
"multiple": 0,
"disable_required": false,
"disable_edit_name": false,
"type": "tel",
"disable_delete": false,
"disable_type": false,
"required": 0
}, {
"datetime": "0",
"disable_multiple": false,
"disable": false,
"name": "\u90ae\u4ef6",
"multiple": 0,
"disable_required": false,
"disable_edit_name": false,
"type": "email",
"disable_delete": false,
"disable_type": false,
"required": 0
}, {
"datetime": "0",
"disable_multiple": false,
"disable": false,
"name": "\u65e5\u671f",
"multiple": 0,
"disable_required": false,
"disable_edit_name": false,
"type": "date",
"disable_delete": false,
"disable_type": false,
"required": 0
}, {
"datetime": "0",
"disable_multiple": false,
"disable": false,
"name": "\u65f6\u95f4\u542b\u65e5\u671f",
"multiple": 0,
"disable_required": false,
"disable_edit_name": false,
"type": "time",
"disable_delete": false,
"disable_type": false,
"required": 0
}, {
"datetime": "0",
"disable_multiple": false,
"disable": false,
"name": "\u65f6\u95f4",
"multiple": 0,
"disable_required": false,
"disable_edit_name": false,
"type": "time",
"disable_delete": false,
"disable_type": false,
"required": 0
}],
"hide_stock": false
},
"goods_id": "946755",
"alias": "2oml0r0n5vytj",
"quota": 15,
"is_virtual": "0",
"quota_used": 2,
"goods_info": {
"title": "测试商品",
"picture": ["https:\/\/img.yzcdn.cn\/upload_files\/2017\/03\/16\/Fs_OMbSFPa183sBwvG_94llUYiLa.jpeg?imageView2\/2\/w\/100\/h\/100\/q\/75\/format\/jpg"],
"price": 1,
"origin": ""
}
};
export default _global;

156
test/unit/specs/sku.spec.js Normal file
View File

@@ -0,0 +1,156 @@
import Sku from 'packages/sku';
import { mount } from 'avoriaz';
import { DOMChecker } from '../utils';
import data from '../mock/sku';
const { skuHelper } = Sku;
const goods = data.goods_info;
goods.picture = goods.picture[0];
describe('Sku', (done) => {
let wrapper;
afterEach(() => {
wrapper && wrapper.destroy();
});
it('default', (done) => {
wrapper = mount(Sku, {
attachToDocument: true,
propsData: {
value: true,
sku: data.sku,
goods: goods,
resetStepperOnHide: true
}
});
DOMChecker(wrapper, {
text: {
'.van-sku__goods-name': goods.title,
'.van-sku__price-num': '1.00'
},
value: {
'.van-stepper__input': '1'
},
src: {
'.van-sku__goods-img': 'https://img.yzcdn.cn/upload_files/2017/02/21/FjKTOxjVgnUuPmHJRdunvYky9OHP.jpg!100x100.jpg'
}
});
// 测试默认选中
const selectedSku = skuHelper.getSelectedSkuValues(data.sku.tree, wrapper.vm.selectedSku);
expect(selectedSku[0].id).to.equal('30349');
// 关闭sku弹层
const closeCallback = sinon.spy();
const closeIcon = wrapper.find('.van-sku__close-icon')[0];
wrapper.vm.$on('sku-close', closeCallback);
closeIcon.trigger('click');
wrapper.vm.$nextTick(() => {
expect(closeCallback.calledOnce).to.be.true;
done();
});
});
it('click buy and addCart', (done) => {
wrapper = mount(Sku, {
attachToDocument: true,
propsData: {
value: true,
sku: data.sku,
goods: goods
}
});
const buyCallback = sinon.spy();
const addCartCallback = sinon.spy();
const buyBtn = wrapper.find('.van-sku__buy-btn')[0];
const addCartBtn = wrapper.find('.van-sku__add-cart-btn')[0];
wrapper.vm.$on('buy-clicked', buyCallback);
wrapper.vm.$on('add-cart', addCartCallback);
// 未选择完整规格时弹出toast提示
buyBtn.trigger('click');
wrapper.vm.$nextTick(() => {
const toastText = document.querySelector('.van-toast__text');
expect(toastText.textContent).to.equal('请选择完整的规格');
expect(buyCallback.calledOnce).to.be.false;
// 选择完整规格时未填留言时弹出toast提示。
wrapper.find('.van-sku-row-group')[1].find('.van-sku-row__item')[0].trigger('click');
buyBtn.trigger('click');
wrapper.vm.$nextTick(() => {
expect(toastText.textContent).to.equal('请填写留言1');
expect(buyCallback.calledOnce).to.be.false;
// 触发buy-clicked事件
const requiredMessage = wrapper.find('.van-cell--required .van-field__control')[0];
requiredMessage.element.value = 'test';
requiredMessage.trigger('input');
wrapper.vm.$nextTick(() => {
buyBtn.trigger('click');
addCartBtn.trigger('click');
expect(buyCallback.calledOnce).to.be.true;
expect(addCartCallback.calledOnce).to.be.true;
done();
});
});
});
});
it('change step value', (done) =>{
wrapper = mount(Sku, {
attachToDocument: true,
propsData: {
value: true,
sku: data.sku,
goods: goods,
quota: data.quota,
quotaUsed: data.quota_used
}
});
// 点击减号
const minusBtn = wrapper.find('.van-stepper__minus')[0];
minusBtn.trigger('click');
wrapper.vm.$nextTick(() => {
const toastText = document.querySelector('.van-toast__text');
expect(toastText.textContent).to.equal('至少选择一件');
// 手动修改购买数量
const stepperInput = wrapper.find('.van-stepper__input')[0];
stepperInput.element.value = 20;
stepperInput.trigger('input');
wrapper.vm.$nextTick(() => {
expect(+stepperInput.element.value).to.equal(data.quota - data.quota_used);
// 达到购买上限时,点击加号
const plusBtn = wrapper.find('.van-stepper__plus')[0];
plusBtn.trigger('click');
wrapper.vm.$nextTick(() => {
expect(toastText.textContent).to.equal(`限购${data.quota}件,您已购买${data.quota_used}`);
done();
});
});
});
});
it('test none sku', (done) => {
data.sku.none_sku = true; // eslint-disable-line
wrapper = mount(Sku, {
attachToDocument: true,
propsData: {
value: false,
sku: data.sku,
goods: goods
}
});
wrapper.vm.value = true;
wrapper.vm.$nextTick(() => {
expect(wrapper.find('.van-sku-group-container').length).to.equal(0);
done();
});
});
});