修复班级归档查询参数转换

This commit is contained in:
2026-07-24 10:05:36 +08:00
parent 13ef357448
commit a272403f27
3 changed files with 25 additions and 0 deletions

View File

@@ -1,5 +1,7 @@
import { ValidationPipe } from '@nestjs/common';
import { ClassesController } from './classes.controller';
import { ClassesService } from './classes.service';
import { QueryClassDto } from './dto/class.dto';
import { OperationLogsService } from '../operation-logs/operation-logs.service';
import { NotificationsService } from '../notifications/notifications.service';
import { CaslAction, SubjectName } from '../authorization';
@@ -94,3 +96,21 @@ describe('ClassesController - class data scope', () => {
expect(service.assertClassAccess).toHaveBeenCalledWith(21, 8, false);
});
});
describe('QueryClassDto - query transformation', () => {
const pipe = new ValidationPipe({ transform: true, whitelist: true, forbidNonWhitelisted: true });
it.each([
['false', false],
['0', false],
['true', true],
['1', true],
])('transforms isArchived=%s to %s', async (input, expected) => {
await expect(
pipe.transform(
{ isArchived: input },
{ type: 'query', metatype: QueryClassDto, data: undefined },
),
).resolves.toEqual({ isArchived: expected });
});
});

View File

@@ -8,6 +8,8 @@ import {
Param,
Query,
UseGuards,
UsePipes,
ValidationPipe,
Request,
Res,
} from '@nestjs/common';
@@ -45,6 +47,7 @@ const teacherRoleLabels: Record<string, string> = {
};
@UseGuards(JwtAuthGuard)
@UsePipes(new ValidationPipe({ transform: true, whitelist: true, forbidNonWhitelisted: true }))
@Controller('classes')
export class ClassesController {
constructor(

View File

@@ -9,6 +9,7 @@ import {
ArrayNotEmpty,
ValidateNested,
Min,
IsBoolean,
} from 'class-validator';
import { Type, Transform } from 'class-transformer';
import { ClassType, ClassStatus, TeacherRoleType } from '../../entities';
@@ -160,6 +161,7 @@ export class QueryClassDto {
if (value === 'false' || value === '0') return false;
return value;
})
@IsBoolean()
isArchived?: boolean;
}