package org.gbif.checklistbank.cli; import org.gbif.api.model.checklistbank.NameUsage; import org.gbif.api.vocabulary.Rank; import org.gbif.api.vocabulary.TaxonomicStatus; import org.gbif.checklistbank.neo.Labels; import org.gbif.checklistbank.neo.NeoProperties; import org.gbif.checklistbank.neo.RelType; import org.junit.Test; import org.neo4j.graphdb.Node; import org.neo4j.graphdb.Transaction; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; /** * Simple test for the base test class to verify the get methods work fine. */ public class BaseTestIT extends BaseTest { private NameUsage buildUsage(String taxonID, String name, Rank rank, TaxonomicStatus status) { return buildUsage(taxonID, name, name, rank, status); } private NameUsage buildUsage(String taxonID, String sciName, String canonName, Rank rank, TaxonomicStatus status) { NameUsage u = new NameUsage(); u.setScientificName(sciName); u.setCanonicalName(canonName); u.setRank(rank); u.setTaxonID(taxonID); u.setTaxonomicStatus(status); return u; } @Test public void testGetUsage() throws Exception { initDb(); NameUsage f = buildUsage("t1", "Pinaceae", Rank.FAMILY, TaxonomicStatus.ACCEPTED); NameUsage sp = buildUsage("t2", "Abies alba", Rank.SPECIES, TaxonomicStatus.ACCEPTED); NameUsage syn = buildUsage("t3", "Picea alba", Rank.SPECIES, TaxonomicStatus.SYNONYM); try (Transaction tx = beginTx()) { Node fn = dao.create(f); Node spn = dao.create(sp); Node synn = dao.create(syn); fn.createRelationshipTo(spn, RelType.PARENT_OF); synn.createRelationshipTo(spn, RelType.SYNONYM_OF); synn.createRelationshipTo(spn, RelType.BASIONYM_OF); tx.success(); } try (Transaction tx = beginTx()) { NameUsage f2 = getUsageByName("Pinaceae"); NameUsage sp2 = getUsageByTaxonId("t2"); NameUsage syn2 = getUsageByTaxonId("t3"); assertEquals("Pinaceae", f2.getScientificName()); assertEquals("Abies alba", sp2.getScientificName()); assertEquals("Picea alba", syn2.getScientificName()); assertEquals(syn2, getUsageByKey(sp2.getBasionymKey())); assertEquals(sp2, getUsageByKey(syn2.getAcceptedKey())); assertEquals(f2, getUsageByKey(sp2.getParentKey())); } } @Test public void testIndexPerformance() throws Exception { initDb(); try (Transaction tx = beginTx()) { dao.getNeo().schema().indexFor(Labels.TAXON).on(NeoProperties.TAXON_ID).create(); dao.getNeo().schema().indexFor(Labels.TAXON).on(NeoProperties.SCIENTIFIC_NAME).create(); dao.getNeo().schema().indexFor(Labels.TAXON).on(NeoProperties.CANONICAL_NAME).create(); tx.success(); } int x = 100; System.out.println("Insert "+x+" nodes"); try (Transaction tx = beginTx()) { while (x > 0) { dao.create(species(x)); x--; } tx.success(); } try (Transaction tx = beginTx()) { assertNotNull(getUsageByName(species(12).getScientificName())); assertNotNull(getUsageByTaxonId("t12")); } } private NameUsage species(int x) { NameUsage u = new NameUsage(); final String name = "t"+x; u.setTaxonID(name); u.setCanonicalName(name); u.setScientificName(name+" Miller"); return u; } }