refactor(deposits): remove inline installment creation
This commit is contained in:
19
apps/server/src/deposits/dto/deposit.dto.spec.ts
Normal file
19
apps/server/src/deposits/dto/deposit.dto.spec.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import 'reflect-metadata';
|
||||
import { validate } from 'class-validator';
|
||||
import { CreateDepositDto } from './deposit.dto';
|
||||
|
||||
describe('CreateDepositDto boundaries', () => {
|
||||
it('removes inline installments because they are managed after deposit creation', async () => {
|
||||
const dto = Object.assign(new CreateDepositDto(), {
|
||||
studentId: 1,
|
||||
amount: 500,
|
||||
paidDate: '2026-07-13',
|
||||
installments: [{ amount: 250, dueDate: '2026-08-01' }],
|
||||
});
|
||||
|
||||
await validate(dto, { whitelist: true });
|
||||
|
||||
expect(dto).toMatchObject({ studentId: 1, amount: 500, paidDate: '2026-07-13' });
|
||||
expect(dto).not.toHaveProperty('installments');
|
||||
});
|
||||
});
|
||||
@@ -1,5 +1,4 @@
|
||||
import { IsInt, IsNumber, IsString, IsOptional, ValidateNested } from 'class-validator';
|
||||
import { Type } from 'class-transformer';
|
||||
import { IsInt, IsNumber, IsString, IsOptional } from 'class-validator';
|
||||
|
||||
export class CreateDepositDto {
|
||||
@IsInt()
|
||||
@@ -16,16 +15,6 @@ export class CreateDepositDto {
|
||||
notes?: string;
|
||||
}
|
||||
|
||||
export class CreateInstallmentDto {
|
||||
@IsNumber()
|
||||
amount: number;
|
||||
|
||||
@IsString()
|
||||
dueDate: string;
|
||||
}
|
||||
|
||||
|
||||
|
||||
export class RefundDepositDto {
|
||||
@IsString()
|
||||
refundDate: string;
|
||||
@@ -42,9 +31,3 @@ export class RefundDepositDto {
|
||||
@IsString()
|
||||
notes?: string;
|
||||
}
|
||||
export class CreateDepositWithInstallmentsDto extends CreateDepositDto {
|
||||
@IsOptional()
|
||||
@ValidateNested({ each: true })
|
||||
@Type(() => CreateInstallmentDto)
|
||||
installments?: CreateInstallmentDto[];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user