package org.gbif.checklistbank.ws.resources; import org.gbif.api.model.checklistbank.NameUsage; import org.gbif.api.model.checklistbank.TypeSpecimen; import org.gbif.api.model.checklistbank.search.NameUsageSearchParameter; import org.gbif.api.model.checklistbank.search.NameUsageSearchRequest; import org.gbif.api.model.checklistbank.search.NameUsageSearchResult; import org.gbif.api.model.common.paging.Pageable; import org.gbif.api.model.common.paging.PagingRequest; import org.gbif.api.model.common.paging.PagingResponse; import org.gbif.api.model.common.search.SearchResponse; import org.gbif.api.service.checklistbank.DescriptionService; import org.gbif.api.service.checklistbank.DistributionService; import org.gbif.api.service.checklistbank.IdentifierService; import org.gbif.api.service.checklistbank.MultimediaService; import org.gbif.api.service.checklistbank.NameUsageSearchService; import org.gbif.api.service.checklistbank.NameUsageService; import org.gbif.api.service.checklistbank.ReferenceService; import org.gbif.api.service.checklistbank.SpeciesProfileService; import org.gbif.api.service.checklistbank.TypeSpecimenService; import org.gbif.api.service.checklistbank.VernacularNameService; import org.gbif.api.vocabulary.TypeStatus; import org.gbif.checklistbank.service.mybatis.mapper.UsageCountMapper; import java.util.List; import java.util.Locale; import com.google.common.collect.Lists; import org.junit.Before; import org.junit.Test; import org.mockito.Matchers; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; public class SpeciesResourceTest { private NameUsageService mockNameUsageService; private VernacularNameService mockVernacularNameService; private TypeSpecimenService mockTypeSpecimenService; private SpeciesProfileService mockSpeciesProfileService; private ReferenceService mockReferenceService; private MultimediaService mockImageService; private DescriptionService mockDescriptionService; private DistributionService mockDistributionService; private IdentifierService mockIdentifierService; private NameUsageSearchService mockSearchService; private UsageCountMapper mockUsageCountMapper; private SpeciesResource resource; private NameUsage nameUsage; private Locale locale; private static final int NAME_USAGE_KEY = 103350120; private Pageable page; private SearchResponse<NameUsageSearchResult, NameUsageSearchParameter> searchResponse; @Before public void setUp() throws Exception { mockNameUsageService = mock(NameUsageService.class); mockVernacularNameService = mock(VernacularNameService.class); mockTypeSpecimenService = mock(TypeSpecimenService.class); mockSpeciesProfileService = mock(SpeciesProfileService.class); mockReferenceService = mock(ReferenceService.class); mockImageService = mock(MultimediaService.class); mockDescriptionService = mock(DescriptionService.class); mockDistributionService = mock(DistributionService.class); mockIdentifierService = mock(IdentifierService.class); mockSearchService = mock(NameUsageSearchService.class); mockUsageCountMapper = mock(UsageCountMapper.class); searchResponse = new SearchResponse<NameUsageSearchResult, NameUsageSearchParameter>(0, 20); searchResponse.setCount(1000L); resource = new SpeciesResource(mockNameUsageService, mockVernacularNameService, mockTypeSpecimenService, mockSpeciesProfileService, mockReferenceService, mockImageService, mockDescriptionService, mockDistributionService, mockIdentifierService, mockSearchService, mockUsageCountMapper); locale = Locale.US; nameUsage = new NameUsage(); nameUsage.setKey(NAME_USAGE_KEY); page = new PagingRequest(0, 1); } @Test public void testGet() throws Exception { when(mockNameUsageService.get(NAME_USAGE_KEY, locale)).thenReturn(nameUsage); NameUsage nameUsage = resource.get(NAME_USAGE_KEY, locale); assertEquals(String.valueOf(NAME_USAGE_KEY), nameUsage.getKey().toString()); } @Test public void testListTypeSpecimensByNameUsage() { TypeSpecimen ts = new TypeSpecimen(); ts.setSourceTaxonKey(NAME_USAGE_KEY); ts.setTypeStatus(TypeStatus.PARATYPE); List<TypeSpecimen> list = Lists.newLinkedList(); list.add(ts); PagingResponse<TypeSpecimen> response = new PagingResponse<TypeSpecimen>(0, 1, 1l, list); when(mockTypeSpecimenService.listByUsage(NAME_USAGE_KEY, page)).thenReturn(response); PagingResponse<TypeSpecimen> result = resource.listTypeSpecimensByNameUsage(NAME_USAGE_KEY, page); assertEquals(result.getResults().get(0).getSourceTaxonKey().toString(), String.valueOf(NAME_USAGE_KEY)); } @Test public void testSearch() throws Exception { when(mockSearchService.search(Matchers.any(NameUsageSearchRequest.class))).thenReturn(searchResponse); SearchResponse<NameUsageSearchResult, NameUsageSearchParameter> searchResponse2 = resource.search(new NameUsageSearchRequest(1000L, 20)); assertNotNull(searchResponse2); } }