Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -259,4 +259,8 @@ void filterOutDeceasedStudents(List<StudentCredentialDistribution> credentialLis
LOGGER.debug("Revised size of credential list: {}", credentialList.size());
}
}

protected void setReportingType(List<StudentCredentialDistribution> credentialList, String reportingSchoolType) {
credentialList.forEach(credential -> credential.setReportingSchoolTypeCode(reportingSchoolType));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
import java.util.List;
import java.util.Map;

import static ca.bc.gov.educ.api.batchgraduation.constants.ReportingSchoolTypesEnum.SCHOOL_AT_GRAD;

/**
* Monthly Distribution Partitioner
*/
Expand Down Expand Up @@ -55,6 +57,7 @@ public Map<String, ExecutionContext> partition(int gridSize) {
filterByStudentSearchRequest(credentialList);
if(!credentialList.isEmpty()) {
filterOutDeceasedStudents(credentialList);
setReportingType(credentialList, SCHOOL_AT_GRAD.toString());
updateBatchJobHistory(createBatchJobHistory(), (long) credentialList.size());
return getStringExecutionContextMap(gridSize, credentialList, null);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;

import static ca.bc.gov.educ.api.batchgraduation.constants.ReportingSchoolTypesEnum.SCHOOL_AT_GRAD;

@Component
public class RestUtils {

Expand Down Expand Up @@ -247,11 +249,7 @@ public StudentCredentialDistribution processDistribution(StudentCredentialDistri
item.setProgram(stuRec.getProgram());
item.setHonoursStanding(stuRec.getHonoursStanding());
if(item.getSchoolId() == null) {
if(List.of("RC", "OC").contains(summary.getCredentialType())) { // use school at grad for certs
item.setSchoolId(stuRec.getSchoolAtGradId());
} else {
item.setSchoolId(stuRec.getSchoolOfRecordId());
}
setSchoolId(item, summary, stuRec);
}
ca.bc.gov.educ.api.batchgraduation.model.institute.School school = getSchool(item.getSchoolId());
if (school != null) {
Expand All @@ -273,6 +271,14 @@ public StudentCredentialDistribution processDistribution(StudentCredentialDistri
return item;
}

private void setSchoolId(StudentCredentialDistribution item, DistributionSummaryDTO summary, GraduationStudentRecordDistribution studentRecord) {
if(StringUtils.equalsAnyIgnoreCase(summary.getCredentialType(), "RC", "OC") || StringUtils.equalsIgnoreCase(item.getReportingSchoolTypeCode(), SCHOOL_AT_GRAD.toString())) { // use school at grad for certs and monthly distribution
item.setSchoolId(studentRecord.getSchoolAtGradId());
} else {
item.setSchoolId(studentRecord.getSchoolOfRecordId());
}
}

public PsiCredentialDistribution processPsiDistribution(PsiCredentialDistribution item, PsiDistributionSummaryDTO summary) {
summary.setProcessedCount(summary.getProcessedCount() + 1L);
try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.slf4j.Logger;
Expand Down Expand Up @@ -331,36 +333,56 @@ public void testGetStudentData_withlist() {
assertThat(resList).hasSize(1);
}

@Test
public void testProcessDistribution() {
@ParameterizedTest
@CsvSource({
"SCHOOL_AT_GRAD, , schoolAtGrad",
", RC, schoolAtGrad",
", , schoolOfRecord"
})
void testProcessDistribution_schoolIdIsNullAndReportingSchoolType_addsCorrectSchool(String reportingSchoolTypeCode, String credentialType, String expectedSchoolType) {

final UUID studentID = UUID.randomUUID();
final String pen = "123456789";
final Long batchId = 9879L;
final String mincode = "123121111";
final UUID schoolId = UUID.randomUUID();
final UUID schoolOfRecordId = UUID.randomUUID();
List<StudentCredentialDistribution> globalList = new ArrayList<>();

StudentCredentialDistribution scd = new StudentCredentialDistribution();
scd.setStudentGrade("12");
scd.setId(UUID.randomUUID());
scd.setPaperType("YED4");
scd.setSchoolOfRecord(mincode);
scd.setReportingSchoolTypeCode(reportingSchoolTypeCode);
scd.setStudentID(studentID);
globalList.add(scd);

GraduationStudentRecordDistribution grd = new GraduationStudentRecordDistribution();
grd.setStudentID(studentID);
grd.setProgram("2018-EN");
grd.setStudentGrade("12");
grd.setSchoolAtGradId(schoolId);
grd.setSchoolOfRecordId(schoolOfRecordId);

mockTokenResponseObject();

when(this.restService.get(String.format(constants.getStudentInfo(),studentID), GraduationStudentRecordDistribution.class)).thenReturn(grd);

DistributionSummaryDTO summary = new DistributionSummaryDTO();
summary.setBatchId(batchId);
summary.setGlobalList(globalList);
summary.setCredentialType(credentialType);

StudentCredentialDistribution res = this.restUtils.processDistribution(scd,summary);
assertNotNull(res);
if(expectedSchoolType.equals("schoolAtGrad")) {
assertEquals(schoolId, res.getSchoolId());
} else {
assertEquals(schoolOfRecordId, res.getSchoolId());
}
}

@Test
public void testProcessDistribution_elsecase() {
public void testProcessDistribution_schoolIdIsNullAndRC_addsCorrectSchool() {

final UUID studentID = UUID.randomUUID();
final UUID studentID2 = UUID.randomUUID();
final Long batchId = 9879L;
final UUID schoolId = UUID.randomUUID();
List<StudentCredentialDistribution> globalList = new ArrayList<>();
Expand All @@ -369,36 +391,65 @@ public void testProcessDistribution_elsecase() {
scd.setStudentGrade("12");
scd.setId(UUID.randomUUID());
scd.setPaperType("YED4");
scd.setSchoolId(schoolId);
scd.setStudentID(studentID);
globalList.add(scd);

StudentCredentialDistribution scd2 = new StudentCredentialDistribution();
scd2.setStudentGrade("12");
scd2.setId(UUID.randomUUID());
scd2.setPaperType("YED4");
scd2.setSchoolId(schoolId);
scd2.setStudentID(studentID2);
GraduationStudentRecordDistribution grd = new GraduationStudentRecordDistribution();
grd.setStudentID(studentID);
grd.setProgram("2018-EN");
grd.setStudentGrade("12");
grd.setSchoolAtGradId(schoolId);
grd.setSchoolOfRecordId(UUID.randomUUID());

mockTokenResponseObject();

when(this.restService.get(String.format(constants.getStudentInfo(),studentID), GraduationStudentRecordDistribution.class)).thenReturn(grd);

DistributionSummaryDTO summary = new DistributionSummaryDTO();
summary.setBatchId(batchId);
summary.setGlobalList(globalList);
summary.setCredentialType("RC");

StudentCredentialDistribution res = this.restUtils.processDistribution(scd,summary);
assertNotNull(res);
assertEquals(schoolId, res.getSchoolId());
}

@Test
public void testProcessDistribution_schoolIdIsNull_addsCorrectSchool() {

final UUID studentID = UUID.randomUUID();
final Long batchId = 9879L;
final UUID schoolId = UUID.randomUUID();
final UUID schoolOfRecordId = UUID.randomUUID();
List<StudentCredentialDistribution> globalList = new ArrayList<>();

StudentCredentialDistribution scd = new StudentCredentialDistribution();
scd.setStudentGrade("12");
scd.setId(UUID.randomUUID());
scd.setPaperType("YED4");
scd.setStudentID(studentID);

GraduationStudentRecordDistribution grd = new GraduationStudentRecordDistribution();
grd.setStudentID(studentID2);
grd.setStudentID(studentID);
grd.setProgram("2018-EN");
grd.setStudentGrade("12");
grd.setSchoolOfRecordId(schoolId);
grd.setSchoolAtGradId(schoolId);
grd.setSchoolOfRecordId(schoolOfRecordId);

mockTokenResponseObject();

when(this.restService.get(String.format(constants.getStudentInfo(),studentID2), GraduationStudentRecordDistribution.class)).thenReturn(grd);
when(this.restService.get(String.format(constants.getStudentInfo(),studentID), GraduationStudentRecordDistribution.class)).thenReturn(grd);

DistributionSummaryDTO summary = new DistributionSummaryDTO();
summary.setBatchId(batchId);
summary.setGlobalList(globalList);

StudentCredentialDistribution res = this.restUtils.processDistribution(scd2,summary);
StudentCredentialDistribution res = this.restUtils.processDistribution(scd,summary);
assertNotNull(res);
assertEquals(schoolOfRecordId, res.getSchoolId());
}


@Test
public void testProcessDistribution_elsecase_null() {

Expand Down