3392 Failing test

This commit is contained in:
Andreas Svanberg 2024-05-22 12:35:50 +02:00
parent 325b93ce3d
commit a79ee20cba
4 changed files with 140 additions and 2 deletions
core/src
main/java/se/su/dsv/scipro/reviewing
test/java/se/su/dsv/scipro/reviewing
view/src/main/java/se/su/dsv/scipro/crosscutting

@ -1,4 +1,4 @@
package se.su.dsv.scipro.crosscutting;
package se.su.dsv.scipro.reviewing;
import com.google.common.eventbus.EventBus;
import com.google.common.eventbus.Subscribe;

@ -0,0 +1,126 @@
package se.su.dsv.scipro.reviewing;
import jakarta.inject.Inject;
import org.junit.jupiter.api.Test;
import se.su.dsv.scipro.file.FileUpload;
import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.reviewing.ReviewerAssignmentService.ReviewerAssignment;
import se.su.dsv.scipro.security.auth.roles.Roles;
import se.su.dsv.scipro.system.DegreeType;
import se.su.dsv.scipro.system.ProjectType;
import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.test.MutableFixedClock;
import se.su.dsv.scipro.util.Either;
import java.io.InputStream;
import java.time.LocalDate;
import java.time.Month;
import java.time.Year;
import java.util.Optional;
import java.util.Set;
import java.util.function.Function;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class ReviewerTest extends ReviewingModuleTest {
@Inject
MutableFixedClock clock;
@Inject
ReviewerAssignmentService reviewerAssignmentService;
@Inject
ReviewerCapacityService reviewerCapacityService;
@Inject
RoughDraftApprovalService roughDraftApprovalService;
@Inject
ReviewerDecisionService reviewerDecisionService;
@Test
public void an_assigned_reviewer_should_only_consume_one_target_per_project() {
// Given
clock.setDate(LocalDate.of(2024, Month.MAY, 22)); // some date in spring
Project project = createProject();
User reviewer = createUser();
var target = new ReviewerCapacityService.Target(Year.now(clock), 2, 0, "Can review at any time");
// When
reviewerCapacityService.assignTarget(reviewer, target);
Either<AlreadyRequested, RoughDraftApproval> firstReviewRequest = roughDraftApprovalService.requestApproval(
project,
dummyFile(),
"Some comment");
assertTrue(firstReviewRequest.isRight());
ReviewerAssignment assignment = reviewerAssignmentService.assignReviewer(project,reviewer);
assertEquals(ReviewerAssignment.OK, assignment);
reviewerDecisionService.reject(firstReviewRequest.right(), "Not good enough", Optional.empty());
Either<AlreadyRequested, RoughDraftApproval> secondReviewRequest = roughDraftApprovalService.requestApproval(
project,
dummyFile(),
"Some new comment");
assertTrue(secondReviewRequest.isRight());
// Then
ReviewerCapacityService.RemainingTargets remainingTargets =
reviewerCapacityService.getRemainingTargets(reviewer, target.year());
assertEquals(1, remainingTargets.spring());
}
private User createUser() {
User user = User.builder()
.firstName("Edward")
.lastName("Employee")
.emailAddress("stuart@example.com")
.roles(Set.of(Roles.REVIEWER, Roles.SUPERVISOR))
.build();
return save(user);
}
private Project createProject() {
ProjectType bachelor = new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor");
save(bachelor);
User supervisor = createUser();
Project project = Project.builder()
.title("A project")
.projectType(bachelor)
.startDate(LocalDate.now(clock).minusMonths(1))
.headSupervisor(supervisor)
.build();
return save(project);
}
private FileUpload dummyFile() {
return new FileUpload() {
@Override
public String getFileName() {
return "dummy.tmp";
}
@Override
public String getContentType() {
return "text/plain";
}
@Override
public User getUploader() {
return null;
}
@Override
public long getSize() {
return 0;
}
@Override
public <T> T handleData(Function<InputStream, T> handler) {
return handler.apply(InputStream.nullInputStream());
}
};
}
}

@ -1,7 +1,18 @@
package se.su.dsv.scipro.reviewing;
import com.google.inject.AbstractModule;
import com.google.inject.Module;
import se.su.dsv.scipro.test.IntegrationTest;
public abstract class ReviewingModuleTest extends IntegrationTest {
@Override
protected Module moduleUnderTest() {
return new AbstractModule() {
@Override
protected void configure() {
install(ReviewingModuleTest.super.moduleUnderTest());
bind(ReviewerAssignedDeadline.class).asEagerSingleton();
}
};
}
}

@ -2,6 +2,7 @@ package se.su.dsv.scipro.crosscutting;
import com.google.common.eventbus.EventBus;
import com.google.inject.AbstractModule;
import se.su.dsv.scipro.reviewing.ReviewerAssignedDeadline;
public class CrosscuttingModule extends AbstractModule {
@Override