From 4d358cfed2967ce257979c0096743e86bf02f405 Mon Sep 17 00:00:00 2001 From: uhensler <urs.hensler@frentix.com> Date: Thu, 19 Mar 2020 16:58:09 +0100 Subject: [PATCH] OO-4582: Fail if participant has to pass all course elements but a course element is failed --- .../course/nodes/st/assessment/STRootPassedEvaluator.java | 7 ++++--- .../nodes/st/assessment/STRootPassedEvaluatorTest.java | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/olat/course/nodes/st/assessment/STRootPassedEvaluator.java b/src/main/java/org/olat/course/nodes/st/assessment/STRootPassedEvaluator.java index 3bd66387986..86d2135efdf 100644 --- a/src/main/java/org/olat/course/nodes/st/assessment/STRootPassedEvaluator.java +++ b/src/main/java/org/olat/course/nodes/st/assessment/STRootPassedEvaluator.java @@ -90,10 +90,11 @@ public class STRootPassedEvaluator implements RootPassedEvaluator { // All passed if (config.getBooleanSafe(STCourseNode.CONFIG_PASSED_ALL)) { Counts counts = passCounter.getCounts(courseNode, scoreAccounting); - if (counts.isAllAssessed() && counts.getPassable() > 0) { - if (counts.getPassable() == counts.getPassed()) { + if (counts.getPassable() > 0) { + if (counts.isAllAssessed() && counts.getPassable() == counts.getPassed()) { return Boolean.TRUE; - } else if (getActivePassedConfigs(config) == 1) { + } + if (counts.getFailed() > 0 && getActivePassedConfigs(config) == 1) { return Boolean.FALSE; } } diff --git a/src/test/java/org/olat/course/nodes/st/assessment/STRootPassedEvaluatorTest.java b/src/test/java/org/olat/course/nodes/st/assessment/STRootPassedEvaluatorTest.java index 77870d927e9..a8e6afed2eb 100644 --- a/src/test/java/org/olat/course/nodes/st/assessment/STRootPassedEvaluatorTest.java +++ b/src/test/java/org/olat/course/nodes/st/assessment/STRootPassedEvaluatorTest.java @@ -213,7 +213,7 @@ public class STRootPassedEvaluatorTest { courseNode.getModuleConfiguration().setBooleanEntry(STCourseNode.CONFIG_PASSED_ALL, true); ScoreAccounting scoreAccounting = new MappedScoreAccounting(); - Counts counts = new CountsImpl(3, 2, 1); + Counts counts = new CountsImpl(3, 1, 1); PassCounter passCounter = mock(PassCounter.class); when(passCounter.getCounts(any(), any())).thenReturn(counts); STRootPassedEvaluator sut = new STRootPassedEvaluator(passCounter); -- GitLab