package org.ovirt.engine.core.dao;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
import java.util.Arrays;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.ovirt.engine.core.common.VdcObjectType;
import org.ovirt.engine.core.common.job.StepSubjectEntity;
import org.ovirt.engine.core.compat.Guid;
public class StepSubjectEntityDaoTest extends BaseDaoTestCase {
private StepSubjectEntityDao dao;
@Override
@Before
public void setUp() throws Exception {
super.setUp();
dao = dbFacade.getStepSubjectEntityDao();
}
@Test
public void saveStepSubjectEntities() {
VdcObjectType type = VdcObjectType.VmPool;
Guid entityId = Guid.newGuid();
StepSubjectEntity stepSubjectEntity = new StepSubjectEntity(FixturesTool.STEP_ID, type, entityId, 50);
Guid entityId2 = Guid.newGuid();
StepSubjectEntity stepSubjectEntity2 = new StepSubjectEntity(FixturesTool.STEP_ID, type, entityId2, 50);
dao.saveAll(Arrays.asList(stepSubjectEntity, stepSubjectEntity2));
List<StepSubjectEntity> entities = dao.getStepSubjectEntitiesByStepId(FixturesTool.STEP_ID);
assertEquals("StepSubjectEntity list not in the expected size", 4, entities.size());
assertSubjectEntityPresence(stepSubjectEntity, entities, true);
assertSubjectEntityPresence(stepSubjectEntity2, entities, true);
}
@Test
public void getStepSubjectEntityByStepId() {
List<StepSubjectEntity> entities = dao.getStepSubjectEntitiesByStepId(FixturesTool.STEP_ID);
assertEquals("StepSubjectEntity list not in the expected size", 2, entities.size());
StepSubjectEntity stepSubjectEntity = new StepSubjectEntity(FixturesTool.STEP_ID,
VdcObjectType.Storage, FixturesTool.IMAGE_GROUP_ID, 50);
assertSubjectEntityPresence(stepSubjectEntity, entities, true);
}
private void assertSubjectEntityPresence(StepSubjectEntity stepSubjectEntity, List<StepSubjectEntity> entities,
boolean shouldBePresent) {
boolean isPresent = entities.stream().anyMatch(p -> p.equals(stepSubjectEntity) &&
p.getStepEntityWeight().equals(stepSubjectEntity.getStepEntityWeight()));
assertEquals("StepSubjectEntity was " + (shouldBePresent ? "not " : "") +
"found in the entities list although wasn't expected to", shouldBePresent, isPresent);
}
@Test
public void remove() {
List<StepSubjectEntity> entities = dao.getStepSubjectEntitiesByStepId(FixturesTool.STEP_ID);
assertEquals("StepSubjectEntity list not in the expected size", 2, entities.size());
assertNotEquals("StepSubjectEntity list elements should be different", entities.get(0), entities.get(1));
StepSubjectEntity toRemove = entities.remove(0);
dao.remove(toRemove.getEntityId(), toRemove.getStepId());
entities = dao.getStepSubjectEntitiesByStepId(FixturesTool.STEP_ID);
assertEquals("StepSubjectEntity list not in the expected size", 1, entities.size());
assertSubjectEntityPresence(toRemove, entities, false);
}
}