package jnpf.dmsMapper;
|
|
import jnpf.dmsDatabase.DmsUuidTypeHandler;
|
import org.apache.ibatis.mapping.BoundSql;
|
import org.apache.ibatis.mapping.MappedStatement;
|
import org.apache.ibatis.session.Configuration;
|
import org.junit.jupiter.api.Test;
|
|
import java.util.HashMap;
|
import java.util.Map;
|
import java.util.UUID;
|
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
|
class DmsPermissionResourceMapperSqlTest {
|
|
@Test
|
void childListIncludesCurrentDocumentVersionPropertiesInOneQuery() {
|
Configuration configuration = new Configuration();
|
configuration.getTypeHandlerRegistry().register(UUID.class, DmsUuidTypeHandler.class);
|
configuration.addMapper(DmsPermissionResourceMapper.class);
|
MappedStatement statement = configuration.getMappedStatement(
|
DmsPermissionResourceMapper.class.getName() + ".selectChildren");
|
|
Map<String, Object> parameters = new HashMap<>();
|
parameters.put("tenantId", "tenant-1");
|
parameters.put("parentId", UUID.fromString("018f0000-0000-7000-8000-000000000301"));
|
parameters.put("limit", 100);
|
BoundSql boundSql = statement.getBoundSql(parameters);
|
String sql = boundSql.getSql().replaceAll("\\s+", " ").trim();
|
|
assertTrue(sql.contains("LEFT JOIN public.dms_version_states current_state"));
|
assertTrue(sql.contains("current_state.lifecycle_status = 'EFFECTIVE'"));
|
assertTrue(sql.contains("LEFT JOIN public.dms_file_versions current_version"));
|
assertTrue(sql.contains("COALESCE(d.document_no, version_document.document_no) AS document_no"));
|
assertTrue(sql.contains("COALESCE(v.version_label, current_version.version_label) AS version_label"));
|
assertTrue(sql.contains("COALESCE(version_state.effective_to, current_state.effective_to) AS effective_to"));
|
assertTrue(sql.endsWith("LIMIT ?"));
|
assertFalse(sql.contains("SELECT *"));
|
}
|
}
|