mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-07 01:54:22 +00:00
CST-12467 fix solr query for findSourcesByTarget, add ITs
This commit is contained in:
@@ -412,7 +412,7 @@ public class QAEventServiceImpl implements QAEventService {
|
||||
solrQuery.setRows(0);
|
||||
solrQuery.addFilterQuery(SOURCE + ":\"" + sourceName + "\"");
|
||||
if (target != null) {
|
||||
solrQuery.addFilterQuery(target + ":" + target.toString());
|
||||
solrQuery.addFilterQuery("resource_uuid:" + target.toString());
|
||||
}
|
||||
solrQuery.setFacet(true);
|
||||
solrQuery.setFacetMinCount(1);
|
||||
@@ -463,6 +463,7 @@ public class QAEventServiceImpl implements QAEventService {
|
||||
return Arrays.stream(getSupportedSources())
|
||||
.map((sourceName) -> findSource(sourceName, target))
|
||||
.sorted(comparing(QASource::getTotalEvents).reversed())
|
||||
.filter(source -> source.getTotalEvents() > 0)
|
||||
.skip(offset)
|
||||
.limit(pageSize)
|
||||
.collect(Collectors.toList());
|
||||
|
@@ -21,6 +21,7 @@ import org.dspace.builder.CommunityBuilder;
|
||||
import org.dspace.builder.ItemBuilder;
|
||||
import org.dspace.builder.QAEventBuilder;
|
||||
import org.dspace.content.Collection;
|
||||
import org.dspace.content.Community;
|
||||
import org.dspace.content.Item;
|
||||
import org.dspace.content.QAEvent;
|
||||
import org.dspace.services.ConfigurationService;
|
||||
@@ -189,6 +190,106 @@ public class QASourceRestRepositoryIT extends AbstractControllerIntegrationTest
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFindAllByTarget() throws Exception {
|
||||
|
||||
context.turnOffAuthorisationSystem();
|
||||
Community com = CommunityBuilder.createCommunity(context).withName("Test community").build();
|
||||
Collection col = CollectionBuilder.createCollection(context, com).withName("Test collection").build();
|
||||
Item target1 = ItemBuilder.createItem(context, col).withTitle("Test item1").build();
|
||||
Item target2 = ItemBuilder.createItem(context, col).withTitle("Test item2").build();
|
||||
createEvent("openaire", "TOPIC/OPENAIRE/1", target1);
|
||||
createEvent("openaire", "TOPIC/OPENAIRE/2", target1);
|
||||
createEvent("test-source", "TOPIC/TEST/1", target1);
|
||||
createEvent("test-source", "TOPIC/TEST/1", target2);
|
||||
|
||||
context.restoreAuthSystemState();
|
||||
|
||||
String authToken = getAuthToken(admin.getEmail(), password);
|
||||
getClient(authToken)
|
||||
.perform(get("/api/integration/qualityassurancesources/search/byTarget").param("target",
|
||||
target1.getID().toString()))
|
||||
.andExpect(status().isOk()).andExpect(content().contentType(contentType))
|
||||
.andExpect(jsonPath("$._embedded.qualityassurancesources",
|
||||
contains(matchQASourceEntry("openaire:" + target1.getID().toString(), 2),
|
||||
matchQASourceEntry("test-source:" + target1.getID().toString(), 1))))
|
||||
.andExpect(jsonPath("$.page.size", is(20)))
|
||||
.andExpect(jsonPath("$.page.totalElements", is(2)));
|
||||
|
||||
getClient(authToken)
|
||||
.perform(get("/api/integration/qualityassurancesources/search/byTarget").param("target",
|
||||
target2.getID().toString()))
|
||||
.andExpect(status().isOk()).andExpect(content().contentType(contentType))
|
||||
.andExpect(jsonPath("$._embedded.qualityassurancesources",
|
||||
contains(matchQASourceEntry("test-source:" + target2.getID().toString(), 1))))
|
||||
.andExpect(jsonPath("$.page.size", is(20)))
|
||||
.andExpect(jsonPath("$.page.totalElements", is(1)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFindByTargetBadRequest() throws Exception {
|
||||
|
||||
context.turnOffAuthorisationSystem();
|
||||
Community com = CommunityBuilder.createCommunity(context).withName("Test community").build();
|
||||
Collection col = CollectionBuilder.createCollection(context, com).withName("Test collection").build();
|
||||
Item target1 = ItemBuilder.createItem(context, col).withTitle("Test item1").build();
|
||||
Item target2 = ItemBuilder.createItem(context, col).withTitle("Test item2").build();
|
||||
createEvent("openaire", "TOPIC/OPENAIRE/1", target1);
|
||||
createEvent("openaire", "TOPIC/OPENAIRE/2", target1);
|
||||
createEvent("test-source", "TOPIC/TEST/1", target1);
|
||||
createEvent("test-source", "TOPIC/TEST/1", target2);
|
||||
|
||||
context.restoreAuthSystemState();
|
||||
|
||||
String authToken = getAuthToken(admin.getEmail(), password);
|
||||
getClient(authToken)
|
||||
.perform(get("/api/integration/qualityassurancesources/search/byTarget"))
|
||||
.andExpect(status().isBadRequest());
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testFindByTargetUnauthorized() throws Exception {
|
||||
|
||||
context.turnOffAuthorisationSystem();
|
||||
Community com = CommunityBuilder.createCommunity(context).withName("Test community").build();
|
||||
Collection col = CollectionBuilder.createCollection(context, com).withName("Test collection").build();
|
||||
Item target1 = ItemBuilder.createItem(context, col).withTitle("Test item1").build();
|
||||
Item target2 = ItemBuilder.createItem(context, col).withTitle("Test item2").build();
|
||||
createEvent("openaire", "TOPIC/OPENAIRE/1", target1);
|
||||
createEvent("openaire", "TOPIC/OPENAIRE/2", target1);
|
||||
createEvent("test-source", "TOPIC/TEST/1", target1);
|
||||
createEvent("test-source", "TOPIC/TEST/1", target2);
|
||||
|
||||
context.restoreAuthSystemState();
|
||||
|
||||
getClient()
|
||||
.perform(get("/api/integration/qualityassurancesources/search/byTarget").param("target",
|
||||
target1.getID().toString()))
|
||||
.andExpect(status().isUnauthorized());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFindByTargetForbidden() throws Exception {
|
||||
|
||||
context.turnOffAuthorisationSystem();
|
||||
Community com = CommunityBuilder.createCommunity(context).withName("Test community").build();
|
||||
Collection col = CollectionBuilder.createCollection(context, com).withName("Test collection").build();
|
||||
Item target1 = ItemBuilder.createItem(context, col).withTitle("Test item1").build();
|
||||
Item target2 = ItemBuilder.createItem(context, col).withTitle("Test item2").build();
|
||||
createEvent("openaire", "TOPIC/OPENAIRE/1", target1);
|
||||
createEvent("openaire", "TOPIC/OPENAIRE/2", target1);
|
||||
createEvent("test-source", "TOPIC/TEST/1", target1);
|
||||
createEvent("test-source", "TOPIC/TEST/1", target2);
|
||||
context.restoreAuthSystemState();
|
||||
|
||||
String authToken = getAuthToken(eperson.getEmail(), password);
|
||||
getClient(authToken)
|
||||
.perform(get("/api/integration/qualityassurancesources/search/byTarget").param("target",
|
||||
target1.getID().toString()))
|
||||
.andExpect(status().isForbidden());
|
||||
}
|
||||
|
||||
private QAEvent createEvent(String source, String topic, String title) {
|
||||
return QAEventBuilder.createTarget(context, target)
|
||||
.withSource(source)
|
||||
@@ -197,4 +298,12 @@ public class QASourceRestRepositoryIT extends AbstractControllerIntegrationTest
|
||||
.build();
|
||||
}
|
||||
|
||||
private QAEvent createEvent(String source, String topic, Item item) {
|
||||
return QAEventBuilder.createTarget(context, item)
|
||||
.withSource(source)
|
||||
.withTopic(topic)
|
||||
.withTitle(item.getName())
|
||||
.build();
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user