diff --git a/yudao-module-oa/src/main/java/cn/iocoder/yudao/module/oa/dal/dataobject/vehicle/OaVehicleDO.java b/yudao-module-oa/src/main/java/cn/iocoder/yudao/module/oa/dal/dataobject/vehicle/OaVehicleDO.java index d1e4f1c..31c50fd 100644 --- a/yudao-module-oa/src/main/java/cn/iocoder/yudao/module/oa/dal/dataobject/vehicle/OaVehicleDO.java +++ b/yudao-module-oa/src/main/java/cn/iocoder/yudao/module/oa/dal/dataobject/vehicle/OaVehicleDO.java @@ -46,6 +46,7 @@ public class OaVehicleDO extends BaseDO { * * 关联 {@link DeptRespDTO#getId()} */ + @TableField(updateStrategy = FieldStrategy.ALWAYS) private Long deptId; /** * 车型 diff --git a/yudao-module-oa/src/test/java/cn/iocoder/yudao/module/oa/service/plan/OaPlanServiceImplTest.java b/yudao-module-oa/src/test/java/cn/iocoder/yudao/module/oa/service/plan/OaPlanServiceImplTest.java index b028fcd..b5cf8a2 100644 --- a/yudao-module-oa/src/test/java/cn/iocoder/yudao/module/oa/service/plan/OaPlanServiceImplTest.java +++ b/yudao-module-oa/src/test/java/cn/iocoder/yudao/module/oa/service/plan/OaPlanServiceImplTest.java @@ -190,13 +190,13 @@ public class OaPlanServiceImplTest extends BaseDbUnitTest { // mock 数据:已有点评与本次追加内容按字符数计算 Long ownerId = randomLongId(); Long managerId = randomLongId(); - OaPlanDO plan = buildPlanDO(ownerId).setComment(StrUtil.repeat("a", 65533 - System.lineSeparator().length())); + OaPlanDO plan = buildPlanDO(ownerId).setComment(StrUtil.repeat("a", 998 - System.lineSeparator().length())); planMapper.insert(plan); // mock 方法 when(adminUserApi.getUserListBySubordinate(managerId)).thenReturn( Collections.singletonList(new AdminUserRespDTO().setId(ownerId))); - // 调用:包含换行后恰好达到 65535 个字符 + // 调用:包含换行后恰好达到 1000 个字符 planService.addPlanComment(plan.getId(), "ab", managerId); // 断言 @@ -209,7 +209,7 @@ public class OaPlanServiceImplTest extends BaseDbUnitTest { // mock 数据:已有点评与本次追加内容按字符数计算 Long ownerId = randomLongId(); Long managerId = randomLongId(); - OaPlanDO plan = buildPlanDO(ownerId).setComment(StrUtil.repeat("a", 65533 - System.lineSeparator().length())); + OaPlanDO plan = buildPlanDO(ownerId).setComment(StrUtil.repeat("a", 998 - System.lineSeparator().length())); planMapper.insert(plan); // mock 方法 when(adminUserApi.getUserListBySubordinate(managerId)).thenReturn( @@ -220,7 +220,7 @@ public class OaPlanServiceImplTest extends BaseDbUnitTest { () -> planService.addPlanComment(plan.getId(), "abc", managerId)); assertTrue(exception.getConstraintViolations().stream().anyMatch(violation -> "comment".equals(violation.getPropertyPath().toString()) - && "点评内容长度不能超过 65535 个字符".equals(violation.getMessage()))); + && "点评内容长度不能超过 1000 个字符".equals(violation.getMessage()))); assertEquals(plan.getComment(), planMapper.selectById(plan.getId()).getComment()); } diff --git a/yudao-module-oa/src/test/java/cn/iocoder/yudao/module/oa/service/vehicle/OaVehicleServiceImplTest.java b/yudao-module-oa/src/test/java/cn/iocoder/yudao/module/oa/service/vehicle/OaVehicleServiceImplTest.java index 5ac5fad..0728c68 100644 --- a/yudao-module-oa/src/test/java/cn/iocoder/yudao/module/oa/service/vehicle/OaVehicleServiceImplTest.java +++ b/yudao-module-oa/src/test/java/cn/iocoder/yudao/module/oa/service/vehicle/OaVehicleServiceImplTest.java @@ -16,9 +16,11 @@ import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.Collections; +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; import static cn.iocoder.yudao.module.oa.enums.ErrorCodeConstants.*; +import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.DEPT_NOT_FOUND; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.*; @@ -187,6 +189,25 @@ public class OaVehicleServiceImplTest extends BaseDbUnitTest { } @Test + public void testUpdateVehicle_deptInvalid() { + // mock 数据 + OaVehicleDO vehicle = randomVehicleDO().setDeptId(103L).setPicUrl("https://example.com/old.png"); + vehicleMapper.insert(vehicle); + // 准备参数 + OaVehicleSaveReqVO reqVO = BeanUtils.toBean(vehicle, OaVehicleSaveReqVO.class) + .setDeptId(104L).setPicUrl("https://example.com/new.png"); + // mock 方法 + doThrow(exception(DEPT_NOT_FOUND)).when(deptApi).validateDeptList(Collections.singleton(104L)); + + // 调用,并断言异常 + assertServiceException(() -> vehicleService.updateVehicle(reqVO), DEPT_NOT_FOUND); + // 断言:部门校验失败时不更新车辆 + OaVehicleDO dbVehicle = vehicleMapper.selectById(vehicle.getId()); + assertEquals(103L, dbVehicle.getDeptId()); + assertEquals("https://example.com/old.png", dbVehicle.getPicUrl()); + } + + @Test public void testCreateVehicle_deletedPlateCanBeReused() { // mock 数据 OaVehicleDO vehicle = randomVehicleDO();