package jnpf.dmsMapper;
|
|
import jnpf.dmsDatabase.DmsJsonNodeTypeHandler;
|
import org.apache.ibatis.builder.xml.XMLMapperBuilder;
|
import org.apache.ibatis.session.Configuration;
|
import org.junit.jupiter.api.Test;
|
import java.util.Map;
|
import java.util.UUID;
|
import static org.junit.jupiter.api.Assertions.*;
|
|
class DmsVersionPropertiesMapperSqlTest {
|
@Test void versionPropertiesAreTenantScopedAndMappedAsJson() throws Exception {
|
Configuration config = new Configuration();
|
for (String name : new String[]{"DmsVersionPropertiesMapper", "DmsWenjianXinzengShenheMapper", "DmsWenjianXiudingShenheMapper"}) {
|
String path = "mapper/" + name + ".xml";
|
try (var in = getClass().getResourceAsStream("/" + path)) {
|
new XMLMapperBuilder(in, config, path, config.getSqlFragments()).parse();
|
}
|
}
|
var namespace = DmsVersionPropertiesMapper.class.getName();
|
var params = Map.of("tenantId", "tenant", "versionId", UUID.randomUUID(), "properties", "{}");
|
var find = config.getMappedStatement(namespace + ".find");
|
var mapping = find.getResultMaps().get(0).getResultMappings().stream()
|
.filter(m -> "extendedProperties".equals(m.getProperty())).findFirst().orElseThrow();
|
assertInstanceOf(DmsJsonNodeTypeHandler.class, mapping.getTypeHandler());
|
assertEquals("extended_properties", mapping.getColumn());
|
String findSql = find.getBoundSql(params).getSql();
|
assertTrue(findSql.contains("tenant_id = ?"));
|
assertTrue(findSql.contains("id = ?"));
|
var insert = config.getMappedStatement(namespace + ".insertVersion");
|
assertEquals(org.apache.ibatis.mapping.SqlCommandType.INSERT, insert.getSqlCommandType());
|
var version = new jnpf.dmsEntity.permission.entity.DmsFileVersionEntity();
|
String insertSql = insert.getBoundSql(Map.of("version", version, "properties", "{}")).getSql();
|
assertTrue(insertSql.contains("extended_properties"));
|
assertTrue(insertSql.contains("CAST(? AS jsonb)"));
|
assertFalse(config.hasStatement(namespace + ".initialize"));
|
for (String name : new String[]{"DmsWenjianXinzengShenheMapper", "DmsWenjianXiudingShenheMapper"}) {
|
var statement = config.getMappedStatement("jnpf.dmsMapper." + name + ".selectByFlowForUpdate");
|
assertTrue(statement.getResultMaps().get(0).getResultMappings().stream()
|
.anyMatch(m -> "shenhe_ren_id".equals(m.getColumn()) && "shenheRenId".equals(m.getProperty())));
|
}
|
}
|
}
|