Skip to content

Commit

Permalink
Order org tree roots alphabetically
Browse files Browse the repository at this point in the history
Originally, the order of organization tree roots was unspecified
i.e. left to particular DBMS. Here we order these roots by their name.

This fixes TestPageOrg.test004testCreateChild that was failing
on most databases (except for H2).
  • Loading branch information
mederly committed Mar 2, 2020
1 parent 46a8c06 commit b49b00a
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 27 deletions.
Expand Up @@ -12,6 +12,8 @@

import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.web.session.OrgStructurePanelStorage;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;

import org.apache.commons.lang3.ObjectUtils;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
Expand All @@ -30,7 +32,6 @@
import com.evolveum.midpoint.prism.polystring.PolyString;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.schema.util.ObjectQueryUtil;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.logging.LoggingUtils;
import com.evolveum.midpoint.util.logging.Trace;
Expand Down Expand Up @@ -165,9 +166,12 @@ private List<PrismObject<OrgType>> loadOrgRoots() {

List<PrismObject<OrgType>> list = new ArrayList<>();
try {
ObjectQuery query = ObjectQueryUtil.createRootOrgQuery(getPageBase().getPrismContext());
ObjectQuery query = getPageBase().getPrismContext().queryFor(OrgType.class)
.isRoot()
.asc(OrgType.F_NAME)
.build();
ObjectFilter assignableItemsFilter = getAssignableItemsFilter();
if (assignableItemsFilter != null){
if (assignableItemsFilter != null) {
query.addFilter(assignableItemsFilter);
}
list = getPageBase().getModelService().searchObjects(OrgType.class, query, null, task, result);
Expand Down
Expand Up @@ -41,10 +41,13 @@ public class TestPageOrg extends AbstractInitializedGuiIntegrationTest {
private static final Trace LOGGER = TraceManager.getTrace(TestPageOrg.class);

private static final String MAIN_FORM = "mainPanel:mainForm";
private static final String FORM_INPUT_DESCRIPTION = "tabPanel:panel:basicSystemConfiguration:values:0:value:propertiesLabel:properties:1:property:values:0:valueContainer:form:input:input";
// private static final String FORM_INPUT_DESCRIPTION = "tabPanel:panel:basicSystemConfiguration:values:0:value:propertiesLabel:properties:1:property:values:0:valueContainer:form:input:input";
private static final String PATH_FORM_NAME = "tabPanel:panel:main:values:0:value:propertiesLabel:properties:0:property:values:0:valueContainer:form:input:originValueContainer:origValueWithButton:origValue:input";
private static final String FORM_SAVE = "save";

private static final String NEW_ORG_NAME = "A-newOrg"; // starts with "A" to be alphabetically first
private static final String NEW_ORG_CHILD_NAME = "newOrgChild";

@Override
public void initSystem(Task initTask, OperationResult initResult) throws Exception {
super.initSystem(initTask, initResult);
Expand All @@ -69,12 +72,12 @@ public void test003testAddNewOrg() throws Exception {
renderPage(PageOrgUnit.class);

FormTester formTester = tester.newFormTester(MAIN_FORM, false);
formTester.setValue(PATH_FORM_NAME, "newOrg");
formTester = formTester.submit(FORM_SAVE);
formTester.setValue(PATH_FORM_NAME, NEW_ORG_NAME);
formTester.submit(FORM_SAVE);

Thread.sleep(5000);

PrismObject<OrgType> newOrg = findObjectByName(OrgType.class, "newOrg");
PrismObject<OrgType> newOrg = findObjectByName(OrgType.class, NEW_ORG_NAME);
assertNotNull(newOrg, "New org not created.");
LOGGER.info("created org: {}", newOrg.debugDump());
}
Expand All @@ -86,25 +89,22 @@ public void test004testCreateChild() throws Exception {
tester.assertRenderedPage(PageOrgUnit.class);

FormTester formTester = tester.newFormTester(MAIN_FORM, false);
formTester.setValue(PATH_FORM_NAME, "newOrgChild");
formTester = formTester.submit(FORM_SAVE);
formTester.setValue(PATH_FORM_NAME, NEW_ORG_CHILD_NAME);
formTester.submit(FORM_SAVE);

Thread.sleep(5000);

PrismObject<OrgType> newOrgChild = findObjectByName(OrgType.class, "newOrgChild");
PrismObject<OrgType> newOrg = findObjectByName(OrgType.class, "newOrg");
PrismObject<OrgType> newOrgChild = findObjectByName(OrgType.class, NEW_ORG_CHILD_NAME);
PrismObject<OrgType> newOrg = findObjectByName(OrgType.class, NEW_ORG_NAME);
assertNotNull(newOrgChild, "New org not created.");
assertAssignedOrg(newOrgChild, newOrg.getOid());
}

private Page renderPage(Class<? extends Page> expectedRenderedPageClass) {
private void renderPage(Class<? extends Page> expectedRenderedPageClass) {
LOGGER.info("render page system configuration");
PageParameters params = new PageParameters();
Page pageAccount = tester.startPage(expectedRenderedPageClass, params);
tester.startPage(expectedRenderedPageClass, params);

tester.assertRenderedPage(expectedRenderedPageClass);

return pageAccount;
}

}
Expand Up @@ -46,13 +46,12 @@
public final class QueryBuilder {

final private Class<? extends Containerable> queryClass;
final private ComplexTypeDefinition containerCTD;
final private PrismContext prismContext;

private QueryBuilder(Class<? extends Containerable> queryClass, PrismContext prismContext) {
this.queryClass = queryClass;
this.prismContext = prismContext;
containerCTD = prismContext.getSchemaRegistry().findComplexTypeDefinitionByCompileTimeClass(queryClass);
ComplexTypeDefinition containerCTD = prismContext.getSchemaRegistry().findComplexTypeDefinitionByCompileTimeClass(queryClass);
if (containerCTD == null) {
throw new IllegalArgumentException("Couldn't find definition for complex type " + queryClass);
}
Expand All @@ -69,13 +68,4 @@ public PrismContext getPrismContext() {
public static S_FilterEntryOrEmpty queryFor(Class<? extends Containerable> queryClass, PrismContext prismContext) {
return R_Filter.create(new QueryBuilder(queryClass, prismContext));
}

// ItemDefinition findItemDefinition(ItemPath itemPath) throws SchemaException {
// ItemDefinition itemDefinition = containerCTD.findItemDefinition(itemPath);
// if (itemDefinition == null) {
// throw new SchemaException("Couldn't find definition for '" + itemPath + "' in " + containerCTD);
// }
// return itemDefinition;
// }

}

0 comments on commit b49b00a

Please sign in to comment.