2934 Fix wrong decisions show up for reviewers
This commit is contained in:
parent
cf810ba724
commit
59ab4e428b
core/src
main/java/se/su/dsv/scipro/reviewing
test/java/se/su/dsv/scipro/reviewing
view/src
main/java/se/su/dsv/scipro/reviewer
test/java/se/su/dsv/scipro/reviewer
@ -8,9 +8,9 @@ import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
public interface MyReviewService {
|
||||
List<Decision> findAll(Filter filter, final Page<Sort> pageable);
|
||||
List<ReviewerApproval> findAll(Filter filter);
|
||||
long count(Filter filter);
|
||||
List<Decision> findAllDecisions(Filter filter, final Page<Sort> pageable);
|
||||
List<ReviewerApproval> findAllApprovals(Filter filter);
|
||||
long countDecisions(Filter filter);
|
||||
long countUndecidedRoughDraft(User reviewer);
|
||||
Decision findDecision(Long id);
|
||||
|
||||
|
@ -56,8 +56,8 @@ public class ReviewerDecisionReminderWorker extends AbstractWorker {
|
||||
|
||||
@Override
|
||||
protected void doWork() {
|
||||
List<ReviewerApproval> reviewerRoughDraftApprovals = myReviewService.findAll(roughDraftApprovalFilter);
|
||||
List<ReviewerApproval> reviewerFinalSeminarApprovals = myReviewService.findAll(finalSeminarApprovalFilter);
|
||||
List<ReviewerApproval> reviewerRoughDraftApprovals = myReviewService.findAllApprovals(roughDraftApprovalFilter);
|
||||
List<ReviewerApproval> reviewerFinalSeminarApprovals = myReviewService.findAllApprovals(finalSeminarApprovalFilter);
|
||||
|
||||
Date today = new Date();
|
||||
|
||||
|
@ -36,8 +36,8 @@ public class ReviewingServiceImpl extends AbstractServiceImpl<ReviewerApproval,
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Decision> findAll(final Filter filter, final Page<Sort> pageable) {
|
||||
BooleanBuilder predicate = fromFilter(filter);
|
||||
public List<Decision> findAllDecisions(final Filter filter, final Page<Sort> pageable) {
|
||||
BooleanBuilder predicate = fromFilterForDecision(filter);
|
||||
LiteralExpression<?> sortProperty = switch (pageable.sort().sortBy()) {
|
||||
case REQUESTED -> QDecision.decision.requested;
|
||||
case DEADLINE -> QDecision.decision.deadline;
|
||||
@ -60,18 +60,26 @@ public class ReviewingServiceImpl extends AbstractServiceImpl<ReviewerApproval,
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ReviewerApproval> findAll(final Filter filter) {
|
||||
return findAll(fromFilter2(filter));
|
||||
public List<ReviewerApproval> findAllApprovals(final Filter filter) {
|
||||
return findAll(fromFilterForApprovals(filter));
|
||||
}
|
||||
|
||||
@Override
|
||||
public long count(final Filter filter) {
|
||||
return count(fromFilter(filter));
|
||||
public long countDecisions(final Filter filter) {
|
||||
return from(QDecision.decision)
|
||||
.join(QDecision.decision.reviewerApproval, QReviewerApproval.reviewerApproval)
|
||||
.where(fromFilterForDecision(filter))
|
||||
.select(QDecision.decision.count())
|
||||
.fetchFirst();
|
||||
}
|
||||
|
||||
@Override
|
||||
public long countUndecidedRoughDraft(final User reviewer) {
|
||||
return count(forReviewer(reviewer).and(isUndecided()).and(forStep(ReviewerApproval.Step.ROUGH_DRAFT_APPROVAL)));
|
||||
return from(QDecision.decision)
|
||||
.join(QDecision.decision.reviewerApproval, QReviewerApproval.reviewerApproval)
|
||||
.where(forReviewer(reviewer).and(isUndecided()).and(forStep(ReviewerApproval.Step.ROUGH_DRAFT_APPROVAL)))
|
||||
.select(QDecision.decision.count())
|
||||
.fetchFirst();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -126,7 +134,7 @@ public class ReviewingServiceImpl extends AbstractServiceImpl<ReviewerApproval,
|
||||
return QReviewerApproval.reviewerApproval.decisions.any().status.in(statuses);
|
||||
}
|
||||
|
||||
private BooleanBuilder fromFilter(Filter filter) {
|
||||
private BooleanBuilder fromFilterForDecision(Filter filter) {
|
||||
BooleanBuilder bb = new BooleanBuilder();
|
||||
bb.and(forReviewer(filter.getUser()));
|
||||
bb.and(forStep(filter.getStep()));
|
||||
@ -137,7 +145,7 @@ public class ReviewingServiceImpl extends AbstractServiceImpl<ReviewerApproval,
|
||||
return bb;
|
||||
}
|
||||
|
||||
private BooleanBuilder fromFilter2(Filter filter) {
|
||||
private BooleanBuilder fromFilterForApprovals(Filter filter) {
|
||||
BooleanBuilder bb = new BooleanBuilder();
|
||||
bb.and(forStep(filter.getStep()));
|
||||
bb.and(forStatus(filter.getStatuses()));
|
||||
@ -147,7 +155,7 @@ public class ReviewingServiceImpl extends AbstractServiceImpl<ReviewerApproval,
|
||||
|
||||
private static Predicate isUndecided() {
|
||||
return allOf(
|
||||
QReviewerApproval.reviewerApproval.decisions.any().status.eq(Status.UNDECIDED),
|
||||
QDecision.decision.status.eq(Status.UNDECIDED),
|
||||
QReviewerApproval.reviewerApproval.project.projectStatus.eq(ProjectStatus.ACTIVE)
|
||||
);
|
||||
}
|
||||
|
@ -58,7 +58,7 @@ public class ReviewingServiceImplTest extends ReviewingModuleTest {
|
||||
@Test
|
||||
public void count() {
|
||||
finalSeminarApprovalService.requestApproval(project, createFileUpload(), "test");
|
||||
assertEquals(1, reviewingService.count(getFilter(ReviewerApproval.Step.FINAL_SEMINAR_APPROVAL)));
|
||||
assertEquals(1, reviewingService.countDecisions(getFilter(ReviewerApproval.Step.FINAL_SEMINAR_APPROVAL)));
|
||||
}
|
||||
|
||||
private MyReviewService.Filter getFilter(ReviewerApproval.Step step) {
|
||||
@ -71,13 +71,13 @@ public class ReviewingServiceImplTest extends ReviewingModuleTest {
|
||||
@Test
|
||||
public void find_undecided() {
|
||||
finalSeminarApprovalService.requestApproval(project, createFileUpload(), "test");
|
||||
assertThat(reviewingService.findAll(getFilter(ReviewerApproval.Step.FINAL_SEMINAR_APPROVAL), ALL), hasItem(where(Decision::getReviewerApproval, instanceOf(FinalSeminarApproval.class))));
|
||||
assertThat(reviewingService.findAllDecisions(getFilter(ReviewerApproval.Step.FINAL_SEMINAR_APPROVAL), ALL), hasItem(where(Decision::getReviewerApproval, instanceOf(FinalSeminarApproval.class))));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void find_undecided_rough_draft_approvals() {
|
||||
roughDraftApprovalService.requestApproval(project, createFileUpload(), "test");
|
||||
assertThat(reviewingService.findAll(getFilter(ReviewerApproval.Step.ROUGH_DRAFT_APPROVAL), ALL), hasItem(where(Decision::getReviewerApproval, instanceOf(RoughDraftApproval.class))));
|
||||
assertThat(reviewingService.findAllDecisions(getFilter(ReviewerApproval.Step.ROUGH_DRAFT_APPROVAL), ALL), hasItem(where(Decision::getReviewerApproval, instanceOf(RoughDraftApproval.class))));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -108,7 +108,7 @@ public class ReviewingServiceImplTest extends ReviewingModuleTest {
|
||||
roughDraftApprovalService.requestApproval(project, createFileUpload(), "my request");
|
||||
assertTrue(myRequest.isRight());
|
||||
|
||||
List<Decision> requests = reviewingService.findAll(getFilter(ReviewerApproval.Step.ROUGH_DRAFT_APPROVAL), ALL);
|
||||
List<Decision> requests = reviewingService.findAllDecisions(getFilter(ReviewerApproval.Step.ROUGH_DRAFT_APPROVAL), ALL);
|
||||
assertEquals(1, requests.size());
|
||||
}
|
||||
|
||||
@ -125,7 +125,7 @@ public class ReviewingServiceImplTest extends ReviewingModuleTest {
|
||||
var sortByRequested = new Page.Sort<>(MyReviewService.Sort.TITLE, Page.Direction.DESCENDING);
|
||||
TestPage page = new TestPage(0, Long.MAX_VALUE, sortByRequested);
|
||||
List<Decision> requests =
|
||||
reviewingService.findAll(getFilter(ReviewerApproval.Step.ROUGH_DRAFT_APPROVAL), page);
|
||||
reviewingService.findAllDecisions(getFilter(ReviewerApproval.Step.ROUGH_DRAFT_APPROVAL), page);
|
||||
|
||||
assertEquals(2, requests.size());
|
||||
assertEquals(request2.right(), requests.get(0).getReviewerApproval());
|
||||
|
@ -96,12 +96,12 @@ public abstract class ApprovalReviewerPanel extends Panel {
|
||||
|
||||
@Override
|
||||
public Iterator<Decision> iterator(final long first, final long count) {
|
||||
return myReviewService.findAll(filter.getObject(), new WicketPage<>(first, count, getSort())).iterator();
|
||||
return myReviewService.findAllDecisions(filter.getObject(), new WicketPage<>(first, count, getSort())).iterator();
|
||||
}
|
||||
|
||||
@Override
|
||||
public long size() {
|
||||
return myReviewService.count(filter.getObject());
|
||||
return myReviewService.countDecisions(filter.getObject());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -9,7 +9,6 @@ import se.su.dsv.scipro.project.Project;
|
||||
import se.su.dsv.scipro.reviewing.MyReviewService;
|
||||
import se.su.dsv.scipro.reviewing.RoughDraftApproval;
|
||||
import se.su.dsv.scipro.system.DegreeType;
|
||||
import se.su.dsv.scipro.system.Page;
|
||||
import se.su.dsv.scipro.system.ProjectType;
|
||||
import se.su.dsv.scipro.system.User;
|
||||
import se.su.dsv.scipro.test.DomainObjects;
|
||||
@ -32,8 +31,8 @@ public class ApprovalReviewerPanelTest extends SciProTest {
|
||||
project = createProject();
|
||||
RoughDraftApproval approval = createApproval();
|
||||
when(projectService.findOne(project.getId())).thenReturn(project);
|
||||
when(myReviewService.count(any(MyReviewService.Filter.class))).thenReturn(1L);
|
||||
when(myReviewService.findAll(any(MyReviewService.Filter.class), any())).thenReturn(Collections.singletonList(approval.getCurrentDecision()));
|
||||
when(myReviewService.countDecisions(any(MyReviewService.Filter.class))).thenReturn(1L);
|
||||
when(myReviewService.findAllDecisions(any(MyReviewService.Filter.class), any())).thenReturn(Collections.singletonList(approval.getCurrentDecision()));
|
||||
when(myReviewService.findDecision(any())).thenReturn(approval.getCurrentDecision());
|
||||
when(roughDraftApprovalService.findBy(project)).thenReturn(Optional.of(approval));
|
||||
setLoggedInAs(project.getReviewer());
|
||||
|
Loading…
x
Reference in New Issue
Block a user