package org.gbif.checklistbank.service.mybatis; import org.gbif.api.model.checklistbank.Description; import org.gbif.api.model.checklistbank.TableOfContents; import org.gbif.api.model.common.paging.Pageable; import org.gbif.api.model.common.paging.PagingRequest; import org.gbif.api.service.checklistbank.DescriptionService; import org.gbif.api.vocabulary.Language; import java.util.List; import java.util.Map; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; public class DescriptionServiceMyBatisIT extends MyBatisServiceITBase<DescriptionService> { public DescriptionServiceMyBatisIT() { super(DescriptionService.class); } private final Integer USAGE_ID = 100000040; @Test public void testGet() { Description description = service.get(26); assertEquals((Integer) 100000040, description.getSourceTaxonKey()); assertEquals( "The Caucasian squirrel (or Persian squirrel) is a tree squirrel in the genus Sciurus endemic to Armenia, Azerbaijan, Georgia, Greece, Iran, Iraq, Israel, Jordan, Lebanon, Syria, and Turkey. Its natural habitat is temperate broadleaf and mixed forests.[1]", description.getDescription()); assertEquals(Language.ENGLISH, description.getLanguage()); assertEquals("general", description.getType()); assertNull(description.getSource()); assertNull(description.getContributor()); assertNull(description.getCreator()); } @Test public void testToc() { TableOfContents toc = service.getToc(100000004); assertEquals(1, toc.listLanguages().size()); assertEquals(4, toc.listTopicEntries(Language.ENGLISH).size()); assertEquals(0, toc.listTopicEntries(Language.SPANISH).size()); for (String topic : toc.listTopicEntries(Language.ENGLISH).keySet()) { assertFalse(toc.listTopicEntries(Language.ENGLISH).get(topic).isEmpty()); assertNotNull(toc.listTopicEntries(Language.ENGLISH).get(topic).get(0)); assertTrue(toc.listTopicEntries(Language.ENGLISH).get(topic).get(0) > 0); } // same via nub toc = service.getToc(10); assertEquals(1, toc.listLanguages().size()); assertEquals(4, toc.listTopicEntries(Language.ENGLISH).size()); assertEquals(0, toc.listTopicEntries(Language.SPANISH).size()); for (String topic : toc.listTopicEntries(Language.ENGLISH).keySet()) { assertFalse(toc.listTopicEntries(Language.ENGLISH).get(topic).isEmpty()); assertNotNull(toc.listTopicEntries(Language.ENGLISH).get(topic).get(0)); assertTrue(toc.listTopicEntries(Language.ENGLISH).get(topic).get(0) > 0); } } @Test public void testListByChecklistUsage() { List<Description> descriptions = service.listByUsage(USAGE_ID, null).getResults(); assertEquals(3, descriptions.size()); assertEquals((Integer) 25, descriptions.get(0).getKey()); assertEquals((Integer) 26, descriptions.get(1).getKey()); assertEquals((Integer) 27, descriptions.get(2).getKey()); // TEST PAGING Pageable page = new PagingRequest(0, 1); Description d1 = service.listByUsage(USAGE_ID, page).getResults().get(0); page = new PagingRequest(1, 1); Description d2 = service.listByUsage(USAGE_ID, page).getResults().get(0); assertEquals(d1, descriptions.get(0)); assertEquals(d2, descriptions.get(1)); } @Test public void testListByRange() { Map<Integer, List<Description>> map = ((DescriptionServiceMyBatis) service).listRange(1, 100000020); assertEquals(3, map.size()); assertEquals(4, map.get(10).size()); assertEquals(1, map.get(100000007).size()); assertEquals(4, map.get(100000004).size()); for (Description v : map.get(100000004)) { // checklist records assertNull(v.getSourceTaxonKey()); assertNotNull(v.getDescription()); assertNotNull(v.getKey()); } for (Description v : map.get(10)) { // nub records assertNotNull(v.getSourceTaxonKey()); assertNotNull(v.getDescription()); assertNotNull(v.getKey()); } } }