Bladeren bron

✨ feat(payment-mt): 多租户支付模块集成与测试优化

- 添加@d8d/geo-areas-mt依赖以支持地理位置相关功能
- 修复测试文件中实体和路由的导入路径,使用多租户版本(PaymentMtEntity和PaymentMtRoutes)
- 更新测试数据库设置,添加AreaEntityMt实体支持
- 为测试支付记录添加tenantId字段,完善多租户测试环境

♻️ refactor(payment-mt): 统一多租户代码风格

- 调整测试文件中路由和实体的导入名称,确保与多租户命名规范一致
- 更新setupIntegrationDatabaseHooksWithEntities配置,使用正确的多租户实体
yourname 1 maand geleden
bovenliggende
commit
c9da7bce1f

+ 1 - 0
packages/mini-payment-mt/package.json

@@ -56,6 +56,7 @@
     "@d8d/merchant-module-mt": "workspace:*",
     "@d8d/supplier-module-mt": "workspace:*",
     "@d8d/delivery-address-module-mt": "workspace:*",
+    "@d8d/geo-areas-mt": "workspace:*",
     "@hono/zod-openapi": "^1.0.2",
     "typeorm": "^0.3.20",
     "wechatpay-node-v3": "2.1.8",

+ 2 - 1
packages/mini-payment-mt/tests/integration/payment-callback.integration.test.ts

@@ -14,6 +14,7 @@ import { OrderMt } from '@d8d/orders-module-mt';
 import { MerchantMt } from '@d8d/merchant-module-mt';
 import { SupplierMt } from '@d8d/supplier-module-mt';
 import { DeliveryAddressMt } from '@d8d/delivery-address-module-mt';
+import { AreaEntityMt } from '@d8d/geo-areas-mt';
 import { config } from 'dotenv';
 import { resolve } from 'path';
 // 导入微信支付SDK用于模拟
@@ -25,7 +26,7 @@ config({ path: resolve(process.cwd(), '.env.test') });
 vi.mock('wechatpay-node-v3')
 
 // 设置集成测试钩子
-setupIntegrationDatabaseHooksWithEntities([PaymentMtEntity, UserEntityMt, FileMt, RoleMt, OrderMt, MerchantMt, SupplierMt, DeliveryAddressMt])
+setupIntegrationDatabaseHooksWithEntities([PaymentMtEntity, UserEntityMt, FileMt, RoleMt, OrderMt, MerchantMt, SupplierMt, DeliveryAddressMt, AreaEntityMt])
 
 describe('支付回调API集成测试 - 多租户版本', () => {
   let client: ReturnType<typeof testClient<typeof PaymentMtRoutes>>;

+ 10 - 9
packages/mini-payment-mt/tests/integration/payment.integration.test.ts

@@ -4,8 +4,8 @@ import {
   IntegrationTestDatabase,
   setupIntegrationDatabaseHooksWithEntities
 } from '@d8d/shared-test-util';
-import { PaymentRoutes } from '../../src/routes/payment.routes.js';
-import { PaymentEntity } from '../../src/entities/payment.entity.js';
+import { PaymentMtRoutes } from '../../src/routes/payment.mt.routes.js';
+import { PaymentMtEntity } from '../../src/entities/payment.mt.entity.js';
 import { PaymentStatus } from '../../src/entities/payment.types.js';
 import { UserEntity } from '@d8d/user-module';
 import { Role } from '@d8d/user-module';
@@ -22,17 +22,17 @@ config({ path: resolve(process.cwd(), '.env.test') });
 vi.mock('wechatpay-node-v3')
 
 // 设置集成测试钩子
-setupIntegrationDatabaseHooksWithEntities([PaymentEntity, UserEntity, File, Role])
+setupIntegrationDatabaseHooksWithEntities([PaymentMtEntity, UserEntity, File, Role])
 
 describe('支付API集成测试', () => {
-  let client: ReturnType<typeof testClient<typeof PaymentRoutes>>;
+  let client: ReturnType<typeof testClient<typeof PaymentMtRoutes>>;
   let testToken: string;
   let testUser: UserEntity;
-  let testPayment: PaymentEntity;
+  let testPayment: PaymentMtEntity;
 
   beforeEach(async () => {
     // 创建测试客户端
-    client = testClient(PaymentRoutes);
+    client = testClient(PaymentMtRoutes);
 
     // 创建测试用户并生成token
     const dataSource = await IntegrationTestDatabase.getDataSource();
@@ -54,10 +54,11 @@ describe('支付API集成测试', () => {
     });
 
     // 创建测试支付记录 - 使用不同的外部订单ID避免冲突
-    const paymentRepository = dataSource.getRepository(PaymentEntity);
+    const paymentRepository = dataSource.getRepository(PaymentMtEntity);
     testPayment = paymentRepository.create({
       externalOrderId: 999, // 使用一个不会与测试冲突的ID
       userId: testUser.id,
+      tenantId: 1, // 添加租户ID
       totalAmount: 20000,
       description: '测试支付',
       paymentStatus: PaymentStatus.PENDING,
@@ -199,7 +200,7 @@ describe('支付API集成测试', () => {
     it('应该验证支付状态', async () => {
       // 更新支付状态为已支付
       const dataSource = await IntegrationTestDatabase.getDataSource();
-      const paymentRepository = dataSource.getRepository(PaymentEntity);
+      const paymentRepository = dataSource.getRepository(PaymentMtEntity);
       await paymentRepository.update(testPayment.id, {
         paymentStatus: PaymentStatus.PAID
       });
@@ -375,7 +376,7 @@ describe('支付API集成测试', () => {
 
       // 验证支付状态已更新为处理中
       const dataSource = await IntegrationTestDatabase.getDataSource();
-      const paymentRepository = dataSource.getRepository(PaymentEntity);
+      const paymentRepository = dataSource.getRepository(PaymentMtEntity);
       const updatedPayment = await paymentRepository.findOne({
         where: { externalOrderId: testPayment.externalOrderId }
       });

+ 3 - 0
pnpm-lock.yaml

@@ -2875,6 +2875,9 @@ importers:
       '@d8d/file-module-mt':
         specifier: workspace:*
         version: link:../file-module-mt
+      '@d8d/geo-areas-mt':
+        specifier: workspace:*
+        version: link:../geo-areas-mt
       '@d8d/merchant-module-mt':
         specifier: workspace:*
         version: link:../merchant-module-mt