package org.ovirt.engine.api.restapi.types;
import java.util.Arrays;
import org.junit.Test;
import org.ovirt.engine.api.model.Step;
import org.ovirt.engine.api.model.StepEnum;
import org.ovirt.engine.api.model.StepStatus;
import org.ovirt.engine.core.common.VdcObjectType;
import org.ovirt.engine.core.common.job.StepSubjectEntity;
import org.ovirt.engine.core.compat.DateTime;
import org.ovirt.engine.core.compat.Guid;
public class StepMapperTest extends AbstractInvertibleMappingTest<Step, org.ovirt.engine.core.common.job.Step, org.ovirt.engine.core.common.job.Step> {
public StepMapperTest() {
super(org.ovirt.engine.api.model.Step.class,
org.ovirt.engine.core.common.job.Step.class,
org.ovirt.engine.core.common.job.Step.class);
}
@Override
protected void verify(Step model, Step transform) {
assertNotNull(transform);
assertEquals(model.getId(), transform.getId());
assertEquals(model.getDescription(), transform.getDescription());
assertEquals(model.getJob().getId(), transform.getJob().getId());
if (model.getParentStep() != null) {
assertEquals(model.getParentStep().getId(), transform.getParentStep().getId());
}
assertEquals("unexpected progress", model.getProgress(), transform.getProgress());
}
@Override
protected Step postPopulate(Step model) {
model.setStatus(StepStatus.STARTED);
model.setType(StepEnum.VALIDATING);
return super.postPopulate(model);
}
@Test
public void testSubjectEntities() {
org.ovirt.engine.core.common.job.Step bllStep = createBLLStep();
Guid executionHostId = Guid.newGuid();
bllStep.setSubjectEntities(
Arrays.asList(new StepSubjectEntity(bllStep.getId(), VdcObjectType.EXECUTION_HOST, executionHostId),
new StepSubjectEntity(bllStep.getId(), VdcObjectType.Disk, Guid.Empty)));
Step model = StepMapper.map(bllStep, null);
assertNotNull(model.getExecutionHost());
assertEquals(executionHostId.toString(), model.getExecutionHost().getId());
bllStep = StepMapper.map(model, null);
assertNull("subject entities shouldn't be mapped back to the model", bllStep.getSubjectEntities());
}
private org.ovirt.engine.core.common.job.Step createBLLStep() {
org.ovirt.engine.core.common.job.Step bllStep = new org.ovirt.engine.core.common.job.Step();
bllStep.setId(Guid.Empty);
bllStep.setJobId(Guid.Empty);
bllStep.setStartTime(DateTime.getNow());
bllStep.setEndTime(DateTime.getNow());
bllStep.setStepType(org.ovirt.engine.core.common.job.StepEnum.EXECUTING);
return bllStep;
}
}