Skip to content
Snippets Groups Projects
Commit 57c8d829 authored by uhensler's avatar uhensler
Browse files

OO-4207: Cumulate only durations of mandatory course nodes

parent ccfefb12
No related branches found
No related tags found
No related merge requests found
......@@ -24,6 +24,7 @@ import java.util.List;
import org.olat.course.nodes.CourseNode;
import org.olat.course.run.scoring.AssessmentEvaluation;
import org.olat.course.run.scoring.DurationEvaluator;
import org.olat.modules.assessment.model.AssessmentObligation;
/**
*
......@@ -31,7 +32,7 @@ import org.olat.course.run.scoring.DurationEvaluator;
* @author uhensler, urs.hensler@frentix.com, http://www.frentix.com
*
*/
public class STDurationEvaluator implements DurationEvaluator {
public class CumulatingDurationEvaluator implements DurationEvaluator {
@Override
public boolean isDependingOnCurrentNode() {
......@@ -53,7 +54,7 @@ public class STDurationEvaluator implements DurationEvaluator {
boolean hasDurations = false;
int sum = 0;
for (AssessmentEvaluation child : children) {
if (child.getDuration() != null) {
if (isMandatory(child) && child.getDuration() != null) {
sum += child.getDuration().intValue();
hasDurations = true;
}
......@@ -61,4 +62,8 @@ public class STDurationEvaluator implements DurationEvaluator {
return hasDurations? Integer.valueOf(sum): null;
}
private boolean isMandatory(AssessmentEvaluation child) {
return AssessmentObligation.mandatory.equals(child.getObligation());
}
}
......@@ -65,7 +65,7 @@ public class STAssessmentHandler implements AssessmentHandler {
private static final ScoreEvaluator CONDITION_SCORE_EVALUATOR = new ConditionScoreEvaluator();
private static final PassedEvaluator CONDITION_PASSED_EVALUATOR = new ConditionPassedEvaluator();
private static final DurationEvaluator DURATION_EVALUATOR = new STDurationEvaluator();
private static final DurationEvaluator CUMMULATING_DURATION_EVALUATOR = new CumulatingDurationEvaluator();
private static final StatusEvaluator SCORE_STATUS_EVALUATOR = new ScoreStatusEvaluator();
private static final StatusEvaluator STATUS_LEARNING_PATH_STATUS_EVALUATOR = new STLinearStatusEvaluator();
private static final FullyAssessedEvaluator FULLY_ASSESSED_EVALUATOR = new STFullyAssessedEvaluator();
......@@ -77,7 +77,7 @@ public class STAssessmentHandler implements AssessmentHandler {
.withLastModificationsEvaluator(LAST_MODIFICATION_EVALUATOR)
.build();
private static final AccountingEvaluators LEARNING_PATH_EVALUATORS = AccountingEvaluatorsBuilder.builder()
.withDurationEvaluator(DURATION_EVALUATOR)
.withDurationEvaluator(CUMMULATING_DURATION_EVALUATOR)
.withScoreEvaluator(CONDITION_SCORE_EVALUATOR)
.withPassedEvaluator(CONDITION_PASSED_EVALUATOR)
.withStatusEvaluator(STATUS_LEARNING_PATH_STATUS_EVALUATOR)
......
......@@ -25,8 +25,8 @@ import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import org.olat.course.nodes.st.assessment.STDurationEvaluator;
import org.olat.course.run.scoring.AssessmentEvaluation;
import org.olat.modules.assessment.model.AssessmentObligation;
/**
*
......@@ -34,9 +34,9 @@ import org.olat.course.run.scoring.AssessmentEvaluation;
* @author uhensler, urs.hensler@frentix.com, http://www.frentix.com
*
*/
public class STDurationEvaluatorTest {
public class CumulatingDurationEvaluatorTest {
STDurationEvaluator sut = new STDurationEvaluator();
CumulatingDurationEvaluator sut = new CumulatingDurationEvaluator();
@Test
public void shouldNotDependOnCurrentNode() {
......@@ -49,18 +49,25 @@ public class STDurationEvaluatorTest {
}
@Test
public void shouldSumDurationOfChildren() {
public void shouldSumDurationOfMandatoryChildren() {
List<AssessmentEvaluation> children = new ArrayList<>();
AssessmentEvaluation child1 = new AssessmentEvaluation(null, null, null, null, null, null, null, null, null, null, null, 0, null, null, null, null, null, 2);
AssessmentEvaluation child1 = createAssessmentEvaluation(AssessmentObligation.mandatory, 2);
children.add(child1);
AssessmentEvaluation child2 = new AssessmentEvaluation(null, null, null, null, null, null, null, null, null, null, null, 0, null, null, null, null, null, 3);
AssessmentEvaluation child2 = createAssessmentEvaluation(AssessmentObligation.mandatory, 3);
children.add(child2);
AssessmentEvaluation child3 = new AssessmentEvaluation(null, null, null, null, null, null, null, null, null, null, null, 0, null, null, null, null, null, null);
AssessmentEvaluation child3 = createAssessmentEvaluation(AssessmentObligation.mandatory, null);
children.add(child3);
AssessmentEvaluation child4 = createAssessmentEvaluation(AssessmentObligation.optional, 10);
children.add(child4);
Integer duration = sut.getDuration(children);
assertThat(duration).isEqualTo(5);
}
private AssessmentEvaluation createAssessmentEvaluation(AssessmentObligation obligation, Integer duration) {
return new AssessmentEvaluation(null, null, null, null, null, null, null, null, null, null, null, 0, null, null,
null, null, obligation, duration);
}
}
......@@ -459,7 +459,7 @@ import org.junit.runners.Suite;
org.olat.course.learningpath.evaluation.DefaultLinearStatusEvaluatorTest.class,
org.olat.course.learningpath.evaluation.LinearAccessEvaluator.class,
org.olat.course.learningpath.manager.LearningPathNodeAccessProviderTest.class,
org.olat.course.nodes.st.assessment.STDurationEvaluatorTest.class,
org.olat.course.nodes.st.assessment.CumulatingDurationEvaluatorTest.class,
org.olat.course.nodes.st.assessment.STFullyAssessedEvaluatorTest.class,
org.olat.course.nodes.st.assessment.STLastModificationsEvaluatorTest.class,
org.olat.course.nodes.st.assessment.STLinearStatusEvaluatorTest.class,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment