云
14 小时以前 8e704c6474b8a9df9652191112f6dc280992ba52
yudao-module-crm/src/test/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerAutoPoolTest.java
@@ -10,6 +10,11 @@
import cn.iocoder.yudao.module.crm.framework.permission.core.aop.CrmPermissionAspect;
import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum;
import cn.iocoder.yudao.module.crm.enums.common.CrmSceneTypeEnum;
import cn.iocoder.yudao.module.crm.controller.admin.customer.CrmCustomerController;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
import cn.iocoder.yudao.module.system.api.dept.DeptApi;
import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
import cn.idev.excel.metadata.data.ReadCellData;
import com.baomidou.mybatisplus.core.MybatisConfiguration;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -21,6 +26,7 @@
import java.lang.reflect.Proxy;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
import static org.junit.jupiter.api.Assertions.*;
@@ -70,6 +76,31 @@
        assertPoolListFilter(true);
    }
    @Test
    void poolCustomersUseSameOwnerAndDepartmentAsCustomerManagement() {
        var controller = new CrmCustomerController();
        var users = AdminUserApi.class.cast(Proxy.newProxyInstance(getClass().getClassLoader(),
                new Class<?>[]{AdminUserApi.class}, (proxy, method, args) -> {
                    assertEquals("getUserMap", method.getName());
                    return Map.of(10L, new AdminUserRespDTO().setId(10L).setNickname("销售负责人").setDeptId(20L));
                }));
        var departments = DeptApi.class.cast(Proxy.newProxyInstance(getClass().getClassLoader(),
                new Class<?>[]{DeptApi.class}, (proxy, method, args) -> {
                    assertEquals("getDeptMap", method.getName());
                    return Map.of(20L, new DeptRespDTO().setId(20L).setName("销售部"));
                }));
        var config = CrmCustomerPoolConfigService.class.cast(Proxy.newProxyInstance(getClass().getClassLoader(),
                new Class<?>[]{CrmCustomerPoolConfigService.class}, (proxy, method, args) -> null));
        ReflectionTestUtils.setField(controller, "adminUserApi", users);
        ReflectionTestUtils.setField(controller, "deptApi", departments);
        ReflectionTestUtils.setField(controller, "customerPoolConfigService", config);
        var customer = controller.buildCustomerDetailList(List.of(new CrmCustomerDO().setId(1L)
                .setOwnerUserId(10L).setAutoPoolEnabled(true))).getFirst();
        assertEquals(10L, customer.getOwnerUserId());
        assertEquals("销售负责人", customer.getOwnerUserName());
        assertEquals("销售部", customer.getOwnerUserDeptName());
    }
    private void assertPoolListFilter(boolean superAdmin) {
        TableInfoHelper.initTableInfo(new MapperBuilderAssistant(new MybatisConfiguration(), "test"), CrmCustomerDO.class);
        var mapper = CrmCustomerMapper.class.cast(Proxy.newProxyInstance(getClass().getClassLoader(),
@@ -77,7 +108,7 @@
                    if (method.getName().equals("selectJoinPage")) {
                        var query = (com.github.yulichang.wrapper.MPJLambdaWrapper<?>) args[2];
                        String sql = query.getSqlSegment();
                        assertTrue(sql.contains("owner_user_id IS NULL"), sql);
                        assertFalse(sql.contains("owner_user_id IS NULL"), sql);
                        assertEquals(!superAdmin, sql.contains("auto_pool_enabled ="), sql);
                        return new cn.iocoder.yudao.framework.common.pojo.PageResult<>(List.of(), 0L);
                    }