Skip to content

Commit a028e27

Browse files
authored
Merge pull request #556 from bcgov/fix/GRAD2-3811
GRAD2-3811
2 parents 1fdfc48 + a716468 commit a028e27

2 files changed

Lines changed: 35 additions & 4 deletions

File tree

‎api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/RegistrationsFailedCrseRule.java‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,12 @@ public class RegistrationsFailedCrseRule extends BaseRule implements Rule {
3333
@Override
3434
public RuleData fire() {
3535
List<StudentCourse> studentCourseList = ruleProcessorData.getStudentCourses();
36-
3736
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("PST"), Locale.CANADA);
3837
boolean inProgressCourse = false;
3938
for (StudentCourse studentCourse : studentCourseList) {
39+
if (RuleEngineApiUtils.isCompletedCourse(studentCourse.getCompletedCourseLetterGrade(), studentCourse.getCompletedCoursePercentage())) {
40+
continue;
41+
}
4042
try {
4143
Date sessionDate = toLastDayOfMonth(RuleEngineApiUtils.parseDate(studentCourse.getSessionDate() + "/01", DATE_FORMAT));
4244
String sDate = RuleEngineApiUtils.formatDate(sessionDate, RuleEngineApiConstants.DEFAULT_DATE_FORMAT);

‎api/src/test/java/ca/bc/gov/educ/api/ruleengine/service/RuleEngineServiceTest.java‎

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,7 @@
55
import java.util.*;
66
import java.util.logging.Logger;
77

8-
import ca.bc.gov.educ.api.ruleengine.dto.RuleData;
98
import ca.bc.gov.educ.api.ruleengine.dto.StudentCourse;
10-
import ca.bc.gov.educ.api.ruleengine.rule.MatchCreditsRule;
119
import ca.bc.gov.educ.api.ruleengine.util.RuleProcessorRuleUtils;
1210
import org.junit.Test;
1311
import org.junit.runner.RunWith;
@@ -21,7 +19,6 @@
2119
import ca.bc.gov.educ.api.ruleengine.dto.RuleProcessorData;
2220

2321
import static org.junit.Assert.*;
24-
import static org.mockito.Mockito.when;
2522

2623

2724
@RunWith(SpringRunner.class)
@@ -1207,6 +1204,38 @@ public void testProcessGradAlgorithmRules2018_EN_126187616() {
12071204
assertFalse(ruleProcessorData.isGraduated());
12081205
}
12091206

1207+
@Test
1208+
public void testRegistrationsFailedCourseRuleIgnoresFailingInterimWhenFinalExists() {
1209+
RuleProcessorData ruleProcessorData = getRuleProcessorData("2018-EN-126187616");
1210+
assertNotNull(ruleProcessorData);
1211+
ruleProcessorData.setProjected(false);
1212+
ruleProcessorData.getStudentCourses().add(
1213+
StudentCourse.builder()
1214+
.courseCode("ZZZ")
1215+
.courseName("Regression Test Course")
1216+
.courseLevel("12")
1217+
.sessionDate("209912")
1218+
.credits(4)
1219+
.gradReqMet("")
1220+
.gradReqMetDetail("")
1221+
.completedCoursePercentage(67.0)
1222+
.completedCourseLetterGrade("C")
1223+
.interimPercent(42.0)
1224+
.interimLetterGrade("F")
1225+
.build()
1226+
);
1227+
1228+
ruleProcessorData = ruleEngineService.processGradAlgorithmRules(ruleProcessorData);
1229+
1230+
assertNotNull(ruleProcessorData);
1231+
StudentCourse preservedCourse = ruleProcessorData.getStudentCourses().stream()
1232+
.filter(course -> "ZZZ".equals(course.getCourseCode()) && "12".equals(course.getCourseLevel()))
1233+
.findFirst()
1234+
.orElse(null);
1235+
assertNotNull(preservedCourse);
1236+
assertFalse(preservedCourse.isFailed());
1237+
}
1238+
12101239
@Test
12111240
public void testProcessGradAlgorithmRules2018_EN_cutoff_rule() {
12121241
RuleProcessorData ruleProcessorData = getRuleProcessorData("2018-EN-CUTOFF-RULE-DATA");

0 commit comments

Comments
 (0)