package jnpf.dmsMapper; import org.apache.ibatis.builder.xml.XMLMapperBuilder; import org.apache.ibatis.session.Configuration; import org.junit.jupiter.api.Test; import java.util.*; import static org.junit.jupiter.api.Assertions.*; class DmsWenjianBupinghengMapperXmlTest { @Test void completionRecognizesUnsignedRecycledCopiesWithoutInventingHandoverData() throws Exception { Configuration c = new Configuration(); try (java.io.InputStream input = getClass().getResourceAsStream("/mapper/DmsWenjianBupinghengMapper.xml")) { new XMLMapperBuilder(input, c, "mapper/DmsWenjianBupinghengMapper.xml", c.getSqlFragments()).parse(); } String sql = c.getMappedStatement(DmsWenjianBupinghengMapper.class.getName() + ".finishDistribution") .getBoundSql(Map.of("tenantId", "tenant", "taskId", "task")).getSql().replaceAll("\\s+", " "); assertTrue(sql.contains("signed.f_id IS NULL AND recycled.task_status IS NULL")); assertTrue(sql.contains("recycled.task_status IS NULL OR recycled.task_status = 'yidayin'")); assertTrue(sql.contains("p.biz_status IN ('daixiaohui', 'yixiaohui', 'daiguidang', 'yiguidang')")); assertTrue(sql.contains("q.f_tenant_id = p.f_tenant_id AND q.dayin_renwu_id = p.dayin_renwu_id")); assertTrue(sql.contains("jsonb_build_object('id', p.f_id)")); assertTrue(sql.contains("COALESCE(signed.fafang_shijian, d.fafang_shijian)")); assertTrue(sql.contains("p.biz_status IN ('daifafang', 'daiqianshou')")); } @Test void executionMapperUsesNativeSchemaAndNeverCreatesDocuments() throws Exception { Configuration c=new Configuration(); try(java.io.InputStream input=getClass().getResourceAsStream("/mapper/DmsWenjianBupinghengMapper.xml")){ new XMLMapperBuilder(input,c,"mapper/DmsWenjianBupinghengMapper.xml",c.getSqlFragments()).parse(); } String ns="jnpf.dmsMapper.DmsWenjianBupinghengMapper."; assertFalse(c.hasStatement(ns+"insertDocument"));assertFalse(c.hasStatement(ns+"insertDetail")); assertFalse(c.hasStatement(ns+"selectBySerial")); for(String name:List.of("lockDocument","lockItems","completeDocument","linkReplacement")){ String sql=c.getMappedStatement(ns+name).getBoundSql(Map.of()).getSql(); assertTrue(sql.contains("f_tenant_id = ?"));assertTrue(sql.contains("f_delete_mark IS NULL")); assertFalse(sql.contains("f_creator_time"));assertFalse(sql.contains("f_last_modify_time")); } assertTrue(c.getMappedStatement(ns+"lockDocument").getBoundSql(Map.of()).getSql().contains("FOR UPDATE")); assertTrue(c.getMappedStatement(ns+"lockItems").getBoundSql(Map.of()).getSql().contains("FOR UPDATE")); assertTrue(c.getMappedStatement(ns+"completeDocument").getBoundSql(Map.of()).getSql().contains("zhixing_shijian IS NULL")); assertFalse(c.getResultMap(ns+"ExecutionMap").getAutoMapping());assertFalse(c.getResultMap(ns+"ItemMap").getAutoMapping()); } }