From b861d29bdacccda3771e43a580867a45dcf27aa9 Mon Sep 17 00:00:00 2001 From: "QSL\\SumathiT" Date: Wed, 11 Dec 2024 12:09:11 -0800 Subject: [PATCH] Changes to expose validation codes through endpoint. --- .../bc/gov/educ/eas/api/constants/v1/URL.java | 1 + .../controller/v1/CodeTableAPIController.java | 18 +++++++++++++++ .../api/endpoint/v1/CodeTableAPIEndpoint.java | 7 ++++++ .../struct/v1/ValidationIssueTypeCode.java | 23 +++++++++++++++++++ .../v1/CodeTableAPIControllerTest.java | 8 +++++++ 5 files changed, 57 insertions(+) create mode 100644 api/src/main/java/ca/bc/gov/educ/eas/api/struct/v1/ValidationIssueTypeCode.java diff --git a/api/src/main/java/ca/bc/gov/educ/eas/api/constants/v1/URL.java b/api/src/main/java/ca/bc/gov/educ/eas/api/constants/v1/URL.java index e7e7dea..5ad0a67 100644 --- a/api/src/main/java/ca/bc/gov/educ/eas/api/constants/v1/URL.java +++ b/api/src/main/java/ca/bc/gov/educ/eas/api/constants/v1/URL.java @@ -16,6 +16,7 @@ private URL(){ public static final String ASSESSMENT_TYPE_CODE_URL = BASE_URL + "/assessment-types"; public static final String PROVINCIAL_SPECIALCASE_CODE_URL = BASE_URL + "/assessment-specialcase-types"; public static final String ASSESSMENTS_URL = BASE_URL + "/assessments"; + public static final String VALIDATION_ISSUE_TYPE_CODE_URL = BASE_URL + "/assessment-validation-issue-types"; } diff --git a/api/src/main/java/ca/bc/gov/educ/eas/api/controller/v1/CodeTableAPIController.java b/api/src/main/java/ca/bc/gov/educ/eas/api/controller/v1/CodeTableAPIController.java index a056e05..fb9a310 100644 --- a/api/src/main/java/ca/bc/gov/educ/eas/api/controller/v1/CodeTableAPIController.java +++ b/api/src/main/java/ca/bc/gov/educ/eas/api/controller/v1/CodeTableAPIController.java @@ -2,12 +2,15 @@ import ca.bc.gov.educ.eas.api.endpoint.v1.CodeTableAPIEndpoint; import ca.bc.gov.educ.eas.api.mappers.v1.CodeTableMapper; +import ca.bc.gov.educ.eas.api.rules.assessment.AssessmentStudentValidationIssueTypeCode; import ca.bc.gov.educ.eas.api.service.v1.CodeTableService; import ca.bc.gov.educ.eas.api.struct.v1.AssessmentTypeCode; import ca.bc.gov.educ.eas.api.struct.v1.ProvincialSpecialCaseCode; +import ca.bc.gov.educ.eas.api.struct.v1.ValidationIssueTypeCode; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.RestController; +import java.util.ArrayList; import java.util.List; @RestController @@ -26,4 +29,19 @@ public List getAssessTypeCodes() { public List getProvincialSpecialCaseCodes() { return codeTableService.getAllProvincialSpecialCaseCodes().stream().map(mapper::toStructure).toList(); } + + @Override + public List getAssessmentStudentValidationIssueTypeCodes() { + List validationIssues = new ArrayList<>(); + + for (var code : AssessmentStudentValidationIssueTypeCode.values()) { + ValidationIssueTypeCode issue = new ValidationIssueTypeCode(); + issue.setValidationIssueTypeCode(code.getCode()); + issue.setMessage(code.getMessage()); + + validationIssues.add(issue); + } + + return validationIssues; + } } diff --git a/api/src/main/java/ca/bc/gov/educ/eas/api/endpoint/v1/CodeTableAPIEndpoint.java b/api/src/main/java/ca/bc/gov/educ/eas/api/endpoint/v1/CodeTableAPIEndpoint.java index 4a7c212..f688203 100644 --- a/api/src/main/java/ca/bc/gov/educ/eas/api/endpoint/v1/CodeTableAPIEndpoint.java +++ b/api/src/main/java/ca/bc/gov/educ/eas/api/endpoint/v1/CodeTableAPIEndpoint.java @@ -3,6 +3,7 @@ import ca.bc.gov.educ.eas.api.constants.v1.URL; import ca.bc.gov.educ.eas.api.struct.v1.AssessmentTypeCode; import ca.bc.gov.educ.eas.api.struct.v1.ProvincialSpecialCaseCode; +import ca.bc.gov.educ.eas.api.struct.v1.ValidationIssueTypeCode; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; @@ -24,4 +25,10 @@ public interface CodeTableAPIEndpoint { @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK")}) @Schema(name = "AssessmentTypeCode", implementation = AssessmentTypeCode.class) List getProvincialSpecialCaseCodes(); + + @PreAuthorize("hasAuthority('SCOPE_READ_EAS_SESSIONS')") + @GetMapping(URL.VALIDATION_ISSUE_TYPE_CODE_URL) + @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK")}) + @Schema(name = "AssessmentTypeCode", implementation = ValidationIssueTypeCode.class) + List getAssessmentStudentValidationIssueTypeCodes(); } diff --git a/api/src/main/java/ca/bc/gov/educ/eas/api/struct/v1/ValidationIssueTypeCode.java b/api/src/main/java/ca/bc/gov/educ/eas/api/struct/v1/ValidationIssueTypeCode.java new file mode 100644 index 0000000..a4f0099 --- /dev/null +++ b/api/src/main/java/ca/bc/gov/educ/eas/api/struct/v1/ValidationIssueTypeCode.java @@ -0,0 +1,23 @@ +package ca.bc.gov.educ.eas.api.struct.v1; + + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +@SuppressWarnings("squid:S1700") +public class ValidationIssueTypeCode implements Serializable { + private static final long serialVersionUID = 6118916290604876032L; + + private String validationIssueTypeCode; + private String message; + private String severityTypeCode; +} + diff --git a/api/src/test/java/ca/bc/gov/educ/eas/api/controller/v1/CodeTableAPIControllerTest.java b/api/src/test/java/ca/bc/gov/educ/eas/api/controller/v1/CodeTableAPIControllerTest.java index 5948b48..2605eb4 100644 --- a/api/src/test/java/ca/bc/gov/educ/eas/api/controller/v1/CodeTableAPIControllerTest.java +++ b/api/src/test/java/ca/bc/gov/educ/eas/api/controller/v1/CodeTableAPIControllerTest.java @@ -54,5 +54,13 @@ void test_getProvincialSpecialCaseCodes_WithValidScope_ShouldReturnOK() throws E .andExpect(status().isOk()); } + @Test + void test_getValidationIssueTypeCdes_WithValidScope_ShouldReturnOK() throws Exception { + final GrantedAuthority grantedAuthority = () -> "SCOPE_READ_EAS_SESSIONS"; + final SecurityMockMvcRequestPostProcessors.OidcLoginRequestPostProcessor mockAuthority = oidcLogin().authorities(grantedAuthority); + this.mockMvc.perform(get(URL.VALIDATION_ISSUE_TYPE_CODE_URL).with(mockAuthority)) + .andDo(print()) + .andExpect(status().isOk()); + } }