Skip to content

Commit

Permalink
SqaleRepoModifyObjectTest: fix of tests with empty PCV after Prism fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
virgo47 committed Jun 28, 2021
1 parent d6286ad commit d65ad21
Showing 1 changed file with 32 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,22 +17,21 @@
import java.util.UUID;
import javax.xml.namespace.QName;

import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.SerializationOptions;
import com.evolveum.midpoint.repo.sqale.qmodel.accesscert.*;

import org.assertj.core.api.Assertions;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

import com.evolveum.midpoint.prism.Item;
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.SerializationOptions;
import com.evolveum.midpoint.prism.delta.ItemDelta;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.prism.path.ItemName;
import com.evolveum.midpoint.prism.polystring.PolyString;
import com.evolveum.midpoint.repo.api.RepositoryService;
import com.evolveum.midpoint.repo.sqale.SqaleRepoBaseTest;
import com.evolveum.midpoint.repo.sqale.jsonb.Jsonb;
import com.evolveum.midpoint.repo.sqale.qmodel.accesscert.*;
import com.evolveum.midpoint.repo.sqale.qmodel.assignment.*;
import com.evolveum.midpoint.repo.sqale.qmodel.common.MContainerType;
import com.evolveum.midpoint.repo.sqale.qmodel.focus.MUser;
Expand Down Expand Up @@ -1667,7 +1666,8 @@ public void test206SetNestedMetadataWithEmptyContainer()
TaskType taskObject = repositoryService.getObject(TaskType.class, task1Oid, null, result)
.asObjectable();
assertThat(taskObject.getVersion()).isEqualTo(String.valueOf(originalRow.version + 1));
assertThat(taskObject.getMetadata()).isNull();
assertThat(taskObject.getMetadata()).isNotNull()
.matches(m -> m.asPrismContainerValue().isEmpty());

and("all externalized columns for metadata are cleared");
MTask row = selectObjectByOid(QTask.class, task1Oid);
Expand All @@ -1685,14 +1685,14 @@ public void test206SetNestedMetadataWithEmptyContainer()
}

@Test
public void test207AddingEmptyNestedMetadataContainer()
public void test207SettingMetadataContainerToNull()
throws ObjectAlreadyExistsException, ObjectNotFoundException, SchemaException {
OperationResult result = createOperationResult();
MTask originalRow = selectObjectByOid(QTask.class, task1Oid);

given("delta with empty metadata added for task 1");
given("delta replacing metadata with nothing for task 1");
ObjectDelta<TaskType> delta = prismContext.deltaFor(TaskType.class)
.item(ObjectType.F_METADATA).add(new MetadataType())
.item(ObjectType.F_METADATA).replace()
.asObjectDelta(task1Oid);

when("modifyObject is called");
Expand All @@ -1704,24 +1704,33 @@ public void test207AddingEmptyNestedMetadataContainer()
and("serialized form (fullObject) is updated");
TaskType taskObject = repositoryService.getObject(TaskType.class, task1Oid, null, result)
.asObjectable();
// this one is not narrowed to empty modifications, version is incremented
assertThat(taskObject.getVersion()).isEqualTo(String.valueOf(originalRow.version + 1));
// but empty container is not left in the full object
assertThat(taskObject.getMetadata()).isNull();
}

and("all externalized columns for metadata are set (or left) null");
MTask row = selectObjectByOid(QTask.class, task1Oid);
assertThat(row.version).isEqualTo(originalRow.version + 1);
assertThat(row.creatorRefTargetOid).isNull();
assertThat(row.creatorRefTargetType).isNull();
assertThat(row.creatorRefRelationId).isNull();
assertThat(row.createChannelId).isNull();
assertThat(row.createTimestamp).isNull();
assertThat(row.modifierRefTargetOid).isNull();
assertThat(row.modifierRefTargetType).isNull();
assertThat(row.modifierRefRelationId).isNull();
assertThat(row.modifyChannelId).isNull();
assertThat(row.modifyTimestamp).isNull();
@Test
public void test208AddingEmptyNestedMetadataContainer()
throws ObjectAlreadyExistsException, ObjectNotFoundException, SchemaException {
OperationResult result = createOperationResult();
MTask originalRow = selectObjectByOid(QTask.class, task1Oid);

given("delta with empty metadata added for task 1");
ObjectDelta<TaskType> delta = prismContext.deltaFor(TaskType.class)
.item(ObjectType.F_METADATA).add(new MetadataType())
.asObjectDelta(task1Oid);

when("modifyObject is called");
repositoryService.modifyObject(TaskType.class, task1Oid, delta.getModifications(), result);

then("operation is successful");
assertThatOperationResult(result).isSuccess();

and("serialized form (fullObject) is updated");
TaskType taskObject = repositoryService.getObject(TaskType.class, task1Oid, null, result)
.asObjectable();
assertThat(taskObject.getVersion()).isEqualTo(String.valueOf(originalRow.version + 1));
assertThat(taskObject.getMetadata()).isNotNull()
.matches(m -> m.asPrismContainerValue().isEmpty());
}

@Test
Expand Down

0 comments on commit d65ad21

Please sign in to comment.