刘光辉
5 小时以前 06f314545ac3514d7ce28939920866ae8188d31c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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())));
        }
    }
}