|
|
@ -275,5 +275,41 @@ class OrderValidationTest { |
|
|
|
assertEquals(Integer.valueOf(0), result.getOrderStatus()); |
|
|
|
assertEquals(Integer.valueOf(10), result.getDeliveryStatus()); |
|
|
|
assertEquals(Integer.valueOf(1), result.getPayType()); |
|
|
|
|
|
|
|
// 验证关键字段 - 租户ID(影响微信支付证书路径)
|
|
|
|
assertNotNull(result.getTenantId(), "tenantId 不能为空"); |
|
|
|
assertEquals(testRequest.getTenantId(), result.getTenantId(), "tenantId 必须正确设置"); |
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
void testBuildShopOrder_TenantIdValidation() throws Exception { |
|
|
|
// 创建一个新的请求对象,租户ID为空
|
|
|
|
OrderCreateRequest requestWithoutTenant = new OrderCreateRequest(); |
|
|
|
requestWithoutTenant.setType(0); |
|
|
|
requestWithoutTenant.setTitle("测试订单"); |
|
|
|
requestWithoutTenant.setTotalPrice(new BigDecimal("99.00")); |
|
|
|
requestWithoutTenant.setTenantId(null); // 设置为空
|
|
|
|
|
|
|
|
// 准备商品项
|
|
|
|
OrderCreateRequest.OrderGoodsItem goodsItem = new OrderCreateRequest.OrderGoodsItem(); |
|
|
|
goodsItem.setGoodsId(10018); |
|
|
|
goodsItem.setQuantity(1); |
|
|
|
requestWithoutTenant.setGoodsItems(Arrays.asList(goodsItem)); |
|
|
|
|
|
|
|
// 使用反射调用 buildShopOrder 方法
|
|
|
|
java.lang.reflect.Method buildMethod = OrderBusinessService.class |
|
|
|
.getDeclaredMethod("buildShopOrder", OrderCreateRequest.class, User.class); |
|
|
|
buildMethod.setAccessible(true); |
|
|
|
|
|
|
|
// 执行验证 - 应该抛出异常
|
|
|
|
Exception exception = assertThrows(Exception.class, () -> { |
|
|
|
buildMethod.invoke(orderBusinessService, requestWithoutTenant, testUser); |
|
|
|
}); |
|
|
|
|
|
|
|
// 检查是否是 InvocationTargetException 包装的 BusinessException
|
|
|
|
assertTrue(exception instanceof java.lang.reflect.InvocationTargetException); |
|
|
|
Throwable cause = exception.getCause(); |
|
|
|
assertTrue(cause instanceof BusinessException); |
|
|
|
assertTrue(cause.getMessage().contains("租户ID不能为空")); |
|
|
|
} |
|
|
|
} |
|
|
|