弱网核销功能

This commit is contained in:
2026-07-12 12:00:55 +08:00
parent de01d36cdb
commit 06b1cb22e0
24 changed files with 1434 additions and 42 deletions
+26
View File
@@ -7,6 +7,9 @@ import {
allocateBenefitCoupons,
calcBenefitSummary,
orderTabToStatuses,
classifyRedeemClientError,
generateRedeemPendingNo,
REDEEM_WEAKNET_FAIL_THRESHOLD,
} from './index';
describe('calcBenefitAmount', () => {
@@ -120,3 +123,26 @@ describe('calcBenefitSummary', () => {
});
});
});
describe('classifyRedeemClientError', () => {
it('treats 5xx and network messages as NETWORK', () => {
expect(classifyRedeemClientError({ status: 502 })).toBe('NETWORK');
expect(classifyRedeemClientError({ message: 'Failed to fetch' })).toBe('NETWORK');
expect(classifyRedeemClientError({ message: '网络超时' })).toBe('NETWORK');
});
it('treats business messages as BUSINESS', () => {
expect(classifyRedeemClientError({ status: 400, message: '核销码无效或已过期' })).toBe('BUSINESS');
expect(classifyRedeemClientError({ message: '余额不足' })).toBe('BUSINESS');
});
});
describe('generateRedeemPendingNo', () => {
it('uses RP prefix', () => {
expect(generateRedeemPendingNo().startsWith('RP')).toBe(true);
});
it('exports weaknet threshold of 5', () => {
expect(REDEEM_WEAKNET_FAIL_THRESHOLD).toBe(5);
});
});