cc0c0a6ef8
同城 MANUAL/ZZXFX 按小飞侠价规计费,路由查询回退仓配凭证;HQ 配送单补商品、用户和收货地址。门店核销回跳与小程序核销码一并带上。 Co-authored-by: Cursor <cursoragent@cursor.com>
83 lines
2.0 KiB
TypeScript
83 lines
2.0 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
import { DEFAULT_XFX_LOGISTICS_PRICING } from '@dukang/shared-types';
|
|
import { calcDeliveryFreightAmount } from './delivery-freight.util';
|
|
|
|
describe('calcDeliveryFreightAmount', () => {
|
|
it('瓶装按小飞侠默认计价:2瓶6元', () => {
|
|
expect(
|
|
calcDeliveryFreightAmount({
|
|
quantity: 2,
|
|
bottlesPerUnit: 1,
|
|
deliveryType: 'LOCAL',
|
|
provider: 'XFX',
|
|
}),
|
|
).toBe(6);
|
|
});
|
|
|
|
it('箱装先换算瓶数:1箱6瓶=14元', () => {
|
|
expect(
|
|
calcDeliveryFreightAmount({
|
|
quantity: 1,
|
|
bottlesPerUnit: 6,
|
|
deliveryType: 'LOCAL',
|
|
provider: 'XFX',
|
|
}),
|
|
).toBe(14);
|
|
});
|
|
|
|
it('现场提货不计运费', () => {
|
|
expect(
|
|
calcDeliveryFreightAmount({
|
|
quantity: 2,
|
|
bottlesPerUnit: 1,
|
|
deliveryType: 'ON_SITE_PICKUP',
|
|
provider: 'XFX',
|
|
}),
|
|
).toBeNull();
|
|
});
|
|
|
|
it('无承运商计价时返回 null;有自定义规则则用之', () => {
|
|
expect(
|
|
calcDeliveryFreightAmount({
|
|
quantity: 2,
|
|
bottlesPerUnit: 1,
|
|
deliveryType: 'CROSS_CITY',
|
|
provider: 'LOGISTICS',
|
|
}),
|
|
).toBeNull();
|
|
|
|
expect(
|
|
calcDeliveryFreightAmount({
|
|
quantity: 2,
|
|
bottlesPerUnit: 1,
|
|
deliveryType: 'CROSS_CITY',
|
|
provider: 'LOGISTICS',
|
|
pricing: { ...DEFAULT_XFX_LOGISTICS_PRICING },
|
|
}),
|
|
).toBe(6);
|
|
});
|
|
|
|
it('同城即使 provider=MANUAL 也按小飞侠默认计价', () => {
|
|
expect(
|
|
calcDeliveryFreightAmount({
|
|
quantity: 2,
|
|
bottlesPerUnit: 1,
|
|
deliveryType: 'LOCAL',
|
|
provider: 'MANUAL',
|
|
}),
|
|
).toBe(6);
|
|
});
|
|
|
|
it('城市小飞侠编码 ZZXFX 使用默认计价', () => {
|
|
expect(
|
|
calcDeliveryFreightAmount({
|
|
quantity: 4,
|
|
bottlesPerUnit: 1,
|
|
deliveryType: 'LOCAL',
|
|
provider: 'MANUAL',
|
|
providerCode: 'ZZXFX',
|
|
}),
|
|
).toBe(10);
|
|
});
|
|
});
|