forked from wangziqi/gongxue-base
feat: deduct personal expenses from deposit refunds
This commit is contained in:
@@ -2,9 +2,10 @@ import { DepositsService } from './deposits.service';
|
||||
import { Deposit } from '../entities/deposit.entity';
|
||||
|
||||
describe('DepositsService — direct refund', () => {
|
||||
it('refunds the full available balance and stores audit fields', async () => {
|
||||
it('deducts unbilled personal expenses before refunding the remaining balance', async () => {
|
||||
const deposit = {
|
||||
id: 1,
|
||||
studentId: 10,
|
||||
amount: 500,
|
||||
status: 'paid',
|
||||
} as Deposit;
|
||||
@@ -12,7 +13,17 @@ describe('DepositsService — direct refund', () => {
|
||||
findOne: jest.fn().mockResolvedValue(deposit),
|
||||
save: jest.fn().mockImplementation(async (value: Deposit) => value),
|
||||
};
|
||||
const service = new DepositsService(repo as never, {} as never, {} as never);
|
||||
const personalExpenseRepo = {
|
||||
createQueryBuilder: jest.fn().mockReturnValue({
|
||||
select: jest.fn().mockReturnThis(),
|
||||
addSelect: jest.fn().mockReturnThis(),
|
||||
where: jest.fn().mockReturnThis(),
|
||||
andWhere: jest.fn().mockReturnThis(),
|
||||
groupBy: jest.fn().mockReturnThis(),
|
||||
getRawMany: jest.fn().mockResolvedValue([{ studentId: 10, amount: '120' }]),
|
||||
}),
|
||||
};
|
||||
const service = new DepositsService(repo as never, {} as never, {} as never, personalExpenseRepo as never);
|
||||
|
||||
const result = await service.refund(
|
||||
1,
|
||||
@@ -23,7 +34,9 @@ describe('DepositsService — direct refund', () => {
|
||||
expect(result).toMatchObject({
|
||||
refundDate: '2026-07-13',
|
||||
amount: 0,
|
||||
refundAmount: 500,
|
||||
refundAmount: 380,
|
||||
deductionAmount: 120,
|
||||
deductionReason: '自动扣除个人附加费用 ¥120.00',
|
||||
notes: '退还剩余押金',
|
||||
status: 'refunded',
|
||||
refundedBy: 42,
|
||||
|
||||
Reference in New Issue
Block a user