Skip to content

Commit

Permalink
QFocusMapping: added identities/identity query mapping + query test fix
Browse files Browse the repository at this point in the history
  • Loading branch information
virgo47 committed Aug 1, 2022
1 parent 6f8b845 commit 586b0d3
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,11 @@ protected QFocusMapping(

addRefMapping(F_PERSONA_REF, QObjectReferenceMapping.initForPersona(repositoryContext));
addRefMapping(F_LINK_REF, QObjectReferenceMapping.initForProjection(repositoryContext));

addNestedMapping(F_IDENTITIES, FocusIdentitiesType.class)
.addContainerTableMapping(FocusIdentitiesType.F_IDENTITY,
QFocusIdentityMapping.init(repositoryContext),
joinOn((o, fi) -> o.oid.eq(fi.ownerOid)));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,10 @@
import java.util.Collection;
import java.util.List;

import javax.xml.namespace.QName;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

import com.evolveum.midpoint.prism.Containerable;
import com.evolveum.midpoint.prism.PrismConstants;
import com.evolveum.midpoint.prism.PrismContainerValue;
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.PrismObject;
Expand Down Expand Up @@ -111,25 +109,28 @@ public void test115GetUserWithRetrieveOptions() throws CommonException {
.containsExactlyInAnyOrder("givenName", "familyName", "familyName.3", "dateOfBirth", "nationalId");
}


@Test
public void testSeachUsingFuzzyMatching() throws CommonException {
public void test200SearchUsingFuzzyMatching() throws CommonException {
when("user is obtained with retrieve options for identities");
Collection<SelectorOptions<GetOperationOptions>> getOptions = SchemaService.get()
.getOperationOptionsBuilder().item(FocusType.F_IDENTITIES).retrieve().build();
OperationResult result = createOperationResult();
ItemName familyNameQName = new ItemName(SchemaConstants.NS_MIDPOINT_PUBLIC_COMMON, "familyName");
var def = PrismContext.get().definitionFactory().createPropertyDefinition(familyNameQName, DOMUtil.XSD_STRING, null, null);
ItemName familyNameQName = new ItemName(SchemaConstants.NS_C, "familyName");
var def = PrismContext.get().definitionFactory().createPropertyDefinition(familyNameQName, DOMUtil.XSD_STRING, null, null);
def.toMutable().setRuntimeSchema(true);

ObjectQuery query = PrismContext.get().queryFor(UserType.class).itemWithDef(def, UserType.F_IDENTITIES,
FocusIdentitiesType.F_IDENTITY,
FocusIdentityType.F_ITEMS,
FocusIdentityItemsType.F_NORMALIZED,
new ItemName(SchemaConstants.NS_MIDPOINT_PUBLIC_COMMON, "familyName")
).eq("alice").build();
var ret = repositoryService.searchObjects(UserType.class, query, null, result);
ObjectQuery query = PrismContext.get().queryFor(UserType.class)
.itemWithDef(def,
UserType.F_IDENTITIES,
FocusIdentitiesType.F_IDENTITY,
FocusIdentityType.F_ITEMS,
FocusIdentityItemsType.F_NORMALIZED,
familyNameQName)
.eq("green") // TODO was alice, do you want givenName query?
.build();
var ret = repositoryService.searchObjects(UserType.class, query, null, result); // TODO use options and assert?
assertThat(ret.size()).isEqualTo(1);
}

// TODO modification test + hopefully updateGetOptions in QFocusMapping does the trick
}

0 comments on commit 586b0d3

Please sign in to comment.