/** * Copyright (C) Intersect 2012. * * This module contains Proprietary Information of Intersect, * and should be treated as Confidential. */ package au.org.intersect.exsite9.service; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.stub; import java.util.ArrayList; import java.util.Collections; import javax.persistence.EntityManagerFactory; import org.junit.Test; import au.org.intersect.exsite9.dao.DAOTest; import au.org.intersect.exsite9.dao.factory.MetadataAttributeDAOFactory; import au.org.intersect.exsite9.dao.factory.MetadataCategoryDAOFactory; import au.org.intersect.exsite9.domain.MetadataAttribute; import au.org.intersect.exsite9.domain.MetadataAttributeValue; import au.org.intersect.exsite9.domain.MetadataCategory; import au.org.intersect.exsite9.domain.MetadataCategoryType; import au.org.intersect.exsite9.domain.MetadataCategoryUse; import au.org.intersect.exsite9.domain.MetadataValue; /** * Tests {@link MetadataCategoryService} */ public class MetadataCategoryServiceUnitTest extends DAOTest { private MetadataCategoryService metadataCategoryService; @Test public void createNewMetadataCategoryTest() { EntityManagerFactory emf = mock(EntityManagerFactory.class); stub(emf.createEntityManager()).toReturn(createEntityManager()) .toReturn(createEntityManager()); MetadataCategoryDAOFactory metadataCategoryDAOFactory = new MetadataCategoryDAOFactory(); MetadataAttributeDAOFactory metadataAttribtueDAOFactory = new MetadataAttributeDAOFactory(); metadataCategoryService = new MetadataCategoryService(emf, metadataCategoryDAOFactory, metadataAttribtueDAOFactory); final MetadataAttribute mda = new MetadataAttribute("Some Name", Collections.<MetadataAttributeValue>emptyList()); MetadataCategory category = metadataCategoryService.createNewMetadataCategory("Names", "Description", MetadataCategoryType.CONTROLLED_VOCABULARY, MetadataCategoryUse.optional, false, false, null, mda); MetadataCategory categoryFoundById = metadataCategoryService.findById(category.getId()); assertEquals(category, categoryFoundById); } @Test public void updateMetadataCategoryTest() { EntityManagerFactory emf = mock(EntityManagerFactory.class); stub(emf.createEntityManager()).toReturn(createEntityManager()) .toReturn(createEntityManager()); MetadataCategoryDAOFactory metadataCategoryDAOFactory = new MetadataCategoryDAOFactory(); MetadataAttributeDAOFactory metadataAttribtueDAOFactory = new MetadataAttributeDAOFactory(); metadataCategoryService = new MetadataCategoryService(emf, metadataCategoryDAOFactory, metadataAttribtueDAOFactory); MetadataCategory category = metadataCategoryService.createNewMetadataCategory("Names", "Description", MetadataCategoryType.CONTROLLED_VOCABULARY, MetadataCategoryUse.optional, false, false, null, null); metadataCategoryService.updateMetadataCategory(category, "NameUpdated", "Description", MetadataCategoryUse.required, false, null, null); MetadataCategory updatedCategoryFoundById = metadataCategoryDAOFactory.createInstance(createEntityManager()) .findById(category.getId()); assertTrue(updatedCategoryFoundById.getName().equals("NameUpdated")); assertTrue(updatedCategoryFoundById.getUse().equals(MetadataCategoryUse.required)); } @Test public void testDeleteMetadataCategory() { final EntityManagerFactory emf = mock(EntityManagerFactory.class); stub(emf.createEntityManager()).toReturn(createEntityManager()) .toReturn(createEntityManager()) .toReturn(createEntityManager()); final MetadataCategoryDAOFactory metadataCategoryDAOFactory = new MetadataCategoryDAOFactory(); MetadataAttributeDAOFactory metadataAttribtueDAOFactory = new MetadataAttributeDAOFactory(); metadataCategoryService = new MetadataCategoryService(emf, metadataCategoryDAOFactory, metadataAttribtueDAOFactory); final MetadataCategory category = metadataCategoryService.createNewMetadataCategory("Names", "Description", MetadataCategoryType.CONTROLLED_VOCABULARY, MetadataCategoryUse.optional, false, false, Collections.<MetadataValue>emptyList(), null); assertNotNull(category.getId()); metadataCategoryService.deleteMetadataCategory(category); assertNotNull(category.getId()); assertNull(metadataCategoryService.findById(category.getId())); } @Test public void testAddValueToMetadataCategory() { final EntityManagerFactory emf = mock(EntityManagerFactory.class); stub(emf.createEntityManager()).toReturn(createEntityManager()) .toReturn(createEntityManager()) .toReturn(createEntityManager()) .toReturn(createEntityManager()) .toReturn(createEntityManager()); final MetadataCategoryDAOFactory metadataCategoryDAOFactory = new MetadataCategoryDAOFactory(); final MetadataAttributeDAOFactory metadataAttribtueDAOFactory = new MetadataAttributeDAOFactory(); metadataCategoryService = new MetadataCategoryService(emf, metadataCategoryDAOFactory, metadataAttribtueDAOFactory); MetadataCategory category = metadataCategoryService.createNewMetadataCategory("Names", "Description", MetadataCategoryType.CONTROLLED_VOCABULARY, MetadataCategoryUse.optional, false, false, new ArrayList<MetadataValue>(), new MetadataAttribute()); assertNotNull(category.getId()); final String value1 = "value1"; final MetadataValue mdv1 = metadataCategoryService.addValueToMetadataCategory(category, value1); assertEquals(value1, mdv1.getValue()); assertNotNull(mdv1.getId()); category = metadataCategoryService.findById(category.getId()); final MetadataValue mdv11 = metadataCategoryService.addValueToMetadataCategory(category, value1); assertEquals(mdv1, mdv11); category = metadataCategoryService.findById(category.getId()); final String value2 = "value2"; final MetadataValue mdv2 = metadataCategoryService.addValueToMetadataCategory(category, value2); assertEquals(value2, mdv2.getValue()); assertNotNull(mdv2.getId()); } }