/** * Copyright (C) Intersect 2012. * * This module contains Proprietary Information of Intersect, * and should be treated as Confidential. */ package au.org.intersect.exsite9.dao; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import javax.persistence.EntityManager; import javax.persistence.EntityTransaction; import org.junit.Test; import org.mockito.Mockito; import au.org.intersect.exsite9.domain.MetadataAssociation; import au.org.intersect.exsite9.domain.MetadataCategory; import au.org.intersect.exsite9.domain.MetadataCategoryType; import au.org.intersect.exsite9.domain.MetadataCategoryUse; /** * Tests {@link MetadataAssociationDAO} */ public final class MetadataAssociationDAOUnitTest { @Test public void testCreateMetadataAssociation() { final EntityManager em = Mockito.mock(EntityManager.class); final EntityTransaction et = Mockito.mock(EntityTransaction.class); final MetadataAssociationDAO toTest = new MetadataAssociationDAO(em); final MetadataCategory mdc = new MetadataCategory("mdc", MetadataCategoryType.CONTROLLED_VOCABULARY, MetadataCategoryUse.optional); final MetadataAssociation mda = new MetadataAssociation(mdc); when(em.getTransaction()).thenReturn(et); toTest.createMetadataAssociation(mda); verify(et).begin(); verify(em).persist(mda); verify(et).commit(); } @Test public void testUpdateMetadataAssociation() { final EntityManager em = Mockito.mock(EntityManager.class); final EntityTransaction et = Mockito.mock(EntityTransaction.class); final MetadataAssociationDAO toTest = new MetadataAssociationDAO(em); final MetadataCategory mdc = new MetadataCategory("mdc", MetadataCategoryType.CONTROLLED_VOCABULARY, MetadataCategoryUse.optional); final MetadataAssociation mda = new MetadataAssociation(mdc); when(em.getTransaction()).thenReturn(et); toTest.updateMetadataAssociation(mda); verify(et).begin(); verify(em).merge(mda); verify(et).commit(); } @Test public void testRemoveMetadataAssociation() { final EntityManager em = Mockito.mock(EntityManager.class); final EntityTransaction et = Mockito.mock(EntityTransaction.class); final MetadataAssociationDAO toTest = new MetadataAssociationDAO(em); final MetadataCategory mdc = new MetadataCategory("mdc", MetadataCategoryType.CONTROLLED_VOCABULARY, MetadataCategoryUse.optional); final MetadataAssociation mda = new MetadataAssociation(mdc); when(em.getTransaction()).thenReturn(et); when(em.merge(mda)).thenReturn(mda); toTest.removeMetadataAssociation(mda); verify(et).begin(); verify(em).remove(mda); verify(et).commit(); } @Test public void testRemoveMetadataAssociationInTrans() { final EntityManager em = Mockito.mock(EntityManager.class); final EntityTransaction et = Mockito.mock(EntityTransaction.class); final MetadataAssociationDAO toTest = new MetadataAssociationDAO(em); final MetadataCategory mdc = new MetadataCategory("mdc", MetadataCategoryType.CONTROLLED_VOCABULARY, MetadataCategoryUse.optional); final MetadataAssociation mda = new MetadataAssociation(mdc); when(em.getTransaction()).thenReturn(et); when(em.merge(mda)).thenReturn(mda); when(et.isActive()).thenReturn(true); toTest.removeMetadataAssociation(mda); verify(em).remove(mda); } }