use of com.evolveum.midpoint.repo.sqale.qmodel.task.MTask in project midpoint by Evolveum.
the class SqaleRepoModifyObjectTest method test140ChangeReferenceAttribute.
@Test
public void test140ChangeReferenceAttribute() throws ObjectAlreadyExistsException, ObjectNotFoundException, SchemaException {
OperationResult result = createOperationResult();
MTask originalRow = selectObjectByOid(QTask.class, task1Oid);
given("delta with owner reference change for task 1 adding value");
UUID ownerTaskOid = UUID.randomUUID();
QName ownerTaskRelation = QName.valueOf("{https://random.org/ns}owner-task-rel");
ObjectDelta<TaskType> delta = prismContext.deltaFor(TaskType.class).item(TaskType.F_OWNER_REF).add(new ObjectReferenceType().oid(ownerTaskOid.toString()).type(UserType.COMPLEX_TYPE).relation(ownerTaskRelation)).asObjectDelta(task1Oid);
when("modifyObject is called");
repositoryService.modifyObject(TaskType.class, task1Oid, delta.getModifications(), result);
then("operation is successful, repository doesn't check target existence");
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));
ObjectReferenceType ownerRef = taskObject.getOwnerRef();
assertThat(ownerRef).isNotNull();
assertThat(ownerRef.getOid()).isEqualTo(ownerTaskOid.toString());
assertThat(ownerRef.getType()).isEqualTo(UserType.COMPLEX_TYPE);
assertThat(ownerRef.getRelation()).isEqualTo(ownerTaskRelation);
and("externalized column is updated");
MTask row = selectObjectByOid(QTask.class, task1Oid);
assertThat(row.version).isEqualTo(originalRow.version + 1);
assertThat(row.ownerRefTargetOid).isEqualTo(ownerTaskOid);
assertThat(row.ownerRefTargetType).isEqualTo(MObjectType.USER);
assertCachedUri(row.ownerRefRelationId, ownerTaskRelation);
}
use of com.evolveum.midpoint.repo.sqale.qmodel.task.MTask in project midpoint by Evolveum.
the class SqaleRepoModifyObjectTest method test146ChangeEnumAttribute.
@Test
public void test146ChangeEnumAttribute() throws ObjectAlreadyExistsException, ObjectNotFoundException, SchemaException {
OperationResult result = createOperationResult();
MTask originalRow = selectObjectByOid(QTask.class, task1Oid);
given("delta with execution status change for task 1 adding value");
ObjectDelta<TaskType> delta = prismContext.deltaFor(TaskType.class).item(TaskType.F_EXECUTION_STATE).add(TaskExecutionStateType.SUSPENDED).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.getExecutionState()).isEqualTo(TaskExecutionStateType.SUSPENDED);
and("externalized column is updated");
MTask row = selectObjectByOid(QTask.class, task1Oid);
assertThat(row.version).isEqualTo(originalRow.version + 1);
assertThat(row.executionState).isEqualTo(TaskExecutionStateType.SUSPENDED);
}
use of com.evolveum.midpoint.repo.sqale.qmodel.task.MTask in project midpoint by Evolveum.
the class SqaleRepoAddDeleteObjectTest method test830Task.
// TODO test for focus' related entities?
@Test
public void test830Task() throws Exception {
OperationResult result = createOperationResult();
given("task");
String objectName = "task" + getTestNumber();
UUID objectRefOid = UUID.randomUUID();
UUID ownerRefOid = UUID.randomUUID();
QName relationUri = QName.valueOf("{https://some.uri}someRelation");
var task = new TaskType(prismContext).name(objectName).taskIdentifier("task-id").binding(TaskBindingType.LOOSE).category("category").completionTimestamp(MiscUtil.asXMLGregorianCalendar(1L)).executionState(TaskExecutionStateType.RUNNABLE).result(new OperationResultType().message("result message").status(OperationResultStatusType.FATAL_ERROR)).handlerUri("handler-uri").lastRunStartTimestamp(MiscUtil.asXMLGregorianCalendar(1L)).lastRunFinishTimestamp(MiscUtil.asXMLGregorianCalendar(2L)).node("node").objectRef(objectRefOid.toString(), OrgType.COMPLEX_TYPE, relationUri).ownerRef(ownerRefOid.toString(), UserType.COMPLEX_TYPE, relationUri).parent("parent").schedule(new ScheduleType(prismContext).recurrence(TaskRecurrenceType.RECURRING)).resultStatus(OperationResultStatusType.UNKNOWN).schedulingState(TaskSchedulingStateType.READY).autoScaling(new TaskAutoScalingType(prismContext).mode(TaskAutoScalingModeType.DEFAULT)).threadStopAction(ThreadStopActionType.RESCHEDULE).waitingReason(TaskWaitingReasonType.OTHER_TASKS).dependent("dep-task-1").dependent("dep-task-2");
when("adding it to the repository");
repositoryService.addObject(task.asPrismObject(), null, result);
then("it is stored and relevant attributes are in columns");
assertThatOperationResult(result).isSuccess();
MTask row = selectObjectByOid(QTask.class, task.getOid());
assertThat(row.taskIdentifier).isEqualTo("task-id");
assertThat(row.binding).isEqualTo(TaskBindingType.LOOSE);
assertThat(row.category).isEqualTo("category");
assertThat(row.completionTimestamp).isEqualTo(Instant.ofEpochMilli(1));
assertThat(row.executionState).isEqualTo(TaskExecutionStateType.RUNNABLE);
assertThat(row.fullResult).isNotNull();
assertThat(row.resultStatus).isEqualTo(OperationResultStatusType.UNKNOWN);
assertCachedUri(row.handlerUriId, "handler-uri");
assertThat(row.lastRunStartTimestamp).isEqualTo(Instant.ofEpochMilli(1));
assertThat(row.lastRunFinishTimestamp).isEqualTo(Instant.ofEpochMilli(2));
assertThat(row.node).isEqualTo("node");
assertThat(row.objectRefTargetOid).isEqualTo(objectRefOid);
assertThat(row.objectRefTargetType).isEqualTo(MObjectType.ORG);
assertCachedUri(row.objectRefRelationId, relationUri);
assertThat(row.ownerRefTargetOid).isEqualTo(ownerRefOid);
assertThat(row.ownerRefTargetType).isEqualTo(MObjectType.USER);
assertCachedUri(row.ownerRefRelationId, relationUri);
assertThat(row.parent).isEqualTo("parent");
assertThat(row.recurrence).isEqualTo(TaskRecurrenceType.RECURRING);
assertThat(row.schedulingState).isEqualTo(TaskSchedulingStateType.READY);
assertThat(row.autoScalingMode).isEqualTo(TaskAutoScalingModeType.DEFAULT);
assertThat(row.threadStopAction).isEqualTo(ThreadStopActionType.RESCHEDULE);
assertThat(row.waitingReason).isEqualTo(TaskWaitingReasonType.OTHER_TASKS);
assertThat(row.dependentTaskIdentifiers).containsExactlyInAnyOrder("dep-task-1", "dep-task-2");
and("stored full object does not contain operation result");
TaskType parsedTask = parseFullObject(row.fullObject);
assertThat(parsedTask.getResult()).isNull();
}
use of com.evolveum.midpoint.repo.sqale.qmodel.task.MTask in project midpoint by Evolveum.
the class SqaleRepoModifyObjectTest method test141DeleteReferenceAttribute.
@Test
public void test141DeleteReferenceAttribute() throws ObjectAlreadyExistsException, ObjectNotFoundException, SchemaException {
OperationResult result = createOperationResult();
given("delta with owner reference replace to null ('delete') for task 1");
ObjectDelta<TaskType> delta = prismContext.deltaFor(TaskType.class).item(TaskType.F_OWNER_REF).replace().asObjectDelta(task1Oid);
and("task row previously having the owner reference value");
MTask originalRow = selectObjectByOid(QTask.class, task1Oid);
assertThat(originalRow.ownerRefTargetOid).isNotNull();
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 and owner ref is gone");
TaskType taskObject = repositoryService.getObject(TaskType.class, task1Oid, null, result).asObjectable();
assertThat(taskObject.getVersion()).isEqualTo(String.valueOf(originalRow.version + 1));
assertThat(taskObject.getOwnerRef()).isNull();
and("externalized column is set to NULL");
MTask row = selectObjectByOid(QTask.class, task1Oid);
assertThat(row.version).isEqualTo(originalRow.version + 1);
assertThat(row.ownerRefTargetOid).isNull();
assertThat(row.ownerRefTargetType).isNull();
assertThat(row.ownerRefRelationId).isNull();
}
use of com.evolveum.midpoint.repo.sqale.qmodel.task.MTask in project midpoint by Evolveum.
the class SqaleRepoModifyObjectTest method test110ChangeInstantAttribute.
@Test
public void test110ChangeInstantAttribute() throws ObjectAlreadyExistsException, ObjectNotFoundException, SchemaException {
OperationResult result = createOperationResult();
MTask originalRow = selectObjectByOid(QTask.class, task1Oid);
given("delta with last run start timestamp change for task 1 adding value");
ObjectDelta<TaskType> delta = prismContext.deltaFor(TaskType.class).item(TaskType.F_LAST_RUN_START_TIMESTAMP).add(MiscUtil.asXMLGregorianCalendar(1L)).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.getLastRunStartTimestamp()).isEqualTo(MiscUtil.asXMLGregorianCalendar(1L));
and("externalized column is updated");
MTask row = selectObjectByOid(QTask.class, task1Oid);
assertThat(row.version).isEqualTo(originalRow.version + 1);
assertThat(row.lastRunStartTimestamp).isEqualTo(Instant.ofEpochMilli(1));
}
Aggregations