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