diff --git a/src/agency/agency.service.spec.ts b/src/agency/agency.service.spec.ts index b9b4c38..3cdec68 100644 --- a/src/agency/agency.service.spec.ts +++ b/src/agency/agency.service.spec.ts @@ -1,5 +1,8 @@ import { describe, expect, it, vi } from 'vitest'; +import { plainToInstance } from 'class-transformer'; +import { validate } from 'class-validator'; import { AgencyService } from './agency.service.js'; +import { UpdateAgencyDto } from './dto.js'; import type { PrismaService } from '../prisma/prisma.service.js'; import { runWithRequestContext } from '../common/context/request-context.js'; import type { RequestContext } from '../common/context/request-context.js'; @@ -53,3 +56,17 @@ describe('AgencyService', () => { }); }); }); + +describe('UpdateAgencyDto.dockingTier', () => { + it('只允许 A/B/C', async () => { + const dto = plainToInstance(UpdateAgencyDto, { dockingTier: 'X' }); + const errors = await validate(dto); + expect(errors.some((e) => e.property === 'dockingTier')).toBe(true); + }); + + it.each(['A', 'B', 'C'])('合法值 %s 通过', async (tier) => { + const dto = plainToInstance(UpdateAgencyDto, { dockingTier: tier }); + const errors = await validate(dto); + expect(errors).toEqual([]); + }); +}); diff --git a/src/agency/dto.ts b/src/agency/dto.ts index d1d0a03..847e5cf 100644 --- a/src/agency/dto.ts +++ b/src/agency/dto.ts @@ -1,5 +1,5 @@ import { ApiPropertyOptional } from '@nestjs/swagger'; -import { IsBoolean, IsDateString, IsInt, IsOptional, IsString, Min } from 'class-validator'; +import { IsBoolean, IsDateString, IsIn, IsInt, IsOptional, IsString, Min } from 'class-validator'; /** * 更新机构信息。仅暴露业务可编辑字段: @@ -65,9 +65,9 @@ export class UpdateAgencyDto { @Min(0) qcThreshold?: number; - @ApiPropertyOptional({ description: '对接档位' }) + @ApiPropertyOptional({ description: '对接档位(A/B/C,C 显示「待接口发布」)', enum: ['A', 'B', 'C'] }) @IsOptional() - @IsString() + @IsIn(['A', 'B', 'C']) dockingTier?: string; @ApiPropertyOptional({ description: '国家新增项通知开关' })