package org.openlca.core.database; import java.util.List; import org.junit.Assert; import org.junit.Test; import org.openlca.core.Tests; import org.openlca.core.model.Category; import org.openlca.core.model.ModelType; public class CategoryDaoTest { private CategoryDao dao = new CategoryDao(Tests.getDb()); @Test public void testSimple() { Category category = dao.insert(create()); Tests.emptyCache(); Category alias = dao.getForId(category.getId()); Assert.assertEquals(category.getName(), alias.getName()); dao.delete(category); // non-attached alias = dao.getForId(category.getId()); Assert.assertNull(alias); } @Test public void testAddChild() { Category parent = dao.insert(create()); Category child = create(); parent.getChildCategories().add(child); child.setCategory(parent); parent = dao.update(parent); child = parent.getChildCategories().get(0); Tests.emptyCache(); Category alias = dao.getForId(parent.getId()); Assert.assertEquals(1, alias.getChildCategories().size()); Assert.assertEquals(child.getRefId(), alias.getChildCategories().get(0) .getRefId()); dao.delete(alias); Assert.assertNull(dao.getForId(child.getId())); } @Test public void testFindRoot() { Category parent = create(); Category child = create(); parent.getChildCategories().add(child); child.setCategory(parent); dao.insert(parent); Tests.emptyCache(); List<Category> roots = dao.getRootCategories(ModelType.FLOW); Assert.assertTrue(roots.contains(parent)); Assert.assertFalse(roots.contains(child)); dao.delete(parent); } @Test public void findAllRootTypes() { // in the openLCA application not all of these types are really used // in categories, but this test should work for (ModelType type : ModelType.values()) { Category cat = create(); cat.setModelType(type); dao.insert(cat); Tests.emptyCache(); List<Category> categories = dao.getRootCategories(type); Assert.assertTrue(categories.contains(cat)); dao.delete(cat); categories = dao.getRootCategories(type); Assert.assertFalse(categories.contains(cat)); } } private Category create() { Category category = new Category(); category.setName("name"); category.setModelType(ModelType.FLOW); return category; } }