|
|
@@ -3,7 +3,7 @@ import { testClient } from 'hono/testing';
|
|
|
import { IntegrationTestDatabase, setupIntegrationDatabaseHooksWithEntities } from '@d8d/shared-test-util';
|
|
|
import { JWTUtil } from '@d8d/shared-utils';
|
|
|
import { UserEntity, Role } from '@d8d/user-module';
|
|
|
-import { FileEntity } from '@d8d/file-module';
|
|
|
+import { File } from '@d8d/file-module';
|
|
|
import disabledPersonRoutes from '../../src/routes/disabled-person.routes';
|
|
|
import { DisabledPerson } from '../../src/entities/disabled-person.entity';
|
|
|
import { DisabledBankCard } from '../../src/entities/disabled-bank-card.entity';
|
|
|
@@ -15,7 +15,7 @@ import { DisabledVisit } from '../../src/entities/disabled-visit.entity';
|
|
|
setupIntegrationDatabaseHooksWithEntities([
|
|
|
UserEntity,
|
|
|
Role,
|
|
|
- FileEntity,
|
|
|
+ File,
|
|
|
DisabledPerson,
|
|
|
DisabledBankCard,
|
|
|
DisabledPhoto,
|
|
|
@@ -27,7 +27,7 @@ describe('残疾人管理API集成测试', () => {
|
|
|
let client: ReturnType<typeof testClient<typeof disabledPersonRoutes>>;
|
|
|
let testToken: string;
|
|
|
let testUser: UserEntity;
|
|
|
- let testFile: FileEntity;
|
|
|
+ let testFile: File;
|
|
|
|
|
|
beforeEach(async () => {
|
|
|
// 创建测试客户端
|
|
|
@@ -47,15 +47,14 @@ describe('残疾人管理API集成测试', () => {
|
|
|
await userRepository.save(testUser);
|
|
|
|
|
|
// 创建测试文件(用于照片集成测试)
|
|
|
- const fileRepository = dataSource.getRepository(FileEntity);
|
|
|
+ const fileRepository = dataSource.getRepository(File);
|
|
|
testFile = fileRepository.create({
|
|
|
- filename: 'test_photo.jpg',
|
|
|
- originalFilename: 'test_photo.jpg',
|
|
|
- mimeType: 'image/jpeg',
|
|
|
+ name: 'test_photo.jpg',
|
|
|
+ path: 'test_photo.jpg',
|
|
|
+ type: 'image/jpeg',
|
|
|
size: 1024,
|
|
|
- bucket: 'd8dai',
|
|
|
- key: `test/${Date.now()}/photo.jpg`,
|
|
|
- uploaderId: testUser.id
|
|
|
+ uploadUserId: testUser.id,
|
|
|
+ uploadTime: new Date()
|
|
|
});
|
|
|
await fileRepository.save(testFile);
|
|
|
|
|
|
@@ -90,7 +89,6 @@ describe('残疾人管理API集成测试', () => {
|
|
|
}
|
|
|
});
|
|
|
|
|
|
- console.debug('创建残疾人响应状态:', response.status);
|
|
|
expect(response.status).toBe(200);
|
|
|
|
|
|
if (response.status === 200) {
|
|
|
@@ -463,7 +461,7 @@ describe('残疾人管理API集成测试', () => {
|
|
|
|
|
|
const response = await client.searchDisabledPersons.$get({
|
|
|
query: {
|
|
|
- name: '张三',
|
|
|
+ keyword: '张三',
|
|
|
skip: 0,
|
|
|
take: 10
|
|
|
}
|
|
|
@@ -485,7 +483,7 @@ describe('残疾人管理API集成测试', () => {
|
|
|
it('应该验证搜索关键词不能为空', async () => {
|
|
|
const response = await client.searchDisabledPersons.$get({
|
|
|
query: {
|
|
|
- name: '', // 空关键词
|
|
|
+ keyword: '', // 空关键词
|
|
|
skip: 0,
|
|
|
take: 10
|
|
|
}
|
|
|
@@ -516,8 +514,7 @@ describe('残疾人管理API集成测试', () => {
|
|
|
province: '北京市',
|
|
|
city: '北京市',
|
|
|
canDirectContact: 1,
|
|
|
- isMarried: 1,
|
|
|
- education: '本科'
|
|
|
+ isMarried: 1
|
|
|
});
|
|
|
await disabledPersonRepository.save(person);
|
|
|
|
|
|
@@ -536,7 +533,6 @@ describe('残疾人管理API集成测试', () => {
|
|
|
if (response.status === 200) {
|
|
|
const data = await response.json();
|
|
|
expect(data?.name).toBe('测试人员详情');
|
|
|
- expect(data?.education).toBe('本科');
|
|
|
expect(data?.canDirectContact).toBe(1);
|
|
|
}
|
|
|
});
|
|
|
@@ -580,8 +576,8 @@ describe('残疾人管理API集成测试', () => {
|
|
|
});
|
|
|
await disabledPersonRepository.save(person);
|
|
|
|
|
|
- const response = await client.getDisabledPersonByIdCard.$get({
|
|
|
- query: {
|
|
|
+ const response = await client.findByIdCard[':idCard'].$get({
|
|
|
+ param: {
|
|
|
idCard: '110101199001011244'
|
|
|
}
|
|
|
}, {
|
|
|
@@ -600,8 +596,8 @@ describe('残疾人管理API集成测试', () => {
|
|
|
});
|
|
|
|
|
|
it('应该处理不存在的身份证号', async () => {
|
|
|
- const response = await client.getDisabledPersonByIdCard.$get({
|
|
|
- query: {
|
|
|
+ const response = await client.findByIdCard[':idCard'].$get({
|
|
|
+ param: {
|
|
|
idCard: '999999999999999999' // 不存在的身份证号
|
|
|
}
|
|
|
}, {
|
|
|
@@ -622,7 +618,7 @@ describe('残疾人管理API集成测试', () => {
|
|
|
describe('POST /createAggregatedDisabledPerson', () => {
|
|
|
it('应该成功创建聚合残疾人信息(包含所有关联数据)', async () => {
|
|
|
const createData = {
|
|
|
- disabledPerson: {
|
|
|
+ personInfo: {
|
|
|
name: '聚合创建测试',
|
|
|
gender: '男',
|
|
|
idCard: '110101199001011245',
|
|
|
@@ -636,9 +632,12 @@ describe('残疾人管理API集成测试', () => {
|
|
|
},
|
|
|
bankCards: [
|
|
|
{
|
|
|
+ subBankName: '北京分行',
|
|
|
bankName: '中国工商银行',
|
|
|
cardNumber: '6222021234567890123',
|
|
|
- cardholderName: '聚合创建测试'
|
|
|
+ cardholderName: '聚合创建测试',
|
|
|
+ fileId: testFile.id,
|
|
|
+ isDefault: 0
|
|
|
}
|
|
|
],
|
|
|
photos: [
|
|
|
@@ -649,15 +648,16 @@ describe('残疾人管理API集成测试', () => {
|
|
|
],
|
|
|
remarks: [
|
|
|
{
|
|
|
- remarkType: '家庭情况',
|
|
|
- remarkContent: '家庭经济困难,需要帮助'
|
|
|
+ remarkContent: '家庭经济困难,需要帮助',
|
|
|
+ operatorId: 1
|
|
|
}
|
|
|
],
|
|
|
visits: [
|
|
|
{
|
|
|
visitDate: '2025-12-02T10:00:00Z',
|
|
|
+ visitType: '电话回访',
|
|
|
visitContent: '初次回访,了解基本情况',
|
|
|
- visitor: '工作人员A'
|
|
|
+ visitorId: 1
|
|
|
}
|
|
|
]
|
|
|
};
|
|
|
@@ -674,7 +674,7 @@ describe('残疾人管理API集成测试', () => {
|
|
|
|
|
|
if (response.status === 200) {
|
|
|
const data = await response.json();
|
|
|
- expect(data.disabledPerson.name).toBe('聚合创建测试');
|
|
|
+ expect(data.personInfo.name).toBe('聚合创建测试');
|
|
|
expect(data.bankCards).toHaveLength(1);
|
|
|
expect(data.photos).toHaveLength(1);
|
|
|
expect(data.remarks).toHaveLength(1);
|
|
|
@@ -687,7 +687,7 @@ describe('残疾人管理API集成测试', () => {
|
|
|
|
|
|
it('应该验证文件ID的有效性', async () => {
|
|
|
const createData = {
|
|
|
- disabledPerson: {
|
|
|
+ personInfo: {
|
|
|
name: '文件验证测试',
|
|
|
gender: '女',
|
|
|
idCard: '110101199001011246',
|
|
|
@@ -744,9 +744,12 @@ describe('残疾人管理API集成测试', () => {
|
|
|
const bankCardRepository = dataSource.getRepository(DisabledBankCard);
|
|
|
const bankCard = bankCardRepository.create({
|
|
|
personId: person.id,
|
|
|
+ subBankName: '北京分行',
|
|
|
bankName: '中国建设银行',
|
|
|
cardNumber: '6227001234567890123',
|
|
|
- cardholderName: '聚合查询测试'
|
|
|
+ cardholderName: '聚合查询测试',
|
|
|
+ fileId: testFile.id,
|
|
|
+ isDefault: 0
|
|
|
});
|
|
|
await bankCardRepository.save(bankCard);
|
|
|
|
|
|
@@ -763,8 +766,8 @@ describe('残疾人管理API集成测试', () => {
|
|
|
const remarkRepository = dataSource.getRepository(DisabledRemark);
|
|
|
const remark = remarkRepository.create({
|
|
|
personId: person.id,
|
|
|
- remarkType: '工作情况',
|
|
|
- remarkContent: '目前无工作,需要就业帮助'
|
|
|
+ remarkContent: '目前无工作,需要就业帮助',
|
|
|
+ operatorId: 1
|
|
|
});
|
|
|
await remarkRepository.save(remark);
|
|
|
|
|
|
@@ -773,14 +776,15 @@ describe('残疾人管理API集成测试', () => {
|
|
|
const visit = visitRepository.create({
|
|
|
personId: person.id,
|
|
|
visitDate: new Date('2025-12-01T14:30:00Z'),
|
|
|
+ visitType: '上门回访',
|
|
|
visitContent: '了解就业需求',
|
|
|
- visitor: '工作人员B'
|
|
|
+ visitorId: 2
|
|
|
});
|
|
|
await visitRepository.save(visit);
|
|
|
|
|
|
- const response = await client.getAggregatedDisabledPerson[':personId'].$get({
|
|
|
+ const response = await client.getAggregatedDisabledPerson[':id'].$get({
|
|
|
param: {
|
|
|
- personId: person.id
|
|
|
+ id: person.id
|
|
|
}
|
|
|
}, {
|
|
|
headers: {
|
|
|
@@ -792,21 +796,22 @@ describe('残疾人管理API集成测试', () => {
|
|
|
|
|
|
if (response.status === 200) {
|
|
|
const data = await response.json();
|
|
|
- expect(data.disabledPerson.name).toBe('聚合查询测试');
|
|
|
- expect(data.bankCards).toHaveLength(1);
|
|
|
- expect(data.photos).toHaveLength(1);
|
|
|
- expect(data.remarks).toHaveLength(1);
|
|
|
- expect(data.visits).toHaveLength(1);
|
|
|
+ expect(data).not.toBeNull();
|
|
|
+ expect(data!.personInfo.name).toBe('聚合查询测试');
|
|
|
+ expect(data!.bankCards).toHaveLength(1);
|
|
|
+ expect(data!.photos).toHaveLength(1);
|
|
|
+ expect(data!.remarks).toHaveLength(1);
|
|
|
+ expect(data!.visits).toHaveLength(1);
|
|
|
|
|
|
// 验证文件数据完整性
|
|
|
- expect(data.photos[0].fileId).toBe(testFile.id);
|
|
|
+ expect(data!.photos[0].fileId).toBe(testFile.id);
|
|
|
}
|
|
|
});
|
|
|
|
|
|
it('应该处理不存在的残疾人ID', async () => {
|
|
|
- const response = await client.getAggregatedDisabledPerson[':personId'].$get({
|
|
|
+ const response = await client.getAggregatedDisabledPerson[':id'].$get({
|
|
|
param: {
|
|
|
- personId: 99999 // 不存在的ID
|
|
|
+ id: 99999 // 不存在的ID
|
|
|
}
|
|
|
}, {
|
|
|
headers: {
|
|
|
@@ -823,7 +828,16 @@ describe('残疾人管理API集成测试', () => {
|
|
|
// 测试没有token的情况
|
|
|
const response = await client.createDisabledPerson.$post({
|
|
|
json: {
|
|
|
- name: '测试人员'
|
|
|
+ name: '测试人员',
|
|
|
+ gender: '男',
|
|
|
+ idCard: '110101199001011235',
|
|
|
+ disabilityId: 'D123456789',
|
|
|
+ disabilityType: '视力残疾',
|
|
|
+ disabilityLevel: '一级',
|
|
|
+ idAddress: '北京市东城区',
|
|
|
+ phone: '13800138000',
|
|
|
+ province: '北京市',
|
|
|
+ city: '北京市'
|
|
|
}
|
|
|
});
|
|
|
|
|
|
@@ -833,7 +847,16 @@ describe('残疾人管理API集成测试', () => {
|
|
|
it('应该验证无效token', async () => {
|
|
|
const response = await client.createDisabledPerson.$post({
|
|
|
json: {
|
|
|
- name: '测试人员'
|
|
|
+ name: '测试人员',
|
|
|
+ gender: '男',
|
|
|
+ idCard: '110101199001011236',
|
|
|
+ disabilityId: 'D123456790',
|
|
|
+ disabilityType: '视力残疾',
|
|
|
+ disabilityLevel: '一级',
|
|
|
+ idAddress: '北京市东城区',
|
|
|
+ phone: '13800138001',
|
|
|
+ province: '北京市',
|
|
|
+ city: '北京市'
|
|
|
}
|
|
|
}, {
|
|
|
headers: {
|