fix(c5): dockingTier 枚举约束 A/B/C

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
liuyun 2026-10-15 07:40:56 +08:00
parent 16937fcf17
commit 94f0fb2bb5
2 changed files with 20 additions and 3 deletions

View File

@ -1,5 +1,8 @@
import { describe, expect, it, vi } from 'vitest'; import { describe, expect, it, vi } from 'vitest';
import { plainToInstance } from 'class-transformer';
import { validate } from 'class-validator';
import { AgencyService } from './agency.service.js'; import { AgencyService } from './agency.service.js';
import { UpdateAgencyDto } from './dto.js';
import type { PrismaService } from '../prisma/prisma.service.js'; import type { PrismaService } from '../prisma/prisma.service.js';
import { runWithRequestContext } from '../common/context/request-context.js'; import { runWithRequestContext } from '../common/context/request-context.js';
import type { RequestContext } 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([]);
});
});

View File

@ -1,5 +1,5 @@
import { ApiPropertyOptional } from '@nestjs/swagger'; 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) @Min(0)
qcThreshold?: number; qcThreshold?: number;
@ApiPropertyOptional({ description: '对接档位' }) @ApiPropertyOptional({ description: '对接档位(A/B/C,C 显示「待接口发布」)', enum: ['A', 'B', 'C'] })
@IsOptional() @IsOptional()
@IsString() @IsIn(['A', 'B', 'C'])
dockingTier?: string; dockingTier?: string;
@ApiPropertyOptional({ description: '国家新增项通知开关' }) @ApiPropertyOptional({ description: '国家新增项通知开关' })