Save assessment
This commit is contained in:
parent
54e6e5d787
commit
fd01796121
core/src
main/java/se/su/dsv/scipro
test/java/se/su/dsv/scipro/finalseminar
@ -434,9 +434,15 @@ public class CoreConfig {
|
||||
public FinalSeminarOppositionServiceImpl finalSeminarOppositionService(
|
||||
Provider<EntityManager> em,
|
||||
FinalSeminarOppositionGrading finalSeminarOppositionGrading,
|
||||
EventBus eventBus
|
||||
EventBus eventBus,
|
||||
FinalSeminarOppositionRepo finalSeminarOppositionRepository
|
||||
) {
|
||||
return new FinalSeminarOppositionServiceImpl(em, finalSeminarOppositionGrading, eventBus);
|
||||
return new FinalSeminarOppositionServiceImpl(
|
||||
em,
|
||||
finalSeminarOppositionGrading,
|
||||
eventBus,
|
||||
finalSeminarOppositionRepository
|
||||
);
|
||||
}
|
||||
|
||||
@Bean
|
||||
|
@ -1,6 +1,5 @@
|
||||
package se.su.dsv.scipro.finalseminar;
|
||||
|
||||
import java.util.List;
|
||||
import se.su.dsv.scipro.system.GenericService;
|
||||
|
||||
public interface FinalSeminarOppositionService extends GenericService<FinalSeminarOpposition, Long> {
|
||||
@ -9,5 +8,6 @@ public interface FinalSeminarOppositionService extends GenericService<FinalSemin
|
||||
|
||||
OppositionCriteria getCriteriaForOpposition(FinalSeminarOpposition opposition);
|
||||
|
||||
void gradeOpponent(FinalSeminarOpposition opposition, int points, String feedback) throws PointNotValidException;
|
||||
FinalSeminarOpposition gradeOpponent(FinalSeminarOpposition opposition, int points, String feedback)
|
||||
throws PointNotValidException;
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ import com.google.common.eventbus.EventBus;
|
||||
import jakarta.inject.Inject;
|
||||
import jakarta.inject.Provider;
|
||||
import jakarta.persistence.EntityManager;
|
||||
import jakarta.transaction.Transactional;
|
||||
import java.util.List;
|
||||
import se.su.dsv.scipro.system.AbstractServiceImpl;
|
||||
|
||||
@ -13,16 +14,19 @@ public class FinalSeminarOppositionServiceImpl
|
||||
|
||||
private final FinalSeminarOppositionGrading finalSeminarOppositionGrading;
|
||||
private final EventBus eventBus;
|
||||
private final FinalSeminarOppositionRepo finalSeminarOppositionRepository;
|
||||
|
||||
@Inject
|
||||
public FinalSeminarOppositionServiceImpl(
|
||||
Provider<EntityManager> em,
|
||||
FinalSeminarOppositionGrading finalSeminarOppositionGrading,
|
||||
EventBus eventBus
|
||||
EventBus eventBus,
|
||||
FinalSeminarOppositionRepo finalSeminarOppositionRepository
|
||||
) {
|
||||
super(em, FinalSeminarOpposition.class, QFinalSeminarOpposition.finalSeminarOpposition);
|
||||
this.finalSeminarOppositionGrading = finalSeminarOppositionGrading;
|
||||
this.eventBus = eventBus;
|
||||
this.finalSeminarOppositionRepository = finalSeminarOppositionRepository;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -31,7 +35,8 @@ public class FinalSeminarOppositionServiceImpl
|
||||
}
|
||||
|
||||
@Override
|
||||
public void gradeOpponent(FinalSeminarOpposition opposition, int points, String feedback)
|
||||
@Transactional
|
||||
public FinalSeminarOpposition gradeOpponent(FinalSeminarOpposition opposition, int points, String feedback)
|
||||
throws PointNotValidException {
|
||||
OppositionCriteria criteriaForOpposition = getCriteriaForOpposition(opposition);
|
||||
boolean validPoints = criteriaForOpposition
|
||||
@ -42,13 +47,16 @@ public class FinalSeminarOppositionServiceImpl
|
||||
throw new PointNotValidException(points, List.of(0, 1));
|
||||
}
|
||||
|
||||
opposition.setPoints(points);
|
||||
opposition.setFeedback(feedback);
|
||||
FinalSeminarOpposition assessedOpposition = finalSeminarOppositionRepository.save(opposition);
|
||||
|
||||
if (criteriaForOpposition.pointsToPass() > points) {
|
||||
eventBus.post(new OppositionFailedEvent(opposition));
|
||||
eventBus.post(new OppositionFailedEvent(assessedOpposition));
|
||||
} else {
|
||||
eventBus.post(new OppositionApprovedEvent(opposition));
|
||||
eventBus.post(new OppositionApprovedEvent(assessedOpposition));
|
||||
}
|
||||
// TODO:
|
||||
// * save assessment
|
||||
// * post events
|
||||
|
||||
return assessedOpposition;
|
||||
}
|
||||
}
|
||||
|
@ -57,21 +57,7 @@ public class FinalSeminarOppositionServiceImplIntegrationTest extends Integratio
|
||||
@Test
|
||||
public void opposition_criteria_are_taken_from_the_grading_report_template() {
|
||||
FinalSeminarOpposition opposition = createOpposition(finalSeminar, createUser());
|
||||
GradingReportTemplate gradingReportTemplate = createGradingReportTemplate();
|
||||
|
||||
GradingCriterionPointTemplate failingCriterion = new GradingCriterionPointTemplate();
|
||||
failingCriterion.setPoint(0);
|
||||
GradingCriterionPointTemplate passingCriterion = new GradingCriterionPointTemplate();
|
||||
passingCriterion.setPoint(1);
|
||||
|
||||
gradingReportTemplate.addIndividualCriterion(
|
||||
"Criterion 1",
|
||||
"Criterion 1",
|
||||
1,
|
||||
List.of(failingCriterion, passingCriterion),
|
||||
AbstractGradingCriterion.Flag.OPPOSITION
|
||||
);
|
||||
save(gradingReportTemplate);
|
||||
createSimpleGradingReportTemplateWithPassFail();
|
||||
|
||||
assertEquals(2, finalSeminarOppositionService.getCriteriaForOpposition(opposition).pointsAvailable().size());
|
||||
}
|
||||
@ -79,21 +65,7 @@ public class FinalSeminarOppositionServiceImplIntegrationTest extends Integratio
|
||||
@Test
|
||||
public void can_not_grade_outside_criterion() {
|
||||
FinalSeminarOpposition opposition = createOpposition(finalSeminar, createUser());
|
||||
GradingReportTemplate gradingReportTemplate = createGradingReportTemplate();
|
||||
|
||||
GradingCriterionPointTemplate failingCriterion = new GradingCriterionPointTemplate();
|
||||
failingCriterion.setPoint(0);
|
||||
GradingCriterionPointTemplate passingCriterion = new GradingCriterionPointTemplate();
|
||||
passingCriterion.setPoint(1);
|
||||
|
||||
gradingReportTemplate.addIndividualCriterion(
|
||||
"Criterion 1",
|
||||
"Criterion 1",
|
||||
1,
|
||||
List.of(failingCriterion, passingCriterion),
|
||||
AbstractGradingCriterion.Flag.OPPOSITION
|
||||
);
|
||||
save(gradingReportTemplate);
|
||||
createSimpleGradingReportTemplateWithPassFail();
|
||||
|
||||
PointNotValidException exception = assertThrows(PointNotValidException.class, () ->
|
||||
finalSeminarOppositionService.gradeOpponent(opposition, 2, "Feedback")
|
||||
@ -106,21 +78,7 @@ public class FinalSeminarOppositionServiceImplIntegrationTest extends Integratio
|
||||
@Test
|
||||
public void publishes_failed_event_when_grading_with_failing_criterion() throws Exception {
|
||||
FinalSeminarOpposition opposition = createOpposition(finalSeminar, createUser());
|
||||
GradingReportTemplate gradingReportTemplate = createGradingReportTemplate();
|
||||
|
||||
GradingCriterionPointTemplate failingCriterion = new GradingCriterionPointTemplate();
|
||||
failingCriterion.setPoint(0);
|
||||
GradingCriterionPointTemplate passingCriterion = new GradingCriterionPointTemplate();
|
||||
passingCriterion.setPoint(1);
|
||||
|
||||
gradingReportTemplate.addIndividualCriterion(
|
||||
"Criterion 1",
|
||||
"Criterion 1",
|
||||
1,
|
||||
List.of(failingCriterion, passingCriterion),
|
||||
AbstractGradingCriterion.Flag.OPPOSITION
|
||||
);
|
||||
save(gradingReportTemplate);
|
||||
createSimpleGradingReportTemplateWithPassFail();
|
||||
|
||||
finalSeminarOppositionService.gradeOpponent(opposition, 0, "Feedback");
|
||||
|
||||
@ -130,6 +88,25 @@ public class FinalSeminarOppositionServiceImplIntegrationTest extends Integratio
|
||||
@Test
|
||||
public void publishes_approved_event_when_grading_with_passing_criterion() throws Exception {
|
||||
FinalSeminarOpposition opposition = createOpposition(finalSeminar, createUser());
|
||||
createSimpleGradingReportTemplateWithPassFail();
|
||||
|
||||
finalSeminarOppositionService.gradeOpponent(opposition, 1, "Feedback");
|
||||
|
||||
assertThat(getPublishedEvents(), hasItem(new OppositionApprovedEvent(opposition)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void stores_assessment() throws Exception {
|
||||
FinalSeminarOpposition opposition = createOpposition(finalSeminar, createUser());
|
||||
createSimpleGradingReportTemplateWithPassFail();
|
||||
|
||||
FinalSeminarOpposition graded = finalSeminarOppositionService.gradeOpponent(opposition, 1, "Feedback");
|
||||
|
||||
assertEquals(1, graded.getPoints());
|
||||
assertEquals("Feedback", graded.getFeedback());
|
||||
}
|
||||
|
||||
private void createSimpleGradingReportTemplateWithPassFail() {
|
||||
GradingReportTemplate gradingReportTemplate = createGradingReportTemplate();
|
||||
|
||||
GradingCriterionPointTemplate failingCriterion = new GradingCriterionPointTemplate();
|
||||
@ -145,10 +122,6 @@ public class FinalSeminarOppositionServiceImplIntegrationTest extends Integratio
|
||||
AbstractGradingCriterion.Flag.OPPOSITION
|
||||
);
|
||||
save(gradingReportTemplate);
|
||||
|
||||
finalSeminarOppositionService.gradeOpponent(opposition, 1, "Feedback");
|
||||
|
||||
assertThat(getPublishedEvents(), hasItem(new OppositionApprovedEvent(opposition)));
|
||||
}
|
||||
|
||||
private void createOppositionReport(FinalSeminarOpposition opposition) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user