feat: 完成PHP到NestJS的100%功能迁移
- 迁移25个模块,包含95个控制器和160个服务 - 新增验证码管理、登录配置、云编译等模块 - 完善认证授权、会员管理、支付系统等核心功能 - 实现完整的队列系统、配置管理、监控体系 - 确保100%功能对齐和命名一致性 - 支持生产环境部署
This commit is contained in:
@@ -22,8 +22,11 @@ describe('Queue System (e2e)', () => {
|
||||
await app.init();
|
||||
|
||||
testService = moduleFixture.get<TestService>(TestService);
|
||||
unifiedQueueService = moduleFixture.get<UnifiedQueueService>(UnifiedQueueService);
|
||||
databaseQueueProvider = moduleFixture.get<DatabaseQueueProvider>(DatabaseQueueProvider);
|
||||
unifiedQueueService =
|
||||
moduleFixture.get<UnifiedQueueService>(UnifiedQueueService);
|
||||
databaseQueueProvider = moduleFixture.get<DatabaseQueueProvider>(
|
||||
DatabaseQueueProvider,
|
||||
);
|
||||
});
|
||||
|
||||
afterAll(async () => {
|
||||
@@ -92,7 +95,7 @@ describe('Queue System (e2e)', () => {
|
||||
|
||||
it('should process task from queue', async () => {
|
||||
let processedData: any = null;
|
||||
|
||||
|
||||
await unifiedQueueService.processTask('test-queue', async (job: any) => {
|
||||
processedData = job.data;
|
||||
return { success: true };
|
||||
@@ -105,8 +108,8 @@ describe('Queue System (e2e)', () => {
|
||||
});
|
||||
|
||||
// Wait a bit for processing
|
||||
await new Promise(resolve => setTimeout(resolve, 1000));
|
||||
|
||||
await new Promise((resolve) => setTimeout(resolve, 1000));
|
||||
|
||||
expect(processedData).toBeDefined();
|
||||
});
|
||||
|
||||
@@ -123,7 +126,9 @@ describe('Queue System (e2e)', () => {
|
||||
data: { test: 'event-data' },
|
||||
};
|
||||
|
||||
await expect(unifiedQueueService.publishEvent(event)).resolves.not.toThrow();
|
||||
await expect(
|
||||
unifiedQueueService.publishEvent(event),
|
||||
).resolves.not.toThrow();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -143,7 +148,12 @@ describe('Queue System (e2e)', () => {
|
||||
},
|
||||
};
|
||||
|
||||
const result = await databaseQueueProvider.add('test-db-queue', jobData.type, jobData.payload, jobData.options);
|
||||
const result = await databaseQueueProvider.add(
|
||||
'test-db-queue',
|
||||
jobData.type,
|
||||
jobData.payload,
|
||||
jobData.options,
|
||||
);
|
||||
expect(result).toBeDefined();
|
||||
});
|
||||
|
||||
@@ -176,7 +186,7 @@ describe('Queue System (e2e)', () => {
|
||||
it('should handle complete queue workflow', async () => {
|
||||
// Test the complete workflow: add task -> process task -> publish event
|
||||
const taskData = { workflow: 'test', step: 1 };
|
||||
|
||||
|
||||
// Add task
|
||||
const taskResult = await unifiedQueueService.addTask('workflow-queue', {
|
||||
data: taskData,
|
||||
@@ -185,25 +195,28 @@ describe('Queue System (e2e)', () => {
|
||||
expect(taskResult).toBeDefined();
|
||||
|
||||
// Process task and publish event
|
||||
await unifiedQueueService.processTask('workflow-queue', async (job: any) => {
|
||||
const event = {
|
||||
eventType: 'workflow.completed',
|
||||
aggregateId: 'workflow-123',
|
||||
aggregateType: 'Workflow',
|
||||
version: '1.0',
|
||||
occurredAt: new Date().toISOString(),
|
||||
tenantId: 'tenant-1',
|
||||
idempotencyKey: 'workflow-key-123',
|
||||
traceId: 'workflow-trace-123',
|
||||
data: job.data,
|
||||
};
|
||||
await unifiedQueueService.processTask(
|
||||
'workflow-queue',
|
||||
async (job: any) => {
|
||||
const event = {
|
||||
eventType: 'workflow.completed',
|
||||
aggregateId: 'workflow-123',
|
||||
aggregateType: 'Workflow',
|
||||
version: '1.0',
|
||||
occurredAt: new Date().toISOString(),
|
||||
tenantId: 'tenant-1',
|
||||
idempotencyKey: 'workflow-key-123',
|
||||
traceId: 'workflow-trace-123',
|
||||
data: job.data,
|
||||
};
|
||||
|
||||
await unifiedQueueService.publishEvent(event);
|
||||
return { success: true, processed: job.data };
|
||||
});
|
||||
await unifiedQueueService.publishEvent(event);
|
||||
return { success: true, processed: job.data };
|
||||
},
|
||||
);
|
||||
|
||||
// Wait for processing
|
||||
await new Promise(resolve => setTimeout(resolve, 1000));
|
||||
await new Promise((resolve) => setTimeout(resolve, 1000));
|
||||
});
|
||||
|
||||
it('should handle error scenarios gracefully', async () => {
|
||||
@@ -223,10 +236,10 @@ describe('Queue System (e2e)', () => {
|
||||
});
|
||||
|
||||
// Wait for processing attempt
|
||||
await new Promise(resolve => setTimeout(resolve, 1000));
|
||||
|
||||
await new Promise((resolve) => setTimeout(resolve, 1000));
|
||||
|
||||
// The test passes if no unhandled errors are thrown
|
||||
expect(true).toBe(true);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user