package jnpf.limsService.impl;
|
|
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
|
import jnpf.base.UserInfo;
|
import jnpf.limsEntity.LimsJianyanResultItem;
|
import jnpf.limsMapper.LimsJianyanXiangMapper;
|
import org.apache.ibatis.annotations.Select;
|
import org.apache.ibatis.annotations.Update;
|
import org.junit.Test;
|
|
import java.lang.reflect.Method;
|
import java.util.Arrays;
|
import java.util.List;
|
|
import static org.junit.Assert.assertArrayEquals;
|
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertNotNull;
|
import static org.junit.Assert.assertNull;
|
import static org.junit.Assert.assertTrue;
|
|
public class LimsJianceTaskServiceImplTest {
|
|
@Test
|
public void normalizesSingleTenantIdForDedicatedSql() {
|
UserInfo userInfo = new UserInfo();
|
userInfo.setTenantId(" tenant-1 ");
|
|
assertEquals("tenant-1", LimsJianceTaskServiceImpl.tenantId(userInfo));
|
userInfo.setTenantId(" ");
|
assertEquals("0", LimsJianceTaskServiceImpl.tenantId(userInfo));
|
assertEquals("0", LimsJianceTaskServiceImpl.tenantId(null));
|
}
|
|
@Test
|
public void keepsLegacySkipBehaviorForEmptyResultWithoutElnRecord() {
|
LimsJianyanResultItem item = new LimsJianyanResultItem();
|
item.setId("item-1");
|
assertNull(LimsJianceTaskServiceImpl.submissionResultValues(item, null));
|
}
|
|
@Test
|
public void liveTaskQueryBypassesNullOnlyPlatformDeleteFilter() throws Exception {
|
Method method = LimsJianyanXiangMapper.class.getMethod(
|
"selectLiveTasks", String.class, List.class);
|
InterceptorIgnore ignore = method.getAnnotation(InterceptorIgnore.class);
|
assertNotNull(ignore);
|
assertArrayEquals(new String[]{"Ilg@true"}, ignore.others());
|
|
Select select = method.getAnnotation(Select.class);
|
assertNotNull(select);
|
String sql = String.join(" ", select.value());
|
assertTrue(sql.contains("f_tenant_id = #{tenantId}"));
|
assertTrue(sql.contains("f_delete_mark IS NULL OR f_delete_mark = 0"));
|
assertTrue(sql.contains("jianyan_jieguo AS jianyanJieguo"));
|
assertTrue(sql.contains("jianyan_jielun AS jianyanJielun"));
|
}
|
|
@Test
|
public void submitResultUpdateBypassesNullOnlyPlatformDeleteFilter() {
|
Method method = Arrays.stream(LimsJianyanXiangMapper.class.getMethods())
|
.filter(candidate -> "submitResult".equals(candidate.getName()))
|
.findFirst()
|
.orElse(null);
|
assertNotNull(method);
|
|
InterceptorIgnore ignore = method.getAnnotation(InterceptorIgnore.class);
|
assertNotNull(ignore);
|
assertArrayEquals(new String[]{"Ilg@true"}, ignore.others());
|
|
Update update = method.getAnnotation(Update.class);
|
assertNotNull(update);
|
String sql = String.join(" ", update.value());
|
assertTrue(sql.contains("f_tenant_id = #{tenantId}"));
|
assertTrue(sql.contains("f_delete_mark IS NULL OR f_delete_mark = 0"));
|
assertTrue(sql.contains("jianyan_zhuangtai IN ('pending_test','cancelled','audit_rejected')"));
|
assertTrue(sql.contains("waijian_lururen = #{userId}"));
|
assertTrue(sql.contains("jiancha_ren = #{userId}"));
|
assertTrue(sql.contains("jianyan_jieguo = #{result}"));
|
assertTrue(sql.contains("jianyan_jielun = #{conclusion}"));
|
}
|
|
@Test
|
public void auditUpdatesBypassNullOnlyPlatformDeleteFilter() {
|
assertAuditUpdate("markAudited",
|
"jianyan_zhuangtai = 'audited'",
|
"renwu_shenheren = #{auditorId}",
|
"renwu_shenheren_shijian = #{reviewedAt}");
|
assertAuditUpdate("markAuditRejected",
|
"jianyan_zhuangtai = 'audit_rejected'",
|
"renwu_tuihuiren = #{auditorId}",
|
"tuihui_yuanyin = #{note}");
|
}
|
|
private static void assertAuditUpdate(String methodName, String... expectedSql) {
|
Method method = Arrays.stream(LimsJianyanXiangMapper.class.getMethods())
|
.filter(candidate -> methodName.equals(candidate.getName()))
|
.findFirst()
|
.orElse(null);
|
assertNotNull(method);
|
|
InterceptorIgnore ignore = method.getAnnotation(InterceptorIgnore.class);
|
assertNotNull(ignore);
|
assertArrayEquals(new String[]{"Ilg@true"}, ignore.others());
|
|
Update update = method.getAnnotation(Update.class);
|
assertNotNull(update);
|
String sql = String.join(" ", update.value());
|
assertTrue(sql.contains("f_tenant_id = #{tenantId}"));
|
assertTrue(sql.contains("f_delete_mark IS NULL OR f_delete_mark = 0"));
|
assertTrue(sql.contains("jianyan_zhuangtai = 'pending_audit'"));
|
for (String expected : expectedSql) {
|
assertTrue(sql.contains(expected));
|
}
|
}
|
}
|