Skip to content

Commit

Permalink
GAP-2360: Add endpoints for middleware (#94)
Browse files Browse the repository at this point in the history
* Add functionality to retrieve an application status from a submission id
  • Loading branch information
ryan-tco authored Jan 18, 2024
1 parent 7a415c9 commit 5062dc2
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -613,5 +613,9 @@ public boolean isApplicantEligible(final String userId, final UUID submissionId,
final Optional<SubmissionQuestion> eligibilityResponse = getQuestionResponseByQuestionId(submission ,"ELIGIBILITY");
return eligibilityResponse.map(submissionQuestion -> submissionQuestion.getResponse().equals("Yes")).orElse(false);
}

public Optional<Submission> getSubmissionById(final UUID submissionId) {
return submissionRepository.findById(submissionId);
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -382,6 +382,22 @@ public ResponseEntity<Boolean> isApplicantEligible(@PathVariable final UUID sub
return ResponseEntity.ok(submissionService.isApplicantEligible(applicantId, submissionId, "ELIGIBILITY"));
}

@GetMapping("/{submissionId}/application/status")
public ResponseEntity<String> applicationStatus(@PathVariable final UUID submissionId) {
final String applicantId = getUserIdFromSecurityContext();
Optional<Submission> submission = submissionService.getSubmissionById(submissionId);
if (submission.isEmpty()) {
return ResponseEntity.notFound().build();
}

String submissionApplicant = submission.get().getApplicant().getUserId();
if (submissionApplicant.equals(applicantId)) {
return ResponseEntity.ok(submission.get().getApplication().getApplicationStatus().name());
} else {
return ResponseEntity.status(401).build();
}
}

private GetSubmissionDto buildSubmissionDto(Submission submission) {
List<GetSectionDto> sections = new ArrayList<>();
for (SubmissionSection section : submission.getDefinition().getSections()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1625,6 +1625,15 @@ void isApplicantEligible_returnFalse() {
assertThat(result).isFalse();
}

@Test
void getSubmissionById_ReturnsCorrectSubmission() {
Submission submission = Submission.builder().id(SUBMISSION_ID).build();
when(submissionRepository.findById(SUBMISSION_ID)).thenReturn(Optional.of(submission));
Optional<Submission> result = serviceUnderTest.getSubmissionById(SUBMISSION_ID);
assertThat(result).isPresent();
assertThat(result.get()).isEqualTo(submission);
}

}

@Nested
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1028,6 +1028,37 @@ void isApplicantEligible_ReturnsExpectedResponse_ReturnFalse() {
assertThat(response.getBody()).isFalse();
}

@Test
void applicationStatus_ReturnsExpectedResponse() {
GrantApplicant applicant = GrantApplicant.builder().userId(APPLICANT_USER_ID).build();
GrantApplication application = GrantApplication.builder().applicationStatus(GrantApplicationStatus.REMOVED).build();
Submission submission = Submission.builder().id(SUBMISSION_ID).application(application).applicant(applicant).build();
when(submissionService.getSubmissionById(SUBMISSION_ID)).thenReturn(Optional.ofNullable(submission));
final ResponseEntity<String> response = controllerUnderTest.applicationStatus(SUBMISSION_ID);

assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(response.getBody()).isEqualTo("REMOVED");
}

@Test
void applicationStatus_ReturnsExpectedResponse_WhenSubmissionNotFound() {
when(submissionService.getSubmissionById(SUBMISSION_ID)).thenReturn(Optional.empty());
final ResponseEntity<String> response = controllerUnderTest.applicationStatus(SUBMISSION_ID);

assertThat(response.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND);
}

@Test
void applicationStatus_ReturnsUnauthorised_WhenIdMismatch() {
GrantApplicant applicant = GrantApplicant.builder().userId("testUserId").build();
GrantApplication application = GrantApplication.builder().applicationStatus(GrantApplicationStatus.REMOVED).build();
Submission submission = Submission.builder().id(SUBMISSION_ID).application(application).applicant(applicant).build();
when(submissionService.getSubmissionById(SUBMISSION_ID)).thenReturn(Optional.ofNullable(submission));
final ResponseEntity<String> response = controllerUnderTest.applicationStatus(SUBMISSION_ID);

assertThat(response.getStatusCode()).isEqualTo(HttpStatus.UNAUTHORIZED);
}

@Test
void exportSingleSubmissionReturnsOdtFile() throws Exception {
UUID submissionID = UUID.randomUUID();
Expand Down

0 comments on commit 5062dc2

Please sign in to comment.