fix: align reporting fields queries and disk monitoring

This commit is contained in:
hectorzhao
2026-08-31 12:19:39 +08:00
parent 119d57772e
commit b0deef5e6e
37 changed files with 596 additions and 110 deletions
@@ -58,6 +58,24 @@ function createPrismaMock() {
}
describe('DictionariesService', () => {
it('edits common configuration in place with an audit trail and rejects duplicate or inactive fields', async () => {
const prisma = createPrismaMock();
const existing = { id: 'common-1', drainageFieldId: 'field-1', reportType: 'signature', required: false };
prisma.commonReportField.findUnique.mockImplementation(({ where }: { where: { id?: string } }) => Promise.resolve(where.id ? existing : null) as never);
prisma.drainageField.findUnique.mockResolvedValue({ id: 'field-2', status: 'active' } as never);
const tx = { commonReportField: { update: jest.fn().mockResolvedValue({ ...existing, required: true }) }, operationLog: { create: jest.fn() } };
prisma.$transaction.mockImplementation((callback) => callback(tx));
const service = new DictionariesService(prisma as never);
const body = { drainageFieldId: 'field-2', reportType: 'drainage' as const, required: true };
await service.updateCommonReportField('common-1', body, 'admin-1');
expect(tx.commonReportField.update).toHaveBeenCalledWith(expect.objectContaining({ where: { id: 'common-1' }, data: { ...body, sortOrder: undefined } }));
expect(tx.operationLog.create).toHaveBeenCalledWith(expect.objectContaining({ data: expect.objectContaining({ action: 'common_report_field.update', userId: 'admin-1' }) }));
prisma.commonReportField.findUnique.mockResolvedValue({ id: 'other' } as never);
await expect(service.updateCommonReportField('common-1', body)).rejects.toThrow('已配置');
prisma.drainageField.findUnique.mockResolvedValue({ id: 'field-2', status: 'inactive' } as never);
await expect(service.updateCommonReportField('common-1', body)).rejects.toThrow('已停用');
await expect(service.updateCommonReportField('common-1', { ...body, required: 'false' as never })).rejects.toThrow('无效');
});
it('builds the enterprise province and city library from distinct real phone segment regions', async () => {
const prisma = createPrismaMock();
prisma.phoneSegment.findMany.mockResolvedValue([