feat(ops): v4.0.4 开发任务多行与版本状态同步、合伙人/门店删除、账单合伙人列
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
import { describe, expect, it } from 'vitest';
|
||||
import {
|
||||
assertCanDeleteCityPartner,
|
||||
assertCanDeleteStore,
|
||||
validatePartnerCityBinding,
|
||||
validatePartnerCommissionRates,
|
||||
} from './city-partner';
|
||||
@@ -70,3 +72,33 @@ describe('validatePartnerCommissionRates', () => {
|
||||
expect(validatePartnerCommissionRates(0.05, 0.04, 0.08).ok).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('assertCanDeleteCityPartner', () => {
|
||||
it('requires stores to be deleted first', () => {
|
||||
const result = assertCanDeleteCityPartner({ storeCount: 2, orderCount: 0, redeemCount: 0 });
|
||||
expect(result.ok).toBe(false);
|
||||
expect(result.message).toContain('请先删除门店');
|
||||
});
|
||||
|
||||
it('blocks when orders exist', () => {
|
||||
const result = assertCanDeleteCityPartner({ storeCount: 0, orderCount: 1, redeemCount: 0 });
|
||||
expect(result.ok).toBe(false);
|
||||
expect(result.message).toContain('关联订单');
|
||||
});
|
||||
|
||||
it('allows delete when empty', () => {
|
||||
expect(assertCanDeleteCityPartner({ storeCount: 0, orderCount: 0, redeemCount: 0 }).ok).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
describe('assertCanDeleteStore', () => {
|
||||
it('blocks when redeem records exist', () => {
|
||||
const result = assertCanDeleteStore({ orderCount: 0, redeemCount: 3 });
|
||||
expect(result.ok).toBe(false);
|
||||
expect(result.message).toContain('关联核销单');
|
||||
});
|
||||
|
||||
it('allows delete when no orders or redeems', () => {
|
||||
expect(assertCanDeleteStore({ orderCount: 0, redeemCount: 0 }).ok).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user