Files
dukang/server/dukang-api/src/modules/settlement/wecom-bill-digest.test.ts
T
2026-09-08 10:07:34 +08:00

69 lines
2.2 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import {
filterNonZeroWecomBills,
formatPartnerBillWecomBlock,
formatWecomKvTable,
} from './wecom-bill-digest';
describe('filterNonZeroWecomBills', () => {
it('drops zero-amount bills', () => {
expect(
filterNonZeroWecomBills([
{ amount: 0, name: 'zero' },
{ amount: 12.5, name: 'keep' },
{ amount: 0.0, name: 'also-zero' },
]).map((r) => r.name),
).toEqual(['keep']);
});
});
describe('formatWecomKvTable', () => {
it('uses the title as table header and fields as rows', () => {
const md = formatWecomKvTable('郑州某某商贸-张三', [
['账期', '2026-07-27 ~ 2026-08-02'],
['累计金额', '¥120.00'],
]);
expect(md).toBe(
[
'| 郑州某某商贸-张三 | |',
'| :--- | ---: |',
'| 账期 | 2026-07-27 ~ 2026-08-02 |',
'| 累计金额 | ¥120.00 |',
].join('\n'),
);
});
});
describe('formatPartnerBillWecomBlock', () => {
it('renders partner company-name header and settlement fields', () => {
const md = formatPartnerBillWecomBlock({
partnerLabel: '郑州某某商贸-张三',
period: '2026-07-27 ~ 2026-08-02',
orderCount: 8,
orderAmount: 1000,
orderCommission: 100,
redeemCount: 12,
redeemAmount: 200,
redeemCommission: 20,
amount: 120,
bank: {
bankAccountName: '张三',
bankAccountNo: '6222000011112222',
bankBranch: '郑州支行',
},
});
expect(md).toContain('| 郑州某某商贸-张三 | |');
expect(md).toContain('| 账期 | 2026-07-27 ~ 2026-08-02 |');
expect(md).toContain('| 订单数量 | 8 |');
expect(md).toContain('| 订单金额 | ¥1000.00 |');
expect(md).toContain('| 订单佣金 | ¥100.00 |');
expect(md).toContain('| 核销单数量 | 12 |');
expect(md).toContain('| 核销金额 | ¥200.00 |');
expect(md).toContain('| 核销佣金 | ¥20.00 |');
expect(md).toContain('| 累计金额 | ¥120.00 |');
expect(md).toContain('| 收款人 | 张三 |');
expect(md).toContain('| 收款银行账号 | 6222000011112222 |');
expect(md).toContain('| 开户行 | 郑州支行 |');
});
});