Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -30,16 +30,21 @@
* to the convert method.
*/
@Component
public class DiscoverConfigurationConverter
implements DSpaceConverter<DiscoveryConfiguration, SearchConfigurationRest> {
public class DiscoverConfigurationConverter {

@Autowired
ConfigurationService configurationService;

@Override
public SearchConfigurationRest convert(DiscoveryConfiguration configuration, Projection projection) {
/**
* The requested configuration name and scope are kept on the REST object so that the self link can be built
* from them, the same way {@link DiscoverFacetConfigurationConverter} does it.
*/
public SearchConfigurationRest convert(final String configurationName, final String scope,
DiscoveryConfiguration configuration, Projection projection) {
SearchConfigurationRest searchConfigurationRest = new SearchConfigurationRest();
searchConfigurationRest.setProjection(projection);
searchConfigurationRest.setConfiguration(configurationName);
searchConfigurationRest.setScope(scope);
if (configuration != null) {
addSearchFilters(searchConfigurationRest,
configuration.getSearchFilters(), configuration.getSidebarFacets());
Expand All @@ -48,11 +53,6 @@ public SearchConfigurationRest convert(DiscoveryConfiguration configuration, Pro
return searchConfigurationRest;
}

@Override
public Class<DiscoveryConfiguration> getModelClass() {
return DiscoveryConfiguration.class;
}

public void addSearchFilters(SearchConfigurationRest searchConfigurationRest,
List<DiscoverySearchFilter> searchFilterList,
List<DiscoverySearchFilterFacet> facetList) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,8 @@ public SearchConfigurationRest getSearchConfiguration(final String dsoScope, fin
DiscoveryConfiguration discoveryConfiguration = searchConfigurationService
.getDiscoveryConfigurationByNameOrIndexableObject(context, configuration, scopeObject);

return discoverConfigurationConverter.convert(discoveryConfiguration, utils.obtainProjection());
return discoverConfigurationConverter.convert(configuration, dsoScope, discoveryConfiguration,
utils.obtainProjection());
}

public SearchResultsRest getSearchObjects(final String query, final List<String> dsoTypes, final String dsoScope,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1021,6 +1021,33 @@ public void discoverSearchTest() throws Exception {
)));
}

@Test
public void discoverSearchSelfLinkKeepsScopeAndConfigurationTest() throws Exception {
context.turnOffAuthorisationSystem();

parentCommunity = CommunityBuilder.createCommunity(context)
.withName("Parent Community")
.build();

context.restoreAuthSystemState();

//The self link has to describe the request it answers
getClient().perform(get("/api/discover/search")
.param("scope", parentCommunity.getID().toString())
.param("configuration", "personOrOrgunit"))
.andExpect(status().isOk())
.andExpect(jsonPath("$._links.self.href",
containsString("scope=" + parentCommunity.getID())))
.andExpect(jsonPath("$._links.self.href",
containsString("configuration=personOrOrgunit")));

//And it may not add parameters the request did not have
getClient().perform(get("/api/discover/search"))
.andExpect(status().isOk())
.andExpect(jsonPath("$._links.self.href", not(containsString("scope="))))
.andExpect(jsonPath("$._links.self.href", not(containsString("configuration="))));
}

@Test
public void checkSortOrderInPersonOrOrgunitConfigurationTest() throws Exception {
getClient().perform(get("/api/discover/search")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1265,6 +1265,33 @@ public void discoverSearchTest() throws Exception {
.andExpect(jsonPath("$.sortOptions", contains(allExpectedSortFields)));
}

@Test
public void discoverSearchSelfLinkKeepsScopeAndConfigurationTest() throws Exception {
context.turnOffAuthorisationSystem();
Comment on lines +1268 to +1270

parentCommunity = CommunityBuilder.createCommunity(context)
.withName("Parent Community")
.build();

context.restoreAuthSystemState();

//The self link has to describe the request it answers
getClient().perform(get("/api/discover/search")
.param("scope", parentCommunity.getID().toString())
.param("configuration", "personOrOrgunit"))
.andExpect(status().isOk())
.andExpect(jsonPath("$._links.self.href",
containsString("scope=" + parentCommunity.getID())))
.andExpect(jsonPath("$._links.self.href",
containsString("configuration=personOrOrgunit")));

//And it may not add parameters the request did not have
getClient().perform(get("/api/discover/search"))
.andExpect(status().isOk())
.andExpect(jsonPath("$._links.self.href", not(containsString("scope="))))
.andExpect(jsonPath("$._links.self.href", not(containsString("configuration="))));
}

@Test
public void checkSortOrderInPersonOrOrgunitConfigurationTest() throws Exception {
getClient().perform(get("/api/discover/search")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,20 +61,30 @@ public void populateDiscoveryConfigurationWithEmptyList() {
@Test
public void testReturnType() throws Exception {
populateDiscoveryConfigurationWithEmptyList();
searchConfigurationRest = discoverConfigurationConverter.convert(discoveryConfiguration, Projection.DEFAULT);
searchConfigurationRest = discoverConfigurationConverter.convert(null, null, discoveryConfiguration,
Projection.DEFAULT);
assertTrue(searchConfigurationRest.getFilters().isEmpty());
assertEquals(SearchConfigurationRest.class, searchConfigurationRest.getClass());
}

@Test
public void testConvertWithNullParamter() throws Exception {
assertNotNull(discoverConfigurationConverter.convert(null, Projection.DEFAULT));
assertNotNull(discoverConfigurationConverter.convert(null, null, null, Projection.DEFAULT));
}

@Test
public void testRequestedConfigurationAndScopeAreKept() throws Exception {
searchConfigurationRest = discoverConfigurationConverter.convert("personOrOrgunit", "a-scope-uuid",
discoveryConfiguration, Projection.DEFAULT);
assertEquals("personOrOrgunit", searchConfigurationRest.getConfiguration());
assertEquals("a-scope-uuid", searchConfigurationRest.getScope());
}

@Test
public void testNoSearchSortConfigurationReturnObjectNotNull() throws Exception {
discoveryConfiguration.setSearchFilters(new LinkedList<>());
searchConfigurationRest = discoverConfigurationConverter.convert(discoveryConfiguration, Projection.DEFAULT);
searchConfigurationRest = discoverConfigurationConverter.convert(null, null, discoveryConfiguration,
Projection.DEFAULT);
assertTrue(discoveryConfiguration.getSearchFilters().isEmpty());
assertTrue(searchConfigurationRest.getFilters().isEmpty());
assertNotNull(searchConfigurationRest);
Expand All @@ -83,7 +93,8 @@ public void testNoSearchSortConfigurationReturnObjectNotNull() throws Exception
@Test
public void testNoSearchFilterReturnObjectNotNull() throws Exception {
discoveryConfiguration.setSearchSortConfiguration(new DiscoverySortConfiguration());
searchConfigurationRest = discoverConfigurationConverter.convert(discoveryConfiguration, Projection.DEFAULT);
searchConfigurationRest = discoverConfigurationConverter.convert(null, null, discoveryConfiguration,
Projection.DEFAULT);
assertTrue(searchConfigurationRest.getFilters().isEmpty());
assertNotNull(searchConfigurationRest);
}
Expand All @@ -92,7 +103,8 @@ public void testNoSearchFilterReturnObjectNotNull() throws Exception {
// are null
@Test
public void testNoSearchSortConfigurationAndNoSearchFilterReturnObjectNotNull() throws Exception {
searchConfigurationRest = discoverConfigurationConverter.convert(discoveryConfiguration, Projection.DEFAULT);
searchConfigurationRest = discoverConfigurationConverter.convert(null, null, discoveryConfiguration,
Projection.DEFAULT);
assertNotNull(searchConfigurationRest);
}

Expand All @@ -115,7 +127,8 @@ public void testCorrectSortOptionsAfterConvert() throws Exception {
when(discoveryConfiguration.getSearchSortConfiguration()).thenReturn(discoverySortConfiguration);
when(discoverySortConfiguration.getSortFields()).thenReturn(mockedList);

searchConfigurationRest = discoverConfigurationConverter.convert(discoveryConfiguration, Projection.DEFAULT);
searchConfigurationRest = discoverConfigurationConverter.convert(null, null, discoveryConfiguration,
Projection.DEFAULT);

int counter = 0;
for (SearchConfigurationRest.SortOption sortOption : searchConfigurationRest.getSortOptions()) {
Expand All @@ -130,7 +143,8 @@ public void testCorrectSortOptionsAfterConvert() throws Exception {
@Test
public void testEmptySortOptionsAfterConvertWithConfigurationWithEmptySortFields() throws Exception {
populateDiscoveryConfigurationWithEmptyList();
searchConfigurationRest = discoverConfigurationConverter.convert(discoveryConfiguration, Projection.DEFAULT);
searchConfigurationRest = discoverConfigurationConverter.convert(null, null, discoveryConfiguration,
Projection.DEFAULT);
assertEquals(0, searchConfigurationRest.getSortOptions().size());

}
Expand All @@ -139,7 +153,8 @@ public void testEmptySortOptionsAfterConvertWithConfigurationWithEmptySortFields
public void testEmptySortOptionsAfterConvertWithConfigurationWithNullSortFields() throws Exception {
populateDiscoveryConfigurationWithEmptyList();
when(discoveryConfiguration.getSearchSortConfiguration()).thenReturn(null);
searchConfigurationRest = discoverConfigurationConverter.convert(discoveryConfiguration, Projection.DEFAULT);
searchConfigurationRest = discoverConfigurationConverter.convert(null, null, discoveryConfiguration,
Projection.DEFAULT);

assertEquals(0, searchConfigurationRest.getSortOptions().size());
}
Expand All @@ -158,7 +173,8 @@ public void testCorrectSearchFiltersAfterConvert() throws Exception {
mockedList.add(discoverySearchFilter1);
when(discoveryConfiguration.getSearchFilters()).thenReturn(mockedList);

searchConfigurationRest = discoverConfigurationConverter.convert(discoveryConfiguration, Projection.DEFAULT);
searchConfigurationRest = discoverConfigurationConverter.convert(null, null, discoveryConfiguration,
Projection.DEFAULT);

int counter = 0;
for (SearchConfigurationRest.Filter filter : searchConfigurationRest.getFilters()) {
Expand All @@ -176,7 +192,8 @@ public void testCorrectSearchFiltersAfterConvert() throws Exception {
@Test
public void testEmptySearchFilterAfterConvertWithConfigurationWithEmptySearchFilters() throws Exception {
populateDiscoveryConfigurationWithEmptyList();
searchConfigurationRest = discoverConfigurationConverter.convert(discoveryConfiguration, Projection.DEFAULT);
searchConfigurationRest = discoverConfigurationConverter.convert(null, null, discoveryConfiguration,
Projection.DEFAULT);
assertEquals(0, searchConfigurationRest.getFilters().size());
}

Expand All @@ -185,7 +202,8 @@ public void testEmptySearchFiltersAfterConvertWithConfigurationWithNullSearchFil
populateDiscoveryConfigurationWithEmptyList();

when(discoveryConfiguration.getSearchFilters()).thenReturn(null);
searchConfigurationRest = discoverConfigurationConverter.convert(discoveryConfiguration, Projection.DEFAULT);
searchConfigurationRest = discoverConfigurationConverter.convert(null, null, discoveryConfiguration,
Projection.DEFAULT);

assertEquals(0, searchConfigurationRest.getFilters().size());
}
Expand Down
Loading