package jnpf.dmsMapper; import org.apache.ibatis.builder.xml.XMLMapperBuilder; import org.apache.ibatis.io.Resources; import org.apache.ibatis.mapping.MappedStatement; import org.apache.ibatis.session.Configuration; import org.junit.jupiter.api.Test; import java.io.InputStream; import java.util.Arrays; import java.util.HashMap; import java.util.Map; import static org.junit.jupiter.api.Assertions.*; class DmsWenjianGuidangMapperXmlTest { private Configuration parse() throws Exception { Configuration configuration = new Configuration(); String resource = "mapper/DmsWenjianGuidangMapper.xml"; try (InputStream in = Resources.getResourceAsStream(resource)) { new XMLMapperBuilder(in, configuration, resource, configuration.getSqlFragments()).parse(); } return configuration; } @Test void conflictsMatchNativeSerialsAndPreviouslySavedIdsWithinTenant() throws Exception { MappedStatement statement = parse().getMappedStatement( DmsWenjianGuidangMapper.class.getName() + ".selectConflicts"); Map params = new HashMap<>(); params.put("ids", Arrays.asList("copy-1")); params.put("shenqingId", "current-application"); String sql = statement.getBoundSql(params).getSql().replaceAll("\\s+", " "); assertFalse(statement.getResultMaps().get(0).getAutoMapping()); assertTrue(sql.contains("p.f_tenant_id = g.f_tenant_id")); assertTrue(sql.contains("g.wenjian_liushui_id = p.dayin_liushuihao")); assertTrue(sql.contains("g.wenjian_liushui_id = p.f_id")); assertTrue(sql.contains("p.f_id IN")); assertTrue(sql.contains("s.f_id != ?")); assertTrue(sql.contains("NOT IN (3, 4, 7, 9)")); assertTrue(sql.contains("p.f_delete_mark IS NULL")); } @Test void confirmationStillUsesTenantAndExpectedStatus() throws Exception { Map params = new HashMap<>(); params.put("ids", Arrays.asList("copy-1")); String sql = parse().getMappedStatement(DmsWenjianGuidangMapper.class.getName() + ".changeStatus") .getBoundSql(params).getSql().replaceAll("\\s+", " "); assertTrue(sql.contains("f_tenant_id = ?")); assertTrue(sql.contains("AND biz_status = ? AND f_id IN")); assertTrue(sql.contains("f_delete_mark IS NULL")); } }