Skip to content

Commit

Permalink
collection facets + multivalue params
Browse files Browse the repository at this point in the history
  • Loading branch information
marcos-lg committed Oct 21, 2024
1 parent a45d530 commit f144869
Show file tree
Hide file tree
Showing 45 changed files with 1,969 additions and 943 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,11 @@
*/
package org.gbif.registry.ws.it;

import static org.gbif.registry.ws.it.fixtures.TestConstants.IT_APP_KEY2;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.gbif.api.vocabulary.UserRole;
import org.gbif.registry.database.BaseDBTest;
import org.gbif.registry.search.test.EsManageServer;
Expand All @@ -21,10 +26,6 @@
import org.gbif.ws.client.filter.SimplePrincipalProvider;
import org.gbif.ws.json.JacksonJsonObjectMapperProvider;
import org.gbif.ws.security.KeyStore;

import java.util.Arrays;
import java.util.Collections;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
Expand All @@ -38,8 +39,6 @@
import org.springframework.test.context.DynamicPropertySource;
import org.springframework.test.context.junit.jupiter.SpringExtension;

import static org.gbif.registry.ws.it.fixtures.TestConstants.IT_APP_KEY2;

/** Base class for IT tests that initializes data sources and basic security settings. */
@ExtendWith(SpringExtension.class)
@SpringBootTest(
Expand Down Expand Up @@ -125,6 +124,10 @@ protected <T> T getService(ServiceType param, T resource, T client) {
}
}

protected <T> List<T> asList(T value) {
return Collections.singletonList(value);
}

@DynamicPropertySource
static void properties(DynamicPropertyRegistry registry) {
registry.add("registry.datasource.url", PG_CONTAINER::getJdbcUrl);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,11 +106,11 @@ public void listTest() {
.thenReturn(new PagingResponse<>(new PagingRequest(), Long.valueOf(views.size()), views));

CollectionSearchRequest req = CollectionSearchRequest.builder().build();
req.setCity("city");
req.setInstitution(UUID.randomUUID());
req.setCity(Collections.singletonList("city"));
req.setInstitution(Collections.singletonList(UUID.randomUUID()));
req.setCountry(Collections.singletonList(Country.DENMARK));
req.setGbifRegion(Collections.singletonList(GbifRegion.EUROPE));
req.setPersonalCollection(true);
req.setPersonalCollection(Collections.singletonList(true));
req.setAccessionStatus(Collections.singletonList("Institutional"));
req.setPreservationTypes(Arrays.asList("SampleCryopreserved", "SampleDried"));
PagingResponse<CollectionView> result = getClient().list(req);
Expand Down Expand Up @@ -183,7 +183,7 @@ public void listDeletedTest() {
.thenReturn(new PagingResponse<>(new PagingRequest(), Long.valueOf(views.size()), views));

CollectionSearchRequest request = CollectionSearchRequest.builder().build();
request.setReplacedBy(UUID.randomUUID());
request.setReplacedBy(Collections.singletonList(UUID.randomUUID()));
PagingResponse<CollectionView> result = getClient().listDeleted(request);
assertEquals(views.size(), result.getResults().size());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,20 @@

import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.UUID;
import org.gbif.api.model.collections.request.CollectionDescriptorsSearchRequest;
import org.gbif.api.model.collections.request.InstitutionSearchRequest;
import org.gbif.api.model.collections.search.CollectionFacet;
import org.gbif.api.model.collections.search.CollectionSearchResponse;
import org.gbif.api.model.collections.search.CollectionsFullSearchResponse;
import org.gbif.api.model.collections.search.FacetedSearchResponse;
import org.gbif.api.model.collections.search.Highlight;
import org.gbif.api.model.collections.search.InstitutionSearchResponse;
import org.gbif.api.model.common.paging.PagingResponse;
import org.gbif.api.model.common.paging.PagingRequest;
import org.gbif.api.vocabulary.Country;
import org.gbif.api.vocabulary.collections.CollectionFacetParameter;
import org.gbif.api.vocabulary.collections.InstitutionFacetParameter;
import org.gbif.registry.service.collections.CollectionsSearchService;
import org.gbif.registry.ws.client.collections.CollectionsSearchClient;
import org.gbif.registry.ws.it.fixtures.RequestTestFixture;
Expand Down Expand Up @@ -69,11 +74,13 @@ public void searchTest() {
highlight.setSnippet("snippet");
response.setHighlights(Collections.singleton(highlight));

when(collectionsSearchService.search(q, hl, null, null, Country.SPAIN, limit))
when(collectionsSearchService.search(
q, hl, null, null, Collections.singletonList(Country.SPAIN), limit))
.thenReturn(Collections.singletonList(response));

List<CollectionsFullSearchResponse> responseReturned =
collectionsSearchClient.searchCrossEntities(q, hl, null, null, Country.SPAIN, limit);
collectionsSearchClient.searchCrossEntities(
q, hl, null, null, Collections.singletonList(Country.SPAIN), limit);
assertEquals(1, responseReturned.size());
assertEquals(response, responseReturned.get(0));
}
Expand All @@ -89,9 +96,9 @@ public void searchInstitutionsTest() {
response.setHighlights(Collections.singleton(highlight));

when(collectionsSearchService.searchInstitutions(any()))
.thenReturn(new PagingResponse<>(0, 20, 1L, Collections.singletonList(response)));
.thenReturn(new FacetedSearchResponse<>(0, 20, 1L, Collections.singletonList(response)));

PagingResponse<InstitutionSearchResponse> responseReturned =
FacetedSearchResponse<InstitutionSearchResponse, InstitutionFacetParameter> responseReturned =
collectionsSearchClient.searchInstitutions(InstitutionSearchRequest.builder().build());
assertEquals(1, responseReturned.getResults().size());
assertEquals(response, responseReturned.getResults().get(0));
Expand All @@ -108,12 +115,82 @@ public void searchCollectionsTest() {
response.setHighlights(Collections.singleton(highlight));

when(collectionsSearchService.searchCollections(any()))
.thenReturn(new PagingResponse<>(0, 20, 1L, Collections.singletonList(response)));
.thenReturn(new FacetedSearchResponse<>(0, 20, 1L, Collections.singletonList(response)));

PagingResponse<CollectionSearchResponse> responseReturned =
FacetedSearchResponse<CollectionSearchResponse, CollectionFacetParameter> responseReturned =
collectionsSearchClient.searchCollections(
CollectionDescriptorsSearchRequest.builder().build());
assertEquals(1, responseReturned.getResults().size());
assertEquals(response, responseReturned.getResults().get(0));
}

@Test
public void facetSearchInstitutionsTest() {
InstitutionSearchRequest searchRequest =
InstitutionSearchRequest.builder()
.facets(Set.of(InstitutionFacetParameter.COUNTRY))
.offset(0L)
.limit(20)
.build();

InstitutionSearchResponse response = new InstitutionSearchResponse();
response.setCode("c1");
response.setKey(UUID.randomUUID());

CollectionFacet<InstitutionFacetParameter> facet = new CollectionFacet<>();
facet.setCardinality(1);
facet.setField(InstitutionFacetParameter.COUNTRY);
facet.setCounts(List.of(new CollectionFacet.Count("ES", 2L)));

FacetedSearchResponse<InstitutionSearchResponse, InstitutionFacetParameter> searchResponse =
new FacetedSearchResponse<>(
new PagingRequest(),
1L,
Collections.singletonList(response),
Collections.singletonList(facet));

when(collectionsSearchService.searchInstitutions(searchRequest)).thenReturn(searchResponse);

FacetedSearchResponse<InstitutionSearchResponse, InstitutionFacetParameter> responseReturned =
collectionsSearchClient.searchInstitutions(searchRequest);
assertEquals(1, responseReturned.getResults().size());
assertEquals(response, responseReturned.getResults().get(0));
assertEquals(1, responseReturned.getFacets().size());
assertEquals(facet, responseReturned.getFacets().get(0));
}

@Test
public void facetSearchCollectionsTest() {
CollectionDescriptorsSearchRequest searchRequest =
CollectionDescriptorsSearchRequest.builder()
.facets(Set.of(CollectionFacetParameter.COUNTRY))
.offset(0L)
.limit(20)
.build();

CollectionSearchResponse response = new CollectionSearchResponse();
response.setCode("c1");
response.setKey(UUID.randomUUID());

CollectionFacet<CollectionFacetParameter> facet = new CollectionFacet<>();
facet.setCardinality(1);
facet.setField(CollectionFacetParameter.COUNTRY);
facet.setCounts(List.of(new CollectionFacet.Count("ES", 2L)));

FacetedSearchResponse<CollectionSearchResponse, CollectionFacetParameter> searchResponse =
new FacetedSearchResponse<>(
new PagingRequest(),
1L,
Collections.singletonList(response),
Collections.singletonList(facet));

when(collectionsSearchService.searchCollections(searchRequest)).thenReturn(searchResponse);

FacetedSearchResponse<CollectionSearchResponse, CollectionFacetParameter> responseReturned =
collectionsSearchClient.searchCollections(searchRequest);
assertEquals(1, responseReturned.getResults().size());
assertEquals(response, responseReturned.getResults().get(0));
assertEquals(1, responseReturned.getFacets().size());
assertEquals(facet, responseReturned.getFacets().get(0));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -95,11 +95,11 @@ public void listTest() {
new PagingRequest(), Long.valueOf(institutions.size()), institutions));

InstitutionSearchRequest req = InstitutionSearchRequest.builder().build();
req.setCity("city");
req.setContact(UUID.randomUUID());
req.setCity(Collections.singletonList("city"));
req.setContact(Collections.singletonList(UUID.randomUUID()));
req.setCountry(Collections.singletonList(Country.DENMARK));
req.setGbifRegion(Collections.singletonList(GbifRegion.EUROPE));
req.setActive(true);
req.setActive(Collections.singletonList(true));
req.setInstitutionalGovernance(Collections.singletonList("Academic"));
req.setDisciplines(Arrays.asList("Archaeology", "Anthropology"));

Expand Down Expand Up @@ -196,7 +196,7 @@ public void listDeletedTest() {
new PagingRequest(), Long.valueOf(institutions.size()), institutions));

InstitutionSearchRequest request = InstitutionSearchRequest.builder().build();
request.setReplacedBy(UUID.randomUUID());
request.setReplacedBy(Collections.singletonList(UUID.randomUUID()));
PagingResponse<Institution> result = getClient().listDeleted(request);
assertEquals(institutions.size(), result.getResults().size());
}
Expand Down
Loading

0 comments on commit f144869

Please sign in to comment.