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 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 *")); } }