package org.ihtsdo.otf.refset.graph.gao; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.util.List; import org.apache.commons.configuration.Configuration; import org.apache.commons.configuration.ConfigurationException; import org.ihtsdo.otf.refset.common.TestGraph; import org.ihtsdo.otf.refset.domain.MetaData; import org.ihtsdo.otf.refset.domain.Refset; import org.ihtsdo.otf.refset.exception.EntityAlreadyExistException; import org.ihtsdo.otf.refset.exception.EntityNotFoundException; import org.ihtsdo.otf.refset.exception.RefsetServiceException; import org.ihtsdo.otf.refset.graph.RefsetGraphAccessException; import org.ihtsdo.otf.refset.graph.RefsetGraphFactory; import org.ihtsdo.otf.refset.service.RefsetBrowseServiceStubData; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "file:src/main/webapp/WEB-INF/spring/appServlet/spring-refset-browse-service-stub-data.xml"}) public class RefsetGAOTest { static { System.setProperty("env", "junit"); } private static RefsetGAO gao; private static RefsetAdminGAO aGao; @Autowired private RefsetBrowseServiceStubData data; private static List<Refset> rs; private static RefsetGraphFactory f; @Before public void setUp() throws Exception { rs = data.getRefSets(); assertNotNull(rs); assertTrue(!rs.isEmpty()); } @BeforeClass public static void initialize() throws RefsetServiceException, ConfigurationException { TestGraph.deleteGraph(); TestGraph.createTestRefsetGraphSchema(); TestGraph.createTestSnomedGraphSchema(); Configuration config = TestGraph.getTestGraphConfig(); gao = new RefsetGAO(); f = new RefsetGraphFactory(config); gao.setRGFactory(f); gao.setSGFactory(f); aGao = new RefsetAdminGAO(); aGao.setFactory(f); MemberGAO mGao = new MemberGAO(); mGao.setFactory(f); mGao.setRefsetGao(gao); aGao.setMemberGao(mGao); aGao.setRefsetGao(gao); } @After public void tearDown() throws Exception { //cleanup(); } @AfterClass public static void cleanup() throws RefsetGraphAccessException, EntityNotFoundException { TestGraph.deleteGraph(); } @Test public void testGetReftest() throws RefsetServiceException, RefsetGraphAccessException, EntityNotFoundException, EntityAlreadyExistException { Refset i = rs.get(0); aGao.removeRefset(i.getUuid(), "junit"); aGao.addRefset(data.getRefSet(i.getUuid())); Refset r = gao.getRefset(i.getUuid()); assertNotNull(r); assertEquals(i.getCreated().getMillis(), r.getCreated().getMillis(), 1000); assertEquals(i.getDescription(), r.getDescription()); assertEquals(i.getModuleId(), r.getModuleId()); assertEquals(i.getPublishedDate().getMillis(), r.getPublishedDate().getMillis(), 100); assertEquals(i.isPublished(), r.isPublished()); assertEquals(null, r.getType());//test that type is not coming anymore assertEquals(i.getEffectiveTime().getMillis(), r.getEffectiveTime().getMillis(), 100); } @Test(expected = EntityNotFoundException.class) public void testGetReftestInvalidRefsetId() throws RefsetServiceException, RefsetGraphAccessException, EntityNotFoundException { gao.getRefset("junitId"); } @Test public void testGetMetaDataAfterGetttingRefset() throws RefsetServiceException, RefsetGraphAccessException, EntityNotFoundException, EntityAlreadyExistException { Refset i = rs.get(0); Refset rInput = data.getRefSet(i.getUuid()); aGao.addRefset(rInput); Refset r = gao.getRefset(rInput.getUuid()); assertNotNull(r); MetaData rm = r.getMetaData(); assertNotNull(rm); assertNotNull(rm.getId()); } @Test(expected = EntityNotFoundException.class) public void testGetMetaDataInvalidId() throws RefsetServiceException, RefsetGraphAccessException, EntityNotFoundException, EntityAlreadyExistException { //make sure atleast one Refset exist in database to avoid schema exception Refset input = rs.get(0); aGao.addRefset(data.getRefSet(input.getUuid())); gao.getMetaData("someID"); } @Test(expected = EntityNotFoundException.class) public void testGetReftestInvalidNodeId() throws RefsetServiceException, RefsetGraphAccessException, EntityNotFoundException, EntityAlreadyExistException { Refset input = rs.get(0); aGao.addRefset(data.getRefSet(input.getUuid()));//to avoid NPE when there is no class available of type Refset gao.getRefset("junitId"); } }