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.io.File; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.configuration.Configuration; import org.apache.commons.configuration.MapConfiguration; 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.graph.gao.RefsetGAO; import org.ihtsdo.otf.refset.schema.RefsetSchema; 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 RefsetAdminGAOTest { static { System.setProperty("env", "junit"); } private RefsetGAO gao; private RefsetAdminGAO aGao; @Autowired private RefsetBrowseServiceStubData data; private List<Refset> rs; private RefsetGraphFactory f; @Before public void setUp() throws Exception { Map<String, Object> map = new HashMap<String, Object>(); map.put("storage.directory", "/tmp/berkeley"); map.put("storage.backend", "berkeleyje"); Configuration config = new MapConfiguration(map); /*create schema*/ RefsetSchema sg = new RefsetSchema("src/test/resources/titan-graph-es-junit.properties"); sg.createSchema(); gao = new RefsetGAO(); f = new RefsetGraphFactory(config); gao.setRGFactory(f); MemberGAO mGao = new MemberGAO(); mGao.setFactory(f); mGao.setRefsetGao(gao); aGao = new RefsetAdminGAO(); aGao.setFactory(f); aGao.setMemberGao(mGao); aGao.setRefsetGao(gao); rs = data.getRefSets(); assertNotNull(rs); assertTrue(!rs.isEmpty()); } @BeforeClass public static void cleanUp() { delete(); } @After public void tearDown() throws Exception { //cleanup(); } @AfterClass public static void cleanup() throws RefsetGraphAccessException, EntityNotFoundException { delete(); } private static void delete() { File f = new File("/tmp/berkeley"); String[] files = f.list(); if (files != null) { for (int i = 0; i < files.length; i++) { File file = new File("/tmp/berkeley/" + files[i]); System.err.println(file.getAbsolutePath()); file.delete(); } } f.delete(); } @Test public void testAddRefset() throws RefsetServiceException, RefsetGraphAccessException, EntityNotFoundException, EntityAlreadyExistException { aGao.addRefset(rs.get(0)); List<Refset> rs = gao.getRefSets(false); assertEquals(1, rs.size()); } @Test public void testAddRefsetAlreadyExist() throws RefsetServiceException, RefsetGraphAccessException, EntityNotFoundException, EntityAlreadyExistException { aGao.addRefset(rs.get(0)); aGao.addRefset(rs.get(0)); List<Refset> rs = gao.getRefSets(false); assertEquals(1, rs.size()); } @Test(expected = EntityNotFoundException.class) public void testRemoveRefsetWhenNotExist() throws RefsetServiceException, RefsetGraphAccessException, EntityNotFoundException, EntityAlreadyExistException { aGao.addRefset(rs.get(0)); aGao.removeRefset(new Refset().getUuid(), "junit"); } @Test public void testAddRefsetWithMember() throws RefsetServiceException, RefsetGraphAccessException, EntityNotFoundException, EntityAlreadyExistException { aGao.addRefset(data.getRefSet("450973005")); assertEquals(true, gao.getRefset("450973005") != null); } @Test public void loadData() throws RefsetServiceException, RefsetGraphAccessException, EntityNotFoundException, EntityAlreadyExistException { int i = 0; for (Refset r : rs.subList(0, 2)) { aGao.addRefset(data.getRefSet(r.getUuid())); assertEquals(true, gao.getRefset(r.getUuid()) != null); i++; } assertEquals(i, 2); List<Refset> result = gao.getRefSets(false); assertEquals(2, result.size()); assertEquals(0, result.get(0).getMembers().size()); Refset r = gao.getRefset(result.get(0).getUuid()); assertEquals(300, r.getMembers().size()); } @Test public void testUpdateRefset() throws RefsetServiceException, RefsetGraphAccessException, EntityNotFoundException, EntityAlreadyExistException { Refset input = rs.get(0); aGao.addRefset(data.getRefSet(input.getUuid())); Refset r = gao.getRefset(input.getUuid()); assertNotNull(r); r.setDescription("Junit Update"); aGao.updateRefset(r); Refset rUpdated = gao.getRefset(input.getUuid()); MetaData rm = r.getMetaData(); MetaData rmUpdt = rUpdated.getMetaData(); assertEquals(rm.getId(), rmUpdt.getId()); assertEquals("Junit Update", rUpdated.getDescription()); assertEquals(r.getMembers().size(), rUpdated.getMembers().size()); } @Test(expected = EntityNotFoundException.class) public void testUpdateRefsetInvalidRefset() throws RefsetServiceException, RefsetGraphAccessException, EntityNotFoundException { aGao.updateRefset(new Refset()); } }