物流对账单

This commit is contained in:
2026-07-26 09:51:33 +08:00
parent 2b7ef65cce
commit 19cb312465
21 changed files with 1909 additions and 27 deletions
+32
View File
@@ -2,6 +2,7 @@ import { describe, expect, it } from 'vitest';
import {
calcBenefitAmount,
calcRedeemSettleAmount,
calcLogisticsFeeByBottles,
validateMinPurchase,
validateRedeemAmount,
allocateBenefitCoupons,
@@ -67,6 +68,37 @@ describe('calcRedeemSettleAmount', () => {
});
});
describe('calcLogisticsFeeByBottles', () => {
const xfx = {
baseBottles: 2,
baseFee: 6,
extraBottleFee: 2,
boxBottles: 6,
boxFee: 14,
};
it('charges base for 1~2 bottles', () => {
expect(calcLogisticsFeeByBottles(1, xfx)).toBe(6);
expect(calcLogisticsFeeByBottles(2, xfx)).toBe(6);
});
it('adds extra bottle fee', () => {
expect(calcLogisticsFeeByBottles(3, xfx)).toBe(8);
expect(calcLogisticsFeeByBottles(5, xfx)).toBe(12);
});
it('uses box fee for full boxes', () => {
expect(calcLogisticsFeeByBottles(6, xfx)).toBe(14);
expect(calcLogisticsFeeByBottles(12, xfx)).toBe(28);
});
it('combines boxes with remainder ladder', () => {
expect(calcLogisticsFeeByBottles(7, xfx)).toBe(20);
expect(calcLogisticsFeeByBottles(8, xfx)).toBe(20);
expect(calcLogisticsFeeByBottles(9, xfx)).toBe(22);
});
});
describe('allocateBenefitCoupons', () => {
const coupons = [
{ id: '1', balance: 300, createdAt: 1 },