/* * Copyright 2011 Global Biodiversity Information Facility (GBIF) * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.gbif.checklistbank.ws.client; import org.gbif.api.model.checklistbank.NameUsage; import org.gbif.api.model.checklistbank.NameUsageMetrics; import org.gbif.api.model.common.paging.PagingRequest; import org.gbif.api.model.common.paging.PagingResponse; import org.gbif.api.service.checklistbank.NameUsageService; import org.gbif.api.vocabulary.Origin; import org.gbif.api.vocabulary.Rank; import java.net.URI; import java.util.List; import java.util.Locale; import java.util.UUID; 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 NameUsageWsClientIT { final NameUsageService wsClient; private final int NOT_FOUND_KEY = -10; public NameUsageWsClientIT() { wsClient = WsClientSuite.getClient(NameUsageService.class); } @Test public void testGet() { NameUsage nameUsage = wsClient.get(1, null); assertNotNull(nameUsage); assertEquals("Animalia", nameUsage.getScientificName()); } @Test public void testGetNotFound() { // null expected, 404 intercepted and converted to null thanks to HttpErrorResponseInterceptor assertNull(wsClient.get(NOT_FOUND_KEY, null)); } /** * Testing the locale dependent vernacular name string property. */ @Test public void testGetWithLocale() { int key = 100000025; NameUsage nameUsage = wsClient.get(key, Locale.ENGLISH); assertEquals("Eurasian Red Squirrel", nameUsage.getVernacularName()); nameUsage = wsClient.get(key, Locale.GERMANY); assertEquals("Europäisches Eichhörnchen", nameUsage.getVernacularName()); } @Test public void testGetWithLocaleNotFound() { assertNull(wsClient.get(NOT_FOUND_KEY, Locale.ENGLISH)); } @Test public void testListChildren() { PagingResponse<NameUsage> children = wsClient.listChildren(100000005, Locale.ENGLISH, new PagingRequest(0, 20)); assertNotNull(children); assertEquals(2, children.getResults().size()); } @Test public void testListChildrenNotFound() { PagingResponse<NameUsage> res = wsClient.listChildren(NOT_FOUND_KEY, Locale.ENGLISH, new PagingRequest()); NameUsageComponentWsClientITBase.assertEmptyResponse(res); } @Test public void testListParents() { List<NameUsage> parents = wsClient.listParents(100000009, Locale.ENGLISH); assertNotNull(parents); assertEquals(9, parents.size()); } @Test public void testListParentsNotFound() { List<NameUsage> res = wsClient.listParents(NOT_FOUND_KEY, Locale.ENGLISH); assertNotNull(res); assertTrue(res.isEmpty()); } @Test public void testListRelated() { List<NameUsage> related = wsClient.listRelated(10, Locale.ENGLISH, null).getResults(); assertNotNull(related); assertEquals(1, related.size()); related = wsClient.listRelated(1, Locale.ENGLISH, null, UUID.fromString("109aea14-c252-4a85-96e2-f5f4d5d088f4")).getResults(); assertEquals(1, related.size()); related = wsClient.listRelated(1, Locale.ENGLISH, null, UUID.fromString("109aea14-c252-4a85-96e2-f5f4d5d088ff")).getResults(); assertEquals(0, related.size()); } @Test public void testListRelatedNotFound() { List<NameUsage> res = wsClient.listRelated(NOT_FOUND_KEY, Locale.ENGLISH, null).getResults(); assertNotNull(res); assertTrue(res.isEmpty()); } @Test public void testListSynonyms() { PagingResponse<NameUsage> synonyms = wsClient.listSynonyms(100000011, Locale.ENGLISH, new PagingRequest(0, 20)); assertNotNull(synonyms); assertEquals(12, synonyms.getResults().size()); } @Test public void testListSynonymsNotFound() { PagingResponse<NameUsage> synonyms = wsClient.listSynonyms(NOT_FOUND_KEY, Locale.ENGLISH, new PagingRequest(0, 20)); NameUsageComponentWsClientITBase.assertEmptyResponse(synonyms); } @Test public void testGetMybatisStyle() { final NameUsage rodentia = wsClient.get(100000004, Locale.UK); final NameUsageMetrics rodentiaM = wsClient.getMetrics(100000004); assertNotNull(rodentia); assertEquals((Integer) 10, rodentia.getNubKey()); assertFalse(rodentia.isSynonym()); assertEquals("1000", rodentia.getTaxonID()); assertEquals("Rodentia", rodentia.getCanonicalName()); assertEquals("Rodentia Bowdich, 1821", rodentia.getScientificName()); assertEquals("Bowdich, 1821", rodentia.getAuthorship()); assertEquals(Rank.ORDER, rodentia.getRank()); assertEquals((Integer) 100000003, rodentia.getParentKey()); assertEquals("Animalia", rodentia.getKingdom()); assertEquals((Integer) 100000001, rodentia.getKingdomKey()); assertEquals("Chordata", rodentia.getPhylum()); assertEquals((Integer) 100000002, rodentia.getPhylumKey()); assertEquals(0, rodentiaM.getNumPhylum()); assertEquals("Mammalia", rodentia.getClazz()); assertEquals((Integer) 100000003, rodentia.getClassKey()); assertEquals(0, rodentiaM.getNumClass()); assertEquals(1, rodentiaM.getNumOrder()); assertEquals(1, rodentiaM.getNumFamily()); assertEquals(2, rodentiaM.getNumGenus()); assertEquals(3, rodentiaM.getNumSpecies()); assertEquals(8, rodentiaM.getNumSynonyms()); assertEquals(1, rodentiaM.getNumChildren()); assertEquals(24, rodentia.getNumDescendants()); assertEquals(Origin.SOURCE, rodentia.getOrigin()); assertEquals(UUID.fromString("109aea14-c252-4a85-96e2-f5f4d5d088f4"), rodentia.getDatasetKey()); assertNull(rodentia.getPublishedIn()); assertEquals("1000", rodentia.getTaxonID()); NameUsage squirrel = wsClient.get(100000025, Locale.UK); final NameUsageMetrics squirrelM = wsClient.getMetrics(100000025); assertNotNull(squirrel); assertNull(squirrel.getNubKey()); assertFalse(squirrel.isSynonym()); assertEquals("Sciurus vulgaris", squirrel.getCanonicalName()); assertEquals("Sciurus vulgaris Linnaeus, 1758", squirrel.getScientificName()); assertEquals("Linnaeus, 1758", squirrel.getAuthorship()); assertEquals("Eurasian Red Squirrel", squirrel.getVernacularName()); assertEquals(Rank.SPECIES, squirrel.getRank()); assertEquals((Integer) 100000024, squirrel.getParentKey()); assertEquals("Animalia", squirrel.getKingdom()); assertEquals((Integer) 100000001, squirrel.getKingdomKey()); assertEquals("Chordata", squirrel.getPhylum()); assertEquals((Integer) 100000002, squirrel.getPhylumKey()); assertEquals(0, squirrelM.getNumPhylum()); assertEquals("Mammalia", squirrel.getClazz()); assertEquals((Integer) 100000003, squirrel.getClassKey()); assertEquals(0, squirrelM.getNumClass()); assertEquals("Rodentia", squirrel.getOrder()); assertEquals((Integer) 100000004, squirrel.getOrderKey()); assertEquals(0, squirrelM.getNumOrder()); assertEquals("Sciuridae", squirrel.getFamily()); assertEquals((Integer) 100000005, squirrel.getFamilyKey()); assertEquals(0, squirrelM.getNumFamily()); assertEquals("Sciurus", squirrel.getGenus()); assertEquals((Integer) 100000011, squirrel.getGenusKey()); assertEquals(0, squirrelM.getNumGenus()); assertEquals(1, squirrelM.getNumSpecies()); assertEquals(9, squirrelM.getNumChildren()); assertEquals(4, squirrelM.getNumSynonyms()); assertEquals(UUID.fromString("109aea14-c252-4a85-96e2-f5f4d5d088f4"), squirrel.getDatasetKey()); assertEquals("Syst. Nat. , 10th ed. vol. 1 p. 63", squirrel.getPublishedIn()); assertEquals("2010030", squirrel.getTaxonID()); // TEST VERNACULAR squirrel = wsClient.get(100000040, null); assertNull(squirrel.getVernacularName()); squirrel = wsClient.get(100000040, Locale.ENGLISH); assertEquals("Caucasian Squirrel", squirrel.getVernacularName()); squirrel = wsClient.get(100000040, Locale.GERMANY); assertEquals("Kaukasischen Eichhörnchen", squirrel.getVernacularName()); // TEST non existing language VERNACULAR squirrel = wsClient.get(100000040, Locale.CHINESE); assertNull(squirrel.getVernacularName()); // TEST MULTIPLE IDENTIFIERS squirrel = wsClient.get(100000007, Locale.GERMANY); assertEquals("6905528", squirrel.getTaxonID()); assertEquals(URI.create("http://www.catalogueoflife.org/details/species/id/6905528"), squirrel.getReferences()); // TEST SYNONYM NameUsage syn = wsClient.get(100000027, Locale.FRENCH); assertNotNull(syn); assertTrue(syn.isSynonym()); assertEquals("Sciurus nadymensis", syn.getCanonicalName()); assertEquals("Sciurus nadymensis Serebrennikov, 1928", syn.getScientificName()); assertNull(syn.getVernacularName()); assertEquals(Rank.SPECIES, syn.getRank()); assertEquals((Integer) 100000024, syn.getParentKey()); assertEquals((Integer) 100000025, syn.getAcceptedKey()); assertEquals("Sciurus vulgaris Linnaeus, 1758", syn.getAccepted()); assertFalse(syn.isProParte()); } }