From fbc83d2e005a8c004ef77a77ff59c2182ed293e8 Mon Sep 17 00:00:00 2001 From: Pavol Mederly Date: Fri, 4 Oct 2019 18:25:50 +0200 Subject: [PATCH] Add (failing) test for MID-5826 --- .../midpoint/repo/sql/ModifyTest.java | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ModifyTest.java b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ModifyTest.java index 9b753d286ab..a7d9aaeda8d 100644 --- a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ModifyTest.java +++ b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ModifyTest.java @@ -27,6 +27,7 @@ import java.io.File; import java.io.IOException; +import java.sql.Timestamp; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -116,6 +117,7 @@ public class ModifyTest extends BaseSQLRepoTest { private static final QName QNAME_LOOT = new QName("http://example.com/p", "loot"); private static final QName QNAME_WEAPON = new QName("http://example.com/p", "weapon"); + private static final QName QNAME_FUNERAL_DATE = new QName("http://example.com/p", "funeralDate"); @BeforeSuite public void setup() throws SchemaException, SAXException, IOException { @@ -1155,4 +1157,45 @@ public void test360ReplaceModifyApprovers() throws Exception { assertEquals("Wrong # of users found", 1, users.size()); } + @Test(enabled = false) // MID-5826 + public void test400ReplaceExtensionItem() throws Exception { + final String TEST_NAME = "test400ReplaceExtensionItem"; + TestUtil.displayTestTitle(TEST_NAME); + + // GIVEN + OperationResult result = new OperationResult(TEST_NAME); + + PrismObject user = prismContext.createObjectable(UserType.class) + .name("test400") + .oid("oid-400") + .asPrismObject(); + repositoryService.addObject(user, null, result); + + assertExtensionDateValue(user.getOid(), 0); + + XMLGregorianCalendar dateTime = XmlTypeConverter.createXMLGregorianCalendar("2022-04-05T16:14:58"); + + List> itemDeltasSet = DeltaBuilder.deltaFor(UserType.class, prismContext) + .item(UserType.F_EXTENSION, QNAME_FUNERAL_DATE).replace(dateTime) + .asItemDeltas(); + repositoryService.modifyObject(UserType.class, user.getOid(), itemDeltasSet, getModifyOptions(), result); + + assertExtensionDateValue(user.getOid(), 1); + + List> itemDeltasUnset = DeltaBuilder.deltaFor(UserType.class, prismContext) + .item(UserType.F_EXTENSION, QNAME_FUNERAL_DATE).replace() + .asItemDeltas(); + repositoryService.modifyObject(UserType.class, user.getOid(), itemDeltasUnset, getModifyOptions(), result); + + assertExtensionDateValue(user.getOid(), 0); + } + + private void assertExtensionDateValue(String objectOid, int expected) { + Session session = open(); + //noinspection unchecked + List values = session.createQuery("select d.value from ROExtDate d where d.ownerOid = '" + objectOid + "'").list(); + System.out.println("Values: " + values); + assertEquals("Wrong # of extension values found", expected, values.size()); + close(session); + } }