From b55a865b66ec3c0671135ba74b9ceaca3d951bef Mon Sep 17 00:00:00 2001 From: uhensler <urs.hensler@frentix.com> Date: Fri, 25 Oct 2019 15:51:07 +0200 Subject: [PATCH] OO-4207: Reset status to not started if not fully assessed anymore --- .../manager/LearningPathNodeAccessProvider.java | 14 ++++++++------ .../run/scoring/StatusCompletionEvaluator.java | 2 +- .../LearningPathNodeAccessProviderTest.java | 2 +- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/olat/course/learningpath/manager/LearningPathNodeAccessProvider.java b/src/main/java/org/olat/course/learningpath/manager/LearningPathNodeAccessProvider.java index 203dcf6b012..00c983ba9f9 100644 --- a/src/main/java/org/olat/course/learningpath/manager/LearningPathNodeAccessProvider.java +++ b/src/main/java/org/olat/course/learningpath/manager/LearningPathNodeAccessProvider.java @@ -97,7 +97,8 @@ public class LearningPathNodeAccessProvider implements NodeAccessProvider { FullyAssessedResult result = getConfigs(courseNode).isFullyAssessedOnNodeVisited(); boolean participant = userCourseEnv.isParticipant(); if (participant && result.isEnabled()) { - AssessmentEntryStatus status = getStatus(courseNode, userCourseEnv, result.isDone()); + AssessmentEntryStatus status = getStatus(courseNode, userCourseEnv, result.isDone(), + result.isFullyAssessed()); courseAssessmentService.updateFullyAssessed(courseNode, userCourseEnv, Boolean.valueOf(result.isFullyAssessed()), status, Role.user); return true; @@ -137,16 +138,17 @@ public class LearningPathNodeAccessProvider implements NodeAccessProvider { FullyAssessedResult result) { boolean participant = userCourseEnv.isParticipant(); if (participant && result.isEnabled()) { - AssessmentEntryStatus newStatus = getStatus(courseNode, userCourseEnv, result.isDone()); + AssessmentEntryStatus status = getStatus(courseNode, userCourseEnv, result.isDone(), + result.isFullyAssessed()); courseAssessmentService.updateFullyAssessed(courseNode, userCourseEnv, - Boolean.valueOf(result.isFullyAssessed()), newStatus, by); + Boolean.valueOf(result.isFullyAssessed()), status, by); } } private AssessmentEntryStatus getStatus(CourseNode courseNode, UserCourseEnvironment userCourseEnvironment, - boolean isDone) { - return isDone - ? AssessmentEntryStatus.done + boolean setDone, boolean fullyAssessed) { + return setDone + ? fullyAssessed? AssessmentEntryStatus.done: AssessmentEntryStatus.notStarted : courseAssessmentService.getAssessmentEntry(courseNode, userCourseEnvironment).getAssessmentStatus(); } diff --git a/src/main/java/org/olat/course/run/scoring/StatusCompletionEvaluator.java b/src/main/java/org/olat/course/run/scoring/StatusCompletionEvaluator.java index 0024d799ead..c70e6deae81 100644 --- a/src/main/java/org/olat/course/run/scoring/StatusCompletionEvaluator.java +++ b/src/main/java/org/olat/course/run/scoring/StatusCompletionEvaluator.java @@ -47,7 +47,7 @@ public class StatusCompletionEvaluator implements CompletionEvaluator { case notStarted: return 0.0; case inProgress: return 0.5; case inReview: return 0.75; - case done: return 1.0; + case done: return 0.9; // 1.0 is reached when fully assessed default: return 0.0; } } diff --git a/src/test/java/org/olat/course/learningpath/manager/LearningPathNodeAccessProviderTest.java b/src/test/java/org/olat/course/learningpath/manager/LearningPathNodeAccessProviderTest.java index 96cd45b2b51..04d5c4b474a 100644 --- a/src/test/java/org/olat/course/learningpath/manager/LearningPathNodeAccessProviderTest.java +++ b/src/test/java/org/olat/course/learningpath/manager/LearningPathNodeAccessProviderTest.java @@ -198,7 +198,7 @@ public class LearningPathNodeAccessProviderTest { sut.updateFullyAssessed(courseNodeMock, participantCourseEnv, Role.auto, result); verify(courseAssessmentService).updateFullyAssessed(courseNodeMock, participantCourseEnv, Boolean.FALSE, - AssessmentEntryStatus.done, Role.auto); + AssessmentEntryStatus.notStarted, Role.auto); } @Test -- GitLab