package org.ovirt.engine.core.dao;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import java.util.List;
import org.junit.Test;
import org.ovirt.engine.core.common.businessentities.VmTemplate;
import org.ovirt.engine.core.common.businessentities.VmTemplateStatus;
import org.ovirt.engine.core.compat.Guid;
public class VmTemplateDAOTest extends BaseDAOTestCase {
private static final Guid EXISTING_TEMPLATE_ID = new Guid("1b85420c-b84c-4f29-997e-0eb674b40b79");
private static final Guid DELETABLE_TEMPLATE_ID = new Guid("1b85420c-b84c-4f29-997e-0eb674b40b80");
private static final Guid STORAGE_DOMAIN_ID = new Guid("72e3a666-89e1-4005-a7ca-f7548004a9ab");
private static final Guid VDS_GROUP_ID = new Guid("b399944a-81ab-4ec5-8266-e19ba7c3c9d1");
private VmTemplateDAO dao;
private VmTemplate newVmTemplate;
private VmTemplate existingTemplate;
@Override
public void setUp() throws Exception {
super.setUp();
dao = dbFacade.getVmTemplateDAO();
existingTemplate = dao.get(
new Guid("1b85420c-b84c-4f29-997e-0eb674b40b79"));
newVmTemplate = new VmTemplate();
newVmTemplate.setId(Guid.NewGuid());
newVmTemplate.setname("NewVmTemplate");
newVmTemplate.setvds_group_id(VDS_GROUP_ID);
}
/**
* Ensures an id is required.
*/
@Test
public void testGetWithInvalidId() {
VmTemplate result = dao.get(Guid.NewGuid());
assertNull(result);
}
/**
* Ensures that the right template is returned.
*/
@Test
public void testGet() {
VmTemplate result = dao.get(EXISTING_TEMPLATE_ID);
assertNotNull(result);
assertEquals(EXISTING_TEMPLATE_ID, result.getId());
}
/**
* Ensures that all templates are returned.
*/
@Test
public void testGetAll() {
List<VmTemplate> result = dao.getAll();
assertNotNull(result);
assertFalse(result.isEmpty());
}
/**
* Ensures the right set of templates are returned.
*/
@Test
public void testGetAllForStorageDomain() {
List<VmTemplate> result = dao.getAllForStorageDomain(STORAGE_DOMAIN_ID);
assertNotNull(result);
assertFalse(result.isEmpty());
}
/**
* Ensures that the templates for the given vds group are returned.
*/
@Test
public void testGetAllForVdsGroup() {
List<VmTemplate> result = dao.getAllForVdsGroup(VDS_GROUP_ID);
assertNotNull(result);
assertFalse(result.isEmpty());
for (VmTemplate template : result) {
assertEquals(VDS_GROUP_ID, template.getvds_group_id());
}
}
/**
* Ensures that saving a template works as expected.
*/
@Test
public void testSave() {
dao.save(newVmTemplate);
VmTemplate result = dbFacade.getVmTemplateDAO().get(newVmTemplate.getId());
assertNotNull(result);
assertEquals(newVmTemplate, result);
}
/**
* Ensures that updating a template works as expected.
*/
@Test
public void testUpdate() {
existingTemplate.setdescription("This is an updated description");
dao.update(existingTemplate);
VmTemplate result = dbFacade.getVmTemplateDAO().get(existingTemplate.getId());
assertNotNull(result);
assertEquals(existingTemplate, result);
}
/**
* Ensures updating the status aspect of the VM Template works.
*/
@Test
public void testUpdateStatus() {
VmTemplate before = dao.get(existingTemplate.getId());
before.setstatus(VmTemplateStatus.Locked);
dao.updateStatus(existingTemplate.getId(), VmTemplateStatus.Locked);
VmTemplate after = dao.get(existingTemplate.getId());
assertEquals(before, after);
}
/**
* Ensures that removing a template works as expected.
*/
@Test
public void testRemove() {
VmTemplate before = dbFacade.getVmTemplateDAO().get(DELETABLE_TEMPLATE_ID);
assertNotNull(before);
dao.remove(DELETABLE_TEMPLATE_ID);
VmTemplate after = dbFacade.getVmTemplateDAO().get(DELETABLE_TEMPLATE_ID);
assertNull(after);
}
}