package jnpf.elnMapper;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import org.apache.ibatis.annotations.Select;
|
import org.junit.Test;
|
|
import java.lang.reflect.Method;
|
import java.util.List;
|
import java.util.Locale;
|
|
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertTrue;
|
|
public class ElnTemplateMapperTest {
|
|
@Test
|
public void querySelectsCurrentAvailableTemplateWithinTenant() throws Exception {
|
Method method = ElnTemplateMapper.class.getMethod(
|
"selectLatestTemplateFiles", IPage.class, String.class, String.class);
|
Select select = method.getAnnotation(Select.class);
|
assertTrue("查询方法必须声明 @Select", select != null);
|
String sql = String.join(" ", select.value()).toLowerCase(Locale.ROOT)
|
.replaceAll("\\s+", " ");
|
|
assertTrue(sql.contains("from eln_template_current_version c"));
|
assertTrue(sql.contains("join eln_template m"));
|
assertTrue(sql.contains("m.f_tenant_id = c.f_tenant_id"));
|
assertTrue(sql.contains("m.f_id = c.dangqian_muban_id"));
|
assertTrue(sql.contains("c.f_tenant_id = #{tenantid}"));
|
assertTrue(sql.contains("m.jianyan_xiangmu = #{jianyanxiangmu}"));
|
assertTrue(sql.contains("m.biz_status = 'published'"));
|
assertTrue(sql.contains("m.biz_enabled = 'enabled'"));
|
assertTrue(sql.contains("m.shengxiao_riqi <= current_timestamp"));
|
assertTrue(sql.contains("coalesce(m.f_delete_mark, 0) = 0"));
|
assertFalse(sql.contains("order by"));
|
assertTrue("分页应交给 MyBatis-Plus 根据数据库方言生成", !sql.contains("limit"));
|
}
|
|
@Test
|
public void codeQuerySelectsCurrentAvailableTemplateWithinTenant() throws Exception {
|
Method method = ElnTemplateMapper.class.getMethod(
|
"selectLatestTemplateFilesByTestDefinitionCode",
|
IPage.class, String.class, String.class);
|
Select select = method.getAnnotation(Select.class);
|
assertTrue("查询方法必须声明 @Select", select != null);
|
String sql = String.join(" ", select.value()).toLowerCase(Locale.ROOT)
|
.replaceAll("\\s+", " ");
|
|
assertTrue(sql.contains("from eln_template_current_version c"));
|
assertTrue(sql.contains("join eln_template m"));
|
assertTrue(sql.contains("c.f_tenant_id = #{tenantid}"));
|
assertTrue(sql.contains(
|
"m.jianyan_xiangmu_bianma = #{testdefinitioncode}"));
|
assertTrue(sql.contains("m.biz_status = 'published'"));
|
assertTrue(sql.contains("m.biz_enabled = 'enabled'"));
|
assertTrue(sql.contains("coalesce(c.f_delete_mark, 0) = 0"));
|
assertTrue(sql.contains("coalesce(m.f_delete_mark, 0) = 0"));
|
assertFalse(sql.contains("order by"));
|
assertFalse(sql.contains("limit"));
|
}
|
|
@Test
|
public void recordCreationQueryMatchesCurrentTemplateByProjectCode() throws Exception {
|
Method method = ElnTemplateMapper.class.getMethod(
|
"selectCurrentPublishedByTestDefinition", String.class, String.class);
|
Select select = method.getAnnotation(Select.class);
|
String sql = String.join(" ", select.value()).toLowerCase(Locale.ROOT)
|
.replaceAll("\\s+", " ");
|
|
assertTrue(sql.contains(
|
"m.jianyan_xiangmu_bianma = #{testdefinitioncode}"));
|
assertFalse(sql.contains("m.jianyan_xiangmu = #{testdefinitionid}"));
|
}
|
|
@Test
|
public void queryResolvesTemplateCategoriesWithinTenant() throws Exception {
|
Method method = ElnTemplateMapper.class.getMethod(
|
"selectTemplateCategories", String.class, List.class);
|
Select select = method.getAnnotation(Select.class);
|
assertTrue("查询方法必须声明 @Select", select != null);
|
String sql = String.join(" ", select.value()).toLowerCase(Locale.ROOT)
|
.replaceAll("\\s+", " ");
|
|
assertTrue(sql.contains("from eln_template_category"));
|
assertTrue(sql.contains("f_tenant_id = #{tenantid}"));
|
assertTrue(sql.contains("coalesce(f_delete_mark, 0) = 0"));
|
assertTrue(sql.contains("f_id in"));
|
}
|
|
@Test
|
public void latestTemplateCodeQueryGroupsBeforeDialectPagination() throws Exception {
|
Method method = ElnTemplateMapper.class.getMethod(
|
"selectLatestTemplateCodes", IPage.class, String.class,
|
String.class, String.class, String.class, String.class, String.class);
|
Select select = method.getAnnotation(Select.class);
|
assertTrue("查询方法必须声明 @Select", select != null);
|
String sql = String.join(" ", select.value()).toLowerCase(Locale.ROOT)
|
.replaceAll("\\s+", " ");
|
|
assertTrue(sql.contains("from eln_template m"));
|
assertTrue(sql.contains("m.f_tenant_id = #{tenantid}"));
|
assertTrue(sql.contains("coalesce(m.f_delete_mark, 0) = 0"));
|
assertTrue(sql.contains("<if test='mubanfenlei != null'>"));
|
assertTrue(sql.contains("m.muban_fenlei = #{mubanfenlei}"));
|
assertTrue(sql.contains("m.jianyan_xiangmu_mingcheng like #{keywordpattern}"));
|
assertTrue(sql.contains("group by m.muban_bianhao"));
|
assertTrue(sql.contains(
|
"case when max(coalesce(m.chuangjian_shijian, m.f_creator_time)) "
|
+ "is null then 1 else 0 end asc"));
|
assertTrue(sql.contains(
|
"max(coalesce(m.chuangjian_shijian, m.f_creator_time)) desc"));
|
assertFalse(sql.contains("f_last_modify_time"));
|
assertTrue(sql.contains("max(m.f_id) desc"));
|
assertFalse(sql.contains("limit"));
|
}
|
|
@Test
|
public void directoryQueryKeepsTemplatesWithoutCurrentVersionAndGroupsBeforePagination()
|
throws Exception {
|
Method method = ElnTemplateMapper.class.getMethod(
|
"selectTemplateDirectory", IPage.class, String.class,
|
String.class, String.class, String.class, String.class, String.class);
|
Select select = method.getAnnotation(Select.class);
|
assertTrue("查询方法必须声明 @Select", select != null);
|
String sql = String.join(" ", select.value()).toLowerCase(Locale.ROOT)
|
.replaceAll("\\s+", " ");
|
|
assertTrue(sql.contains("from eln_template m"));
|
assertTrue(sql.contains("left join eln_template_current_version c"));
|
assertTrue(sql.contains("left join eln_template e"));
|
assertTrue(sql.contains("c.f_tenant_id = m.f_tenant_id"));
|
assertTrue(sql.contains("c.muban_bianhao = m.muban_bianhao"));
|
assertTrue(sql.contains("coalesce(c.f_delete_mark, 0) = 0"));
|
assertTrue(sql.contains("e.f_id = c.dangqian_muban_id"));
|
assertTrue(sql.contains("e.muban_bianhao = m.muban_bianhao"));
|
assertTrue(sql.contains("coalesce(e.f_delete_mark, 0) = 0"));
|
assertTrue(sql.contains("e.f_id as shengxiaomubanid"));
|
assertTrue(sql.contains("e.muban_banben as shengxiaomubanbanben"));
|
assertTrue(sql.contains("<if test='bizstatus != null'>"));
|
assertTrue(sql.contains("e.biz_status = #{bizstatus}"));
|
assertTrue(sql.contains("<if test='bizenabled != null'>"));
|
assertTrue(sql.contains("e.biz_enabled = #{bizenabled}"));
|
assertTrue(sql.contains("group by m.muban_bianhao"));
|
assertFalse(sql.contains("limit"));
|
}
|
}
|