From f7eca9a725281334dd85b6304856370e72fc13ef Mon Sep 17 00:00:00 2001 From: Ben Edwards <147524406+Ben-Edwards-cgi@users.noreply.github.com> Date: Fri, 23 Aug 2024 14:56:19 +0100 Subject: [PATCH] Use Lazy loading instead of Eager to reduce database calls (#740) * Updated Many classes to use Lazy Loading * Removed comment * Applied review comments --- build.gradle | 4 +- .../juror/api/AbstractIntegrationTest.java | 21 + ...rorReasonableAdjustmentRepositoryTest.java | 22 +- .../CompleteServiceControllerITest.java | 157 ++--- .../controller/CreatePoolControllerITest.java | 4 +- .../DeceasedResponseControllerITest.java | 97 +-- .../DeferralMaintenanceControllerITest.java | 265 ++++---- ...isqualifyJurorDueToAgeControllerITest.java | 272 ++++---- .../moj/controller/DisqualifyJurorITest.java | 222 +++---- .../ExcusalResponseControllerITest.java | 400 ++++++------ .../JurorExpenseControllerITest.java | 3 +- .../JurorPaperResponseControllerITest.java | 485 ++++++++------- .../JurorRecordControllerITest.java | 580 +++++++++--------- .../JurorResponseControllerITest.java | 464 +++++++------- .../moj/controller/LetterControllerITest.java | 295 +++++---- .../controller/ManagePoolControllerITest.java | 492 +++++++-------- .../moj/controller/PanelControllerITest.java | 91 +-- .../RequestPoolControllerITest.java | 129 ++-- .../moj/controller/TrialControllerITest.java | 292 ++++----- .../UndeliverableResponseControllerITest.java | 27 +- .../juror/api/juror/domain/CourtLocation.java | 4 +- .../juror/api/juror/domain/Holidays.java | 3 +- .../juror/api/juror/domain/JurorResponse.java | 3 +- .../juror/api/moj/audit/dto/JurorAudit.java | 2 +- .../controller/response/JurorStatusDto.java | 38 ++ .../response/ReissueLetterReponseDto.java | 4 +- .../juror/api/moj/domain/Appearance.java | 8 +- .../juror/api/moj/domain/BulkPrintData.java | 3 +- .../moj/domain/BulkPrintDataNotifyComms.java | 3 +- .../juror/api/moj/domain/ContactLog.java | 2 +- .../juror/api/moj/domain/CoronerPool.java | 3 +- .../api/moj/domain/FinancialAuditDetails.java | 5 +- .../gov/hmcts/juror/api/moj/domain/Juror.java | 2 +- .../hmcts/juror/api/moj/domain/JurorPool.java | 6 +- .../juror/api/moj/domain/ModJurorDetail.java | 3 +- .../moj/domain/NotifyTemplateMappingMod.java | 3 +- .../juror/api/moj/domain/PaymentData.java | 3 +- .../juror/api/moj/domain/PendingJuror.java | 4 +- .../juror/api/moj/domain/PoolComment.java | 3 +- .../juror/api/moj/domain/PoolRequest.java | 9 +- .../gov/hmcts/juror/api/moj/domain/User.java | 4 +- .../jurorresponse/AbstractJurorResponse.java | 4 +- .../JurorReasonableAdjustment.java | 3 +- .../api/moj/domain/messages/Message.java | 3 +- .../juror/api/moj/domain/trial/Panel.java | 5 +- .../juror/api/moj/domain/trial/Trial.java | 6 +- .../repository/IAppearanceRepositoryImpl.java | 3 +- .../AppearanceCreationServiceImpl.java | 1 + .../service/FinancialAuditServiceImpl.java | 9 + .../moj/service/PoolCreateServiceImpl.java | 11 +- .../moj/service/ReissueLetterServiceImpl.java | 3 +- .../juror/api/moj/service/VotersService.java | 5 +- .../moj/service/PoolCreateServiceTest.java | 1 - .../letter/ReissueLetterServiceTest.java | 4 +- 54 files changed, 2383 insertions(+), 2112 deletions(-) create mode 100644 src/main/java/uk/gov/hmcts/juror/api/moj/controller/response/JurorStatusDto.java diff --git a/build.gradle b/build.gradle index b95193338..1001b427d 100644 --- a/build.gradle +++ b/build.gradle @@ -284,10 +284,10 @@ checkstyle { } pmdTest { - maxFailures = 294 + maxFailures = 292 } pmdMain { - maxFailures = 776 + maxFailures = 771 } pmd { maxFailures = 0 diff --git a/src/integration-test/java/uk/gov/hmcts/juror/api/AbstractIntegrationTest.java b/src/integration-test/java/uk/gov/hmcts/juror/api/AbstractIntegrationTest.java index 3a9d67731..c045c209c 100644 --- a/src/integration-test/java/uk/gov/hmcts/juror/api/AbstractIntegrationTest.java +++ b/src/integration-test/java/uk/gov/hmcts/juror/api/AbstractIntegrationTest.java @@ -14,6 +14,8 @@ import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.security.authorization.AuthorizationDeniedException; import org.springframework.test.context.ActiveProfiles; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.support.TransactionTemplate; import uk.gov.hmcts.juror.api.config.bureau.BureauJwtPayload; import uk.gov.hmcts.juror.api.moj.domain.Role; import uk.gov.hmcts.juror.api.moj.domain.UserType; @@ -31,6 +33,7 @@ import java.util.List; import java.util.Map; import java.util.Set; +import java.util.function.Supplier; import static org.assertj.core.api.Assertions.assertThat; @@ -49,6 +52,9 @@ public abstract class AbstractIntegrationTest extends ContainerTest { @SuppressWarnings("SpringJavaAutowiredMembersInspection") @Autowired protected JdbcTemplate jdbcTemplate; + @Autowired + private PlatformTransactionManager transactionManager; + private TransactionTemplate transactionTemplate; @Value("${jwt.secret.bureau}") protected String bureauSecret; @@ -56,6 +62,21 @@ public abstract class AbstractIntegrationTest extends ContainerTest { @Value("${jwt.secret.hmac}") protected String hmacSecret; + + protected void executeInTransaction(Runnable supplier) { + executeInTransaction(() -> { + supplier.run(); + return null; + }); + } + + protected R executeInTransaction(Supplier supplier) { + if (transactionTemplate == null) { + transactionTemplate = new TransactionTemplate(transactionManager); + } + return transactionTemplate.execute(status -> supplier.get()); + } + protected HttpHeaders initialiseHeaders(String loginUser, UserType userType, Set roles, String owner) { BureauJwtPayload payload = createBureauJwtPayload(loginUser, userType, roles, owner); return buildHttpHeaders(payload); diff --git a/src/integration-test/java/uk/gov/hmcts/juror/api/bureau/domain/JurorReasonableAdjustmentRepositoryTest.java b/src/integration-test/java/uk/gov/hmcts/juror/api/bureau/domain/JurorReasonableAdjustmentRepositoryTest.java index fe1ad6f3b..3005bb641 100644 --- a/src/integration-test/java/uk/gov/hmcts/juror/api/bureau/domain/JurorReasonableAdjustmentRepositoryTest.java +++ b/src/integration-test/java/uk/gov/hmcts/juror/api/bureau/domain/JurorReasonableAdjustmentRepositoryTest.java @@ -40,15 +40,19 @@ public void setUp() throws Exception { @Test @Sql("/db/truncate.sql") @Sql("/db/BureauJurorSpecialNeedsRepository_findByJurorNumber.sql") + //FALSE positive + @SuppressWarnings("PMD.JUnitTestsShouldIncludeAssert") public void findByJurorNumberWithValidJurorNumberReturnsJurorSpecialNeeds() { - List actualReasonableAdjustment = jurorReasonableAdjustmentRepository - .findByJurorNumber("209092530"); - assertThat(actualReasonableAdjustment).hasSize(1); - assertThat(actualReasonableAdjustment).extracting("jurorNumber", "reasonableAdjustment.code", - "reasonableAdjustment.description", "reasonableAdjustmentDetail") - .contains(tuple(reasonableAdjustment.getJurorNumber(), - reasonableAdjustment.getReasonableAdjustment().getCode(), - reasonableAdjustment.getReasonableAdjustment().getDescription(), - reasonableAdjustment.getReasonableAdjustmentDetail())); + executeInTransaction(() -> { + List actualReasonableAdjustment = jurorReasonableAdjustmentRepository + .findByJurorNumber("209092530"); + assertThat(actualReasonableAdjustment).hasSize(1); + assertThat(actualReasonableAdjustment).extracting("jurorNumber", "reasonableAdjustment.code", + "reasonableAdjustment.description", "reasonableAdjustmentDetail") + .contains(tuple(reasonableAdjustment.getJurorNumber(), + reasonableAdjustment.getReasonableAdjustment().getCode(), + reasonableAdjustment.getReasonableAdjustment().getDescription(), + reasonableAdjustment.getReasonableAdjustmentDetail())); + }); } } diff --git a/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/CompleteServiceControllerITest.java b/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/CompleteServiceControllerITest.java index 89b3b81f5..7477b394b 100644 --- a/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/CompleteServiceControllerITest.java +++ b/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/CompleteServiceControllerITest.java @@ -70,30 +70,32 @@ public void setUp() throws Exception { private void validateJurorWasCompleted(LocalDate completionTime, String jurorNumber, String poolNumber, boolean isDismissal) { - JurorPool jurorPool = jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumber(jurorNumber, poolNumber); - assertEquals(true, jurorPool.getIsActive(), - "Juror pool should be active"); - assertEquals(false, jurorPool.getOnCall(), - "Juror pool should not be on call"); - assertEquals(IJurorStatus.COMPLETED, jurorPool.getStatus().getStatus(), - "Juror pool status should be completed"); - Juror juror = jurorPool.getJuror(); - - assertEquals(completionTime, juror.getCompletionDate(), - "Juror completion date should match"); - - if (isDismissal) { - assertThat(jurorPool.getNextDate()).isNull(); - assertThat(jurorPool.getOnCall()).isFalse(); - } - List jurorHistories = jurorHistoryRepository.findByJurorNumberOrderById(jurorNumber); - assertEquals(1, jurorHistories.size(), "Should only be one history entry"); - JurorHistory jurorHistory = jurorHistories.get(0); - assertEquals(poolNumber, jurorHistory.getPoolNumber(), "Pool number should match"); - assertEquals(jurorNumber, jurorHistory.getJurorNumber(), "Juror number should match"); - assertEquals("COURT_USER", jurorHistory.getCreatedBy(), "User id should match"); - assertEquals(HistoryCodeMod.COMPLETE_SERVICE, jurorHistory.getHistoryCode(), "History code should match"); - assertEquals(completionTime, jurorHistory.getOtherInformationDate(), "Date should match"); + executeInTransaction(() -> { + JurorPool jurorPool = jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumber(jurorNumber, poolNumber); + assertEquals(true, jurorPool.getIsActive(), + "Juror pool should be active"); + assertEquals(false, jurorPool.getOnCall(), + "Juror pool should not be on call"); + assertEquals(IJurorStatus.COMPLETED, jurorPool.getStatus().getStatus(), + "Juror pool status should be completed"); + Juror juror = jurorPool.getJuror(); + + assertEquals(completionTime, juror.getCompletionDate(), + "Juror completion date should match"); + + if (isDismissal) { + assertThat(jurorPool.getNextDate()).isNull(); + assertThat(jurorPool.getOnCall()).isFalse(); + } + List jurorHistories = jurorHistoryRepository.findByJurorNumberOrderById(jurorNumber); + assertEquals(1, jurorHistories.size(), "Should only be one history entry"); + JurorHistory jurorHistory = jurorHistories.get(0); + assertEquals(poolNumber, jurorHistory.getPoolNumber(), "Pool number should match"); + assertEquals(jurorNumber, jurorHistory.getJurorNumber(), "Juror number should match"); + assertEquals("COURT_USER", jurorHistory.getCreatedBy(), "User id should match"); + assertEquals(HistoryCodeMod.COMPLETE_SERVICE, jurorHistory.getHistoryCode(), "History code should match"); + assertEquals(completionTime, jurorHistory.getOtherInformationDate(), "Date should match"); + }); } @Nested @@ -176,13 +178,15 @@ void negativeOneJurorNotFound() throws Exception { + "\"message\":\"Juror number 941500004 not found in pool 415220901\"," + "\"path\":\"/api/v1/moj/complete-service/415220901/complete\"}", response.getBody(), false); - - JurorPool jurorPool = jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumber("641500005", "415220901"); - assertEquals(IJurorStatus.RESPONDED, jurorPool.getStatus().getStatus(), - "Juror pool status should not be updated"); - Juror juror = jurorPool.getJuror(); - assertNull(juror.getCompletionDate(), - "Completion date should not be update to provided completion date"); + executeInTransaction(() -> { + JurorPool jurorPool = + jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumber("641500005", "415220901"); + assertEquals(IJurorStatus.RESPONDED, jurorPool.getStatus().getStatus(), + "Juror pool status should not be updated"); + Juror juror = jurorPool.getJuror(); + assertNull(juror.getCompletionDate(), + "Completion date should not be update to provided completion date"); + }); } @Test @@ -210,24 +214,25 @@ void negativeOneJurorNotResponded() throws Exception { + "\"message\":\"Unable to complete the service for the following juror number(s) due to invalid " + "state: 641500003\"," + "\"code\":\"COMPLETE_SERVICE_JUROR_IN_INVALID_STATE\"}", response.getBody(), false); - - JurorPool jurorPool1 = jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumber("641500005", - "415220901"); - assertEquals(IJurorStatus.COMPLETED, jurorPool1.getStatus().getStatus(), - "Juror pool status should not change as transaction should rollback"); - Juror juror1 = jurorPool1.getJuror(); - assertNotNull(juror1.getCompletionDate(), - "Completion date should not be null."); - assertEquals(completionTime, juror1.getCompletionDate(), - "Completion date should be equal to 2023-11-23"); - - JurorPool jurorPool2 = jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumber("641500003", - "415220901"); - assertEquals(IJurorStatus.FAILED_TO_ATTEND, jurorPool2.getStatus().getStatus(), - "Juror pool status should not change as juror is in invalid state for completion"); - Juror juror2 = jurorPool2.getJuror(); - assertNull(juror2.getCompletionDate(), - "Completion date should not change as transaction should rollback"); + executeInTransaction(() -> { + JurorPool jurorPool1 = jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumber("641500005", + "415220901"); + assertEquals(IJurorStatus.COMPLETED, jurorPool1.getStatus().getStatus(), + "Juror pool status should not change as transaction should rollback"); + Juror juror1 = jurorPool1.getJuror(); + assertNotNull(juror1.getCompletionDate(), + "Completion date should not be null."); + assertEquals(completionTime, juror1.getCompletionDate(), + "Completion date should be equal to 2023-11-23"); + + JurorPool jurorPool2 = jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumber("641500003", + "415220901"); + assertEquals(IJurorStatus.FAILED_TO_ATTEND, jurorPool2.getStatus().getStatus(), + "Juror pool status should not change as juror is in invalid state for completion"); + Juror juror2 = jurorPool2.getJuror(); + assertNull(juror2.getCompletionDate(), + "Completion date should not change as transaction should rollback"); + }); } @Test @@ -521,14 +526,16 @@ void negativeOneJurorNotFound() throws Exception { + "\"message\":\"Juror number 941700009 not found in database\"," + "\"path\":\"/api/v1/moj/complete-service/dismissal\"}", response.getBody(), false); - - JurorPool jurorPool = jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumber("641700003", "417230101"); - assertEquals(IJurorStatus.RESPONDED, jurorPool.getStatus().getStatus(), - "Juror pool status should not change as transaction should rollback"); - - Juror juror = jurorPool.getJuror(); - assertNull(juror.getCompletionDate(), - "Completion date should not change as transaction should rollback"); + executeInTransaction(() -> { + JurorPool jurorPool = + jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumber("641700003", "417230101"); + assertEquals(IJurorStatus.RESPONDED, jurorPool.getStatus().getStatus(), + "Juror pool status should not change as transaction should rollback"); + + Juror juror = jurorPool.getJuror(); + assertNull(juror.getCompletionDate(), + "Completion date should not change as transaction should rollback"); + }); } @Test @@ -601,22 +608,26 @@ class UncompleteService { public static final String URL = BASE_URL + "/uncomplete"; private void validateJurorWasUncompleted(String jurorNumber, String poolNumber) { - JurorPool jurorPool = jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumber(jurorNumber, poolNumber); - assertEquals(IJurorStatus.RESPONDED, jurorPool.getStatus().getStatus(), - "Juror pool status should be responded"); - Juror juror = jurorPool.getJuror(); - - assertNull(juror.getCompletionDate(), - "Juror completion date should be null"); - - List jurorHistories = jurorHistoryRepository.findByJurorNumberOrderById(jurorNumber); - assertEquals(1, jurorHistories.size(), "Should only be one history entry"); - JurorHistory jurorHistory = jurorHistories.get(0); - assertEquals(poolNumber, jurorHistory.getPoolNumber(), "Pool number should match"); - assertEquals(jurorNumber, jurorHistory.getJurorNumber(), "Juror number should match"); - assertEquals("COURT_USER", jurorHistory.getCreatedBy(), "User id should match"); - assertEquals(HistoryCodeMod.COMPLETE_SERVICE, jurorHistory.getHistoryCode(), "History code should match"); - assertEquals("Completion date removed", jurorHistory.getOtherInformation(), "Info should match"); + executeInTransaction(() -> { + JurorPool jurorPool = + jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumber(jurorNumber, poolNumber); + assertEquals(IJurorStatus.RESPONDED, jurorPool.getStatus().getStatus(), + "Juror pool status should be responded"); + Juror juror = jurorPool.getJuror(); + + assertNull(juror.getCompletionDate(), + "Juror completion date should be null"); + + List jurorHistories = jurorHistoryRepository.findByJurorNumberOrderById(jurorNumber); + assertEquals(1, jurorHistories.size(), "Should only be one history entry"); + JurorHistory jurorHistory = jurorHistories.get(0); + assertEquals(poolNumber, jurorHistory.getPoolNumber(), "Pool number should match"); + assertEquals(jurorNumber, jurorHistory.getJurorNumber(), "Juror number should match"); + assertEquals("COURT_USER", jurorHistory.getCreatedBy(), "User id should match"); + assertEquals(HistoryCodeMod.COMPLETE_SERVICE, jurorHistory.getHistoryCode(), + "History code should match"); + assertEquals("Completion date removed", jurorHistory.getOtherInformation(), "Info should match"); + }); } @Test diff --git a/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/CreatePoolControllerITest.java b/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/CreatePoolControllerITest.java index dcada9b3a..5c91a9e8e 100644 --- a/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/CreatePoolControllerITest.java +++ b/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/CreatePoolControllerITest.java @@ -272,7 +272,7 @@ public void createPool_withDisqualifiedOnSelection() throws Exception { RequestEntity requestEntity2 = new RequestEntity<>( body, httpHeaders, HttpMethod.POST, uri2); ResponseEntity> response2 = template.exchange(requestEntity2, - new ParameterizedTypeReference>() { + new ParameterizedTypeReference<>() { }); assertThat(response2.getStatusCode()).isEqualTo(HttpStatus.OK); @@ -532,7 +532,7 @@ private PoolCreateRequestDto setUpPoolCreateRequestDto() { PoolCreateRequestDto poolCreateRequestDto = new PoolCreateRequestDto(); poolCreateRequestDto.setPoolNumber("415221201"); poolCreateRequestDto.setStartDate(LocalDate.of(2022, 12, 4)); - poolCreateRequestDto.setAttendTime(LocalDateTime.of(2022, 12, 04, 9, 0, 0)); + poolCreateRequestDto.setAttendTime(LocalDateTime.of(2022, 12, 4, 9, 0, 0)); poolCreateRequestDto.setNoRequested(5); poolCreateRequestDto.setBureauDeferrals(0); poolCreateRequestDto.setNumberRequired(4); diff --git a/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/DeceasedResponseControllerITest.java b/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/DeceasedResponseControllerITest.java index 34d1e4be8..e322c40e8 100644 --- a/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/DeceasedResponseControllerITest.java +++ b/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/DeceasedResponseControllerITest.java @@ -102,34 +102,36 @@ public void markJurorAsDeceased_BureauUser_paperResponseExists() { assertThat(response.getStatusCode()) .as("Expect the HTTP POST request to be OK") .isEqualTo(HttpStatus.OK); + executeInTransaction(() -> { + CourtLocation courtLocation = new CourtLocation(); + courtLocation.setLocCode("415"); + JurorPool jurorPool = JurorPoolUtils.getActiveJurorPool(jurorPoolRepository, jurorNumber, courtLocation); + Juror juror = jurorPool.getJuror(); - CourtLocation courtLocation = new CourtLocation(); - courtLocation.setLocCode("415"); - JurorPool jurorPool = JurorPoolUtils.getActiveJurorPool(jurorPoolRepository, jurorNumber, courtLocation); - Juror juror = jurorPool.getJuror(); + // verify the status of the juror record has been updated + assertThat(juror.isResponded()).isTrue(); + assertThat(juror.getExcusalDate()).isEqualTo(LocalDate.now()); // should be set to current date + assertThat(juror.getExcusalCode()).isEqualTo("D"); // deceased code + assertThat(jurorPool.getStatus().getStatus()).isEqualTo(5); // excused status + assertThat(jurorPool.getNextDate()).isNull(); // next date is null - // verify the status of the juror record has been updated - assertThat(juror.isResponded()).isTrue(); - assertThat(juror.getExcusalDate()).isEqualTo(LocalDate.now()); // should be set to current date - assertThat(juror.getExcusalCode()).isEqualTo("D"); // deceased code - assertThat(jurorPool.getStatus().getStatus()).isEqualTo(5); // excused status - assertThat(jurorPool.getNextDate()).isNull(); // next date is null + // verify the history record has been created + List jurorHistList = jurorHistoryRepository.findByJurorNumberAndDateCreatedGreaterThanEqual( + jurorNumber, LocalDate.now()); - // verify the history record has been created - List jurorHistList = jurorHistoryRepository.findByJurorNumberAndDateCreatedGreaterThanEqual( - jurorNumber, LocalDate.now()); + assertThat(jurorHistList).isNotNull(); - assertThat(jurorHistList).isNotNull(); + // verify the contact log has been created + List contactLog = contactLogRepository.findByJurorNumber(jurorNumber); - // verify the contact log has been created - List contactLog = contactLogRepository.findByJurorNumber(jurorNumber); + assertThat(contactLog).isNotEmpty(); + assertThat(contactLog.get(0).getNotes()).contains(PAPER_RESPONSE_EXISTS_TEXT); - assertThat(contactLog).isNotEmpty(); - assertThat(contactLog.get(0).getNotes()).contains(PAPER_RESPONSE_EXISTS_TEXT); - - // verify the paper response has been created - PaperResponse jurorPaperResponse = DataUtils.getJurorPaperResponse(jurorNumber, jurorPaperResponseRepository); - assertThat(jurorPaperResponse).isNotNull(); + // verify the paper response has been created + PaperResponse jurorPaperResponse = + DataUtils.getJurorPaperResponse(jurorNumber, jurorPaperResponseRepository); + assertThat(jurorPaperResponse).isNotNull(); + }); } @@ -150,31 +152,32 @@ public void markJurorAsDeceased_BureauUser_paperResponseDoesNotExists() { assertThat(response.getStatusCode()) .as("Expect the HTTP POST request to be OK") .isEqualTo(HttpStatus.OK); - - // verify the status of the juror record has been updated - - Juror juror = JurorPoolUtils.getActiveJurorRecord(jurorPoolRepository, jurorNumber); - CourtLocation courtLocation = new CourtLocation(); - courtLocation.setLocCode("415"); - JurorPool jurorPool = JurorPoolUtils.getActiveJurorPool(jurorPoolRepository, jurorNumber, courtLocation); - - assertThat(juror.isResponded()).isTrue(); - assertThat(juror.getExcusalDate()).isEqualTo(LocalDate.now()); // should be set to current date - assertThat(juror.getExcusalCode()).isEqualTo("D"); // deceased code - assertThat(jurorPool.getStatus().getStatus()).isEqualTo(5); // excused status - assertThat(jurorPool.getNextDate()).isNull(); // next date is null - - // verify the history record has been created - List jurorHistoryList = jurorHistoryRepository.findByJurorNumberAndDateCreatedGreaterThanEqual( - jurorNumber, LocalDate.now()); - assertThat(jurorHistoryList).isNotNull(); - - // verify the contact log has been created - List contactLog = contactLogRepository.findByJurorNumber(jurorNumber); - - assertThat(contactLog).isNotEmpty(); - assertThat(contactLog.get(0).getNotes()).doesNotContain(PAPER_RESPONSE_EXISTS_TEXT); - + executeInTransaction(() -> { + // verify the status of the juror record has been updated + + Juror juror = JurorPoolUtils.getActiveJurorRecord(jurorPoolRepository, jurorNumber); + CourtLocation courtLocation = new CourtLocation(); + courtLocation.setLocCode("415"); + JurorPool jurorPool = JurorPoolUtils.getActiveJurorPool(jurorPoolRepository, jurorNumber, courtLocation); + + assertThat(juror.isResponded()).isTrue(); + assertThat(juror.getExcusalDate()).isEqualTo(LocalDate.now()); // should be set to current date + assertThat(juror.getExcusalCode()).isEqualTo("D"); // deceased code + assertThat(jurorPool.getStatus().getStatus()).isEqualTo(5); // excused status + assertThat(jurorPool.getNextDate()).isNull(); // next date is null + + // verify the history record has been created + List jurorHistoryList = + jurorHistoryRepository.findByJurorNumberAndDateCreatedGreaterThanEqual( + jurorNumber, LocalDate.now()); + assertThat(jurorHistoryList).isNotNull(); + + // verify the contact log has been created + List contactLog = contactLogRepository.findByJurorNumber(jurorNumber); + + assertThat(contactLog).isNotEmpty(); + assertThat(contactLog.get(0).getNotes()).doesNotContain(PAPER_RESPONSE_EXISTS_TEXT); + }); } @Test diff --git a/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/DeferralMaintenanceControllerITest.java b/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/DeferralMaintenanceControllerITest.java index 0c0de9634..2de281136 100644 --- a/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/DeferralMaintenanceControllerITest.java +++ b/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/DeferralMaintenanceControllerITest.java @@ -844,25 +844,26 @@ void bureauProcessJurorActivePoolPaper() { ResponseEntity response = template.exchange(requestEntity, DeferralReasonRequestDto.class); assertThat(response.getStatusCode()).isEqualTo(HttpStatus.NO_CONTENT); - - // grab old record to verify the properties have been updated correctly updated - List jurorPools = jurorPoolRepository.findByJurorJurorNumberAndIsActive(JUROR_555555561, - false); - - assertThat(jurorPools.size()).isGreaterThan(0); - verifyActivePoolOldRecord(jurorPools.get(0)); - - // grab new record to verify it has been created and the properties have been updated correctly - Juror newJurorRecord = JurorPoolUtils.getActiveJurorRecord(jurorPoolRepository, JUROR_555555561); - - verifyActiveJurorNewRecord(newJurorRecord, - deferralReasonRequestDto.getPoolNumber(), deferralReasonRequestDto.getDeferralDate()); - assertThat(newJurorRecord.getOpticRef()) - .as(String.format("Expected optic ref to be %s", OPTIC_REF_12345678)).isEqualTo(OPTIC_REF_12345678); - - // check to make sure no record was created for the deferral maintenance table - Optional deferral = currentlyDeferredRepository.findById(JUROR_555555561); - assertThat(deferral.isPresent()).isFalse(); + executeInTransaction(() -> { + // grab old record to verify the properties have been updated correctly updated + List jurorPools = jurorPoolRepository.findByJurorJurorNumberAndIsActive(JUROR_555555561, + false); + + assertThat(jurorPools.size()).isGreaterThan(0); + verifyActivePoolOldRecord(jurorPools.get(0)); + + // grab new record to verify it has been created and the properties have been updated correctly + Juror newJurorRecord = JurorPoolUtils.getActiveJurorRecord(jurorPoolRepository, JUROR_555555561); + + verifyActiveJurorNewRecord(newJurorRecord, + deferralReasonRequestDto.getPoolNumber(), deferralReasonRequestDto.getDeferralDate()); + assertThat(newJurorRecord.getOpticRef()) + .as(String.format("Expected optic ref to be %s", OPTIC_REF_12345678)).isEqualTo(OPTIC_REF_12345678); + + // check to make sure no record was created for the deferral maintenance table + Optional deferral = currentlyDeferredRepository.findById(JUROR_555555561); + assertThat(deferral.isPresent()).isFalse(); + }); } @Test @@ -891,25 +892,26 @@ void courtProcessJurorActivePoolDigital() { ResponseEntity response = template.exchange(requestEntity, DeferralReasonRequestDto.class); assertThat(response.getStatusCode()).isEqualTo(HttpStatus.NO_CONTENT); - - // grab old record to verify the properties have been updated correctly - List jurorPools = jurorPoolRepository.findByJurorJurorNumberAndIsActive(JUROR_555555558, - false); - assertThat(jurorPools.size()).isGreaterThan(0); - verifyActivePoolOldRecord(jurorPools.get(0)); - - // grab new record to verify it has been created and the properties have been updated correctly - Juror newJurorRecord = JurorPoolUtils.getActiveJurorRecord(jurorPoolRepository, JUROR_555555558); - verifyActiveJurorNewRecord(newJurorRecord, - deferralReasonRequestDto.getPoolNumber(), deferralReasonRequestDto.getDeferralDate()); - - // check to make sure no record was created for the deferral maintenance table - Optional deferral = currentlyDeferredRepository.findById(JUROR_555555558); - assertThat(deferral.isPresent()).isFalse(); - - assertThat(newJurorRecord.getOpticRef()) - .as(String.format("Expected optic ref to be %s", OPTIC_REF_12345678)) - .isEqualTo(OPTIC_REF_12345678); + executeInTransaction(() -> { + // grab old record to verify the properties have been updated correctly + List jurorPools = jurorPoolRepository.findByJurorJurorNumberAndIsActive(JUROR_555555558, + false); + assertThat(jurorPools.size()).isGreaterThan(0); + verifyActivePoolOldRecord(jurorPools.get(0)); + + // grab new record to verify it has been created and the properties have been updated correctly + Juror newJurorRecord = JurorPoolUtils.getActiveJurorRecord(jurorPoolRepository, JUROR_555555558); + verifyActiveJurorNewRecord(newJurorRecord, + deferralReasonRequestDto.getPoolNumber(), deferralReasonRequestDto.getDeferralDate()); + + // check to make sure no record was created for the deferral maintenance table + Optional deferral = currentlyDeferredRepository.findById(JUROR_555555558); + assertThat(deferral.isPresent()).isFalse(); + + assertThat(newJurorRecord.getOpticRef()) + .as(String.format("Expected optic ref to be %s", OPTIC_REF_12345678)) + .isEqualTo(OPTIC_REF_12345678); + }); } @Test @@ -1076,22 +1078,24 @@ void courtUserChangeDateActivePool() { ResponseEntity response = template.exchange(requestEntity, DeferralReasonRequestDto.class); assertThat(response.getStatusCode()).isEqualTo(HttpStatus.NO_CONTENT); + executeInTransaction(() -> { + // grab old record to verify the properties have been updated correctly + List jurorPools = + jurorPoolRepository.findByJurorJurorNumberAndIsActive(JUROR_555555558, false); + assertThat(jurorPools.size()).isGreaterThan(0); - // grab old record to verify the properties have been updated correctly - List jurorPools = jurorPoolRepository.findByJurorJurorNumberAndIsActive(JUROR_555555558, false); - assertThat(jurorPools.size()).isGreaterThan(0); - - verifyActivePoolOldRecordChangeDate(jurorPools.get(0), deferralReasonRequestDto.getPoolNumber()); + verifyActivePoolOldRecordChangeDate(jurorPools.get(0), deferralReasonRequestDto.getPoolNumber()); - // grab new record to verify it has been created and the properties have been updated correctly - jurorPools = jurorPoolRepository.findByJurorJurorNumberAndIsActive(JUROR_555555558, true); + // grab new record to verify it has been created and the properties have been updated correctly + jurorPools = jurorPoolRepository.findByJurorJurorNumberAndIsActive(JUROR_555555558, true); - verifyActivePoolNewRecordChangeDate(jurorPools.get(0), - deferralReasonRequestDto.getPoolNumber(), deferralReasonRequestDto.getDeferralDate()); + verifyActivePoolNewRecordChangeDate(jurorPools.get(0), + deferralReasonRequestDto.getPoolNumber(), deferralReasonRequestDto.getDeferralDate()); - // check to make sure no record was created for the deferral maintenance table - Optional deferral = currentlyDeferredRepository.findById(JUROR_555555558); - assertThat(deferral.isPresent()).isFalse(); + // check to make sure no record was created for the deferral maintenance table + Optional deferral = currentlyDeferredRepository.findById(JUROR_555555558); + assertThat(deferral.isPresent()).isFalse(); + }); } private void verifyActivePoolOldRecordChangeDate(JurorPool jurorPool, String poolNumber) { @@ -1144,31 +1148,32 @@ void allocateJurorFromDeferralMaintenanceSingleJuror() { httpHeaders, POST, URI.create(URL)); ResponseEntity response = template.exchange(requestEntity, Void.class); assertThat(response.getStatusCode()).isEqualTo(HttpStatus.NO_CONTENT); + executeInTransaction(() -> { + // check to make sure the juror has been removed from maintenance + Optional deferral = currentlyDeferredRepository.findById(JUROR_555555557); + assertThat(deferral.isPresent()) + .as("Expected juror to be removed from deferral maintenance").isFalse(); - // check to make sure the juror has been removed from maintenance - Optional deferral = currentlyDeferredRepository.findById(JUROR_555555557); - assertThat(deferral.isPresent()) - .as("Expected juror to be removed from deferral maintenance").isFalse(); - - // add logic to check to see the content of the new pool member - List jurorPools = jurorPoolRepository.findByPoolPoolNumberAndWasDeferredAndIsActive( - POOL_415220503, true, true); + // add logic to check to see the content of the new pool member + List jurorPools = jurorPoolRepository.findByPoolPoolNumberAndWasDeferredAndIsActive( + POOL_415220503, true, true); - assertThat(jurorPools.size()).as("Expected size to be one for the new pool member record") - .isEqualTo(1); + assertThat(jurorPools.size()).as("Expected size to be one for the new pool member record") + .isEqualTo(1); - // check to make sure the new pool members record has been updated correctly - JurorPool jurorPool = jurorPools.get(0); - Juror juror = jurorPool.getJuror(); - assertThat(jurorPool.getStatus().getStatusDesc()).isEqualTo(RESPONDED); - assertThat(jurorPool.getDeferralDate()).isNull(); - assertThat(jurorPool.getIsActive()).isTrue(); - assertThat(juror.isResponded()).isTrue(); - assertThat(juror.getNoDefPos()).isEqualTo(1); - LocalDate expectedStartDate = LocalDate.now().plusWeeks(1); - assertThat(jurorPool.getNextDate()).isEqualTo(expectedStartDate); - assertThat(juror.getOpticRef()) - .as(String.format("Expected optic ref to be %s", OPTIC_REF_12345678)).isEqualTo(OPTIC_REF_12345678); + // check to make sure the new pool members record has been updated correctly + JurorPool jurorPool = jurorPools.get(0); + Juror juror = jurorPool.getJuror(); + assertThat(jurorPool.getStatus().getStatusDesc()).isEqualTo(RESPONDED); + assertThat(jurorPool.getDeferralDate()).isNull(); + assertThat(jurorPool.getIsActive()).isTrue(); + assertThat(juror.isResponded()).isTrue(); + assertThat(juror.getNoDefPos()).isEqualTo(1); + LocalDate expectedStartDate = LocalDate.now().plusWeeks(1); + assertThat(jurorPool.getNextDate()).isEqualTo(expectedStartDate); + assertThat(juror.getOpticRef()) + .as(String.format("Expected optic ref to be %s", OPTIC_REF_12345678)).isEqualTo(OPTIC_REF_12345678); + }); } @Test @@ -1185,31 +1190,32 @@ void allocateJurorFromDeferralMaintenanceMultipleJurors() { httpHeaders, POST, URI.create(URL)); ResponseEntity response = template.exchange(requestEntity, Void.class); assertThat(response.getStatusCode()).isEqualTo(HttpStatus.NO_CONTENT); - - // check to make sure the jurors has been removed from maintenance - for (String jurorNumber : jurorNumbers) { - Optional deferral = currentlyDeferredRepository.findById(jurorNumber); - assertThat(deferral.isPresent()) - .as("Expected juror to be removed from deferral maintenance").isFalse(); - } - - // add logic to check to see the content of the new pool member - List jurorPools = jurorPoolRepository.findByPoolPoolNumberAndWasDeferredAndIsActive( - POOL_415220503, true, true); - - assertThat(jurorPools.size()).as("Expected size to be three for the juror pool records").isEqualTo(3); - - // check to make sure the new pool members record has been updated correctly - for (JurorPool jurorPool : jurorPools) { - Juror juror = jurorPool.getJuror(); - assertThat(jurorPool.getStatus().getStatusDesc()).isEqualTo(RESPONDED); - assertThat(jurorPool.getDeferralDate()).isNull(); - assertThat(jurorPool.getIsActive()).isTrue(); - assertThat(juror.isResponded()).isTrue(); - assertThat(juror.getNoDefPos()).isEqualTo(1); - LocalDate expectedStartDate = LocalDate.now().plusWeeks(1); - assertThat(jurorPool.getNextDate()).isEqualTo(expectedStartDate); - } + executeInTransaction(() -> { + // check to make sure the jurors has been removed from maintenance + for (String jurorNumber : jurorNumbers) { + Optional deferral = currentlyDeferredRepository.findById(jurorNumber); + assertThat(deferral.isPresent()) + .as("Expected juror to be removed from deferral maintenance").isFalse(); + } + + // add logic to check to see the content of the new pool member + List jurorPools = jurorPoolRepository.findByPoolPoolNumberAndWasDeferredAndIsActive( + POOL_415220503, true, true); + + assertThat(jurorPools.size()).as("Expected size to be three for the juror pool records").isEqualTo(3); + + // check to make sure the new pool members record has been updated correctly + for (JurorPool jurorPool : jurorPools) { + Juror juror = jurorPool.getJuror(); + assertThat(jurorPool.getStatus().getStatusDesc()).isEqualTo(RESPONDED); + assertThat(jurorPool.getDeferralDate()).isNull(); + assertThat(jurorPool.getIsActive()).isTrue(); + assertThat(juror.isResponded()).isTrue(); + assertThat(juror.getNoDefPos()).isEqualTo(1); + LocalDate expectedStartDate = LocalDate.now().plusWeeks(1); + assertThat(jurorPool.getNextDate()).isEqualTo(expectedStartDate); + } + }); } @Test @@ -1340,19 +1346,20 @@ void deleteDeferredRecordHappyPath() { ResponseEntity response = template.exchange(requestEntity, Void.class); assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + executeInTransaction(() -> { + // check to make sure no record was deleted for the deferral maintenance table + Optional deferral = currentlyDeferredRepository.findById(JUROR_123456789); + assertThat(deferral.isPresent()).isFalse(); - // check to make sure no record was deleted for the deferral maintenance table - Optional deferral = currentlyDeferredRepository.findById(JUROR_123456789); - assertThat(deferral.isPresent()).isFalse(); + JurorPool jurorPool = jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumberAndIsActive( + JUROR_123456789, POOL_415220502, true).get(); + assertThat(jurorPool).isNotNull(); - JurorPool jurorPool = jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumberAndIsActive( - JUROR_123456789, POOL_415220502, true).get(); - assertThat(jurorPool).isNotNull(); - - Juror juror = jurorPool.getJuror(); + Juror juror = jurorPool.getJuror(); - assertThat(jurorPool.getStatus().getStatus()).isEqualTo(IJurorStatus.RESPONDED); - assertThat(juror.getNoDefPos()).isEqualTo(0); + assertThat(jurorPool.getStatus().getStatus()).isEqualTo(IJurorStatus.RESPONDED); + assertThat(juror.getNoDefPos()).isEqualTo(0); + }); } @Test @@ -1367,18 +1374,19 @@ void deleteDeferredRecordJurorNotFound() { ResponseEntity response = template.exchange(requestEntity, Void.class); assertThat(response.getStatusCode()).isEqualTo(NOT_FOUND); + executeInTransaction(() -> { + // check to make sure no record was not deleted for the deferral maintenance table + Optional deferral = currentlyDeferredRepository.findById("123456789"); + assertThat(deferral.isPresent()).isTrue(); - // check to make sure no record was not deleted for the deferral maintenance table - Optional deferral = currentlyDeferredRepository.findById("123456789"); - assertThat(deferral.isPresent()).isTrue(); + JurorPool jurorPool = jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumberAndIsActive( + "123456789", "415220502", true).get(); + assertThat(jurorPool).isNotNull(); - JurorPool jurorPool = jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumberAndIsActive( - "123456789", "415220502", true).get(); - assertThat(jurorPool).isNotNull(); - - Juror juror = jurorPool.getJuror(); - assertThat(jurorPool.getStatus().getStatus()).isEqualTo(IJurorStatus.DEFERRED); - assertThat(juror.getNoDefPos()).isEqualTo(1); + Juror juror = jurorPool.getJuror(); + assertThat(jurorPool.getStatus().getStatus()).isEqualTo(IJurorStatus.DEFERRED); + assertThat(juror.getNoDefPos()).isEqualTo(1); + }); } @Test @@ -1393,17 +1401,18 @@ void deleteDeferredRecordWrongAccess() { ResponseEntity response = template.exchange(requestEntity, Void.class); assertThat(response.getStatusCode()).isEqualTo(NOT_FOUND); - - // check to make sure no record was not deleted for the deferral maintenance table - Optional deferral = currentlyDeferredRepository.findById(JUROR_123456789); - assertThat(deferral.isPresent()).isTrue(); - - JurorPool jurorPool = jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumberAndIsActive( - JUROR_123456789, "415220502", true).get(); - assertThat(jurorPool).isNotNull(); - Juror juror = jurorPool.getJuror(); - assertThat(jurorPool.getStatus().getStatus()).isEqualTo(IJurorStatus.DEFERRED); - assertThat(juror.getNoDefPos()).isEqualTo(1); + executeInTransaction(() -> { + // check to make sure no record was not deleted for the deferral maintenance table + Optional deferral = currentlyDeferredRepository.findById(JUROR_123456789); + assertThat(deferral.isPresent()).isTrue(); + + JurorPool jurorPool = jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumberAndIsActive( + JUROR_123456789, "415220502", true).get(); + assertThat(jurorPool).isNotNull(); + Juror juror = jurorPool.getJuror(); + assertThat(jurorPool.getStatus().getStatus()).isEqualTo(IJurorStatus.DEFERRED); + assertThat(juror.getNoDefPos()).isEqualTo(1); + }); } } diff --git a/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/DisqualifyJurorDueToAgeControllerITest.java b/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/DisqualifyJurorDueToAgeControllerITest.java index 5f08d668d..990c9661a 100644 --- a/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/DisqualifyJurorDueToAgeControllerITest.java +++ b/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/DisqualifyJurorDueToAgeControllerITest.java @@ -105,30 +105,30 @@ public void disqualifyJurorDueToAge_PartialPaperResponsePresent_CourtUser() { @Test @Sql({"/db/mod/truncate.sql", "/db/summonsmanagement/DisqualifyJurorControllerTestData.sql"}) public void disqualifyJurorDueToAge_noResponse() { - - assertThat(!jurorDigitalResponseRepository.existsById(JUROR_NUMBER_NO_RESPONSE)); - assertThat(!jurorPaperResponseRepository.existsById(JUROR_NUMBER_NO_RESPONSE)); - - //Pool (juror) record - List jurorPools = - jurorPoolRepository.findByJurorJurorNumberAndIsActive(JUROR_NUMBER_NO_RESPONSE, true); - assertThat(jurorPools.size()).isGreaterThan(0); - - JurorPool jurorPoolRecord = jurorPools.get(0); - Juror juror = jurorPoolRecord.getJuror(); - assertThat(juror.isResponded()).isEqualTo(Boolean.FALSE); - assertThat(juror.getDisqualifyDate()).isNull(); - assertThat(juror.getDisqualifyCode()).isNull(); - assertThat(juror.getUserEdtq()).isEqualTo("BUREAU_USER_1"); - assertThat(jurorPoolRecord.getNextDate()).isNotNull(); - assertThat(jurorPoolRecord.getStatus().getStatus()).isEqualTo(IJurorStatus.SUMMONED); - - //History - LocalDate today = LocalDate.now(); - List jurorHistoryList = - jurorHistoryRepository.findByJurorNumberAndDateCreatedGreaterThanEqual(JUROR_NUMBER_NO_RESPONSE, today); - assertThat(jurorHistoryList).isEmpty(); - + executeInTransaction(() -> { + assertThat(!jurorDigitalResponseRepository.existsById(JUROR_NUMBER_NO_RESPONSE)); + assertThat(!jurorPaperResponseRepository.existsById(JUROR_NUMBER_NO_RESPONSE)); + + //Pool (juror) record + List jurorPools = + jurorPoolRepository.findByJurorJurorNumberAndIsActive(JUROR_NUMBER_NO_RESPONSE, true); + assertThat(jurorPools.size()).isGreaterThan(0); + + JurorPool jurorPoolRecord = jurorPools.get(0); + Juror juror = jurorPoolRecord.getJuror(); + assertThat(juror.isResponded()).isEqualTo(Boolean.FALSE); + assertThat(juror.getDisqualifyDate()).isNull(); + assertThat(juror.getDisqualifyCode()).isNull(); + assertThat(juror.getUserEdtq()).isEqualTo("BUREAU_USER_1"); + assertThat(jurorPoolRecord.getNextDate()).isNotNull(); + assertThat(jurorPoolRecord.getStatus().getStatus()).isEqualTo(IJurorStatus.SUMMONED); + + //History + LocalDate today = LocalDate.now(); + List jurorHistoryList = + jurorHistoryRepository.findByJurorNumberAndDateCreatedGreaterThanEqual(JUROR_NUMBER_NO_RESPONSE, today); + assertThat(jurorHistoryList).isEmpty(); + }); assertTemplateExchangeDisqualifyJuror(UserType.BUREAU, JUROR_NUMBER_NO_RESPONSE, BUREAU_USER, "400", HttpStatus.OK); @@ -147,124 +147,130 @@ public void disqualifyJurorForbiddenException() { private void assertDigitalDisqualifyJurorPreVerification(String jurorNumber) { - - //Juror digital response - DigitalResponse digitalResponse = getJurorDigitalResponse(jurorNumber, - jurorDigitalResponseRepository); - assertThat(digitalResponse).isNotNull(); - assertThat(digitalResponse.getProcessingStatus()).isEqualTo(ProcessingStatus.TODO); - - //Pool (juror) record - List jurorPools = - jurorPoolRepository.findByJurorJurorNumberAndIsActive(jurorNumber, true); - assertThat(jurorPools.size()).isGreaterThan(0); - - JurorPool jurorPoolRecord = jurorPools.get(0); - Juror juror = jurorPoolRecord.getJuror(); - assertThat(juror.isResponded()).isEqualTo(Boolean.FALSE); - assertThat(juror.getDisqualifyDate()).isNull(); - assertThat(juror.getDisqualifyCode()).isNull(); - assertThat(juror.getUserEdtq()).isEqualTo("BUREAU_USER_1"); - assertThat(jurorPoolRecord.getNextDate()).isNotNull(); - assertThat(jurorPoolRecord.getStatus().getStatus()).isEqualTo(RESPONDED); - - //History - LocalDate today = LocalDate.now(); - List jurorHistoryList = - jurorHistoryRepository.findByJurorNumberAndDateCreatedGreaterThanEqual(jurorNumber, today); - assertThat(jurorHistoryList).isEmpty(); + executeInTransaction(() -> { + //Juror digital response + DigitalResponse digitalResponse = getJurorDigitalResponse(jurorNumber, + jurorDigitalResponseRepository); + assertThat(digitalResponse).isNotNull(); + assertThat(digitalResponse.getProcessingStatus()).isEqualTo(ProcessingStatus.TODO); + + //Pool (juror) record + List jurorPools = + jurorPoolRepository.findByJurorJurorNumberAndIsActive(jurorNumber, true); + assertThat(jurorPools.size()).isGreaterThan(0); + + JurorPool jurorPoolRecord = jurorPools.get(0); + Juror juror = jurorPoolRecord.getJuror(); + assertThat(juror.isResponded()).isEqualTo(Boolean.FALSE); + assertThat(juror.getDisqualifyDate()).isNull(); + assertThat(juror.getDisqualifyCode()).isNull(); + assertThat(juror.getUserEdtq()).isEqualTo("BUREAU_USER_1"); + assertThat(jurorPoolRecord.getNextDate()).isNotNull(); + assertThat(jurorPoolRecord.getStatus().getStatus()).isEqualTo(RESPONDED); + + //History + LocalDate today = LocalDate.now(); + List jurorHistoryList = + jurorHistoryRepository.findByJurorNumberAndDateCreatedGreaterThanEqual(jurorNumber, today); + assertThat(jurorHistoryList).isEmpty(); + }); } private void assertDigitalDisqualifyJurorPostVerification(String jurorNumber) { - //Juror digital response - DigitalResponse digitalResponse = getJurorDigitalResponse(jurorNumber, - jurorDigitalResponseRepository); - assertThat(digitalResponse).isNotNull(); - assertThat(digitalResponse.getProcessingStatus()).isEqualTo(ProcessingStatus.CLOSED); - - //Pool (juror) record - List jurorPools = - jurorPoolRepository.findByJurorJurorNumberAndIsActive(jurorNumber, true); - - assertThat(jurorPools.size()).isGreaterThan(0); - - JurorPool jurorPoolRecord = jurorPools.get(0); - Juror juror = jurorPoolRecord.getJuror(); - assertThat(juror.isResponded()).isEqualTo(Boolean.TRUE); - assertThat(juror.getDisqualifyDate()).isNotNull(); - assertThat(juror.getDisqualifyCode()).isEqualTo("A"); - assertThat(jurorPoolRecord.getUserEdtq()).isEqualTo(BUREAU_USER); - assertThat(jurorPoolRecord.getNextDate()).isNull(); - assertThat(jurorPoolRecord.getStatus().getStatus()).isEqualTo(IJurorStatus.DISQUALIFIED); - - //History - LocalDate updatedToday = LocalDate.now(); - List updatedJurorHistoryList = - jurorHistoryRepository.findByJurorNumberAndDateCreatedGreaterThanEqual(jurorNumber, - updatedToday); - assertThat(updatedJurorHistoryList).isNotNull(); + executeInTransaction(() -> { + //Juror digital response + DigitalResponse digitalResponse = getJurorDigitalResponse(jurorNumber, + jurorDigitalResponseRepository); + assertThat(digitalResponse).isNotNull(); + assertThat(digitalResponse.getProcessingStatus()).isEqualTo(ProcessingStatus.CLOSED); + + //Pool (juror) record + List jurorPools = + jurorPoolRepository.findByJurorJurorNumberAndIsActive(jurorNumber, true); + + assertThat(jurorPools.size()).isGreaterThan(0); + + JurorPool jurorPoolRecord = jurorPools.get(0); + Juror juror = jurorPoolRecord.getJuror(); + assertThat(juror.isResponded()).isEqualTo(Boolean.TRUE); + assertThat(juror.getDisqualifyDate()).isNotNull(); + assertThat(juror.getDisqualifyCode()).isEqualTo("A"); + assertThat(jurorPoolRecord.getUserEdtq()).isEqualTo(BUREAU_USER); + assertThat(jurorPoolRecord.getNextDate()).isNull(); + assertThat(jurorPoolRecord.getStatus().getStatus()).isEqualTo(IJurorStatus.DISQUALIFIED); + + //History + LocalDate updatedToday = LocalDate.now(); + List updatedJurorHistoryList = + jurorHistoryRepository.findByJurorNumberAndDateCreatedGreaterThanEqual(jurorNumber, + updatedToday); + assertThat(updatedJurorHistoryList).isNotNull(); + }); } private void paperDisqualifyJurorPreVerification(String jurorNumber) { - - assertThat(!jurorDigitalResponseRepository.existsById(jurorNumber)); - - //Juror paper response - PaperResponse paperResponse = getJurorPaperResponse(jurorNumber, - jurorPaperResponseRepository); - assertThat(paperResponse).isNotNull(); - assertThat(paperResponse.getProcessingStatus()).isEqualTo(ProcessingStatus.TODO); - - //Pool (juror) record - List jurorPools = - jurorPoolRepository.findByJurorJurorNumberAndIsActive(jurorNumber, true); - assertThat(jurorPools.size()).isGreaterThan(0); - - JurorPool jurorPoolRecord = jurorPools.get(0); - Juror juror = jurorPoolRecord.getJuror(); - assertThat(juror.isResponded()).isEqualTo(Boolean.FALSE); - assertThat(juror.getDisqualifyDate()).isNull(); - assertThat(juror.getDisqualifyCode()).isNull(); - assertThat(juror.getUserEdtq()).isEqualTo("COURT_USER_1"); - assertThat(jurorPoolRecord.getNextDate()).isNotNull(); - assertThat(jurorPoolRecord.getStatus().getStatus()).isEqualTo(RESPONDED); - - //History - LocalDate today = LocalDate.now(); - List jurorHistoryList = - jurorHistoryRepository.findByJurorNumberAndDateCreatedGreaterThanEqual(jurorNumber, today); - assertThat(jurorHistoryList).isEmpty(); + executeInTransaction(() -> { + assertThat(!jurorDigitalResponseRepository.existsById(jurorNumber)); + + //Juror paper response + PaperResponse paperResponse = getJurorPaperResponse(jurorNumber, + jurorPaperResponseRepository); + assertThat(paperResponse).isNotNull(); + assertThat(paperResponse.getProcessingStatus()).isEqualTo(ProcessingStatus.TODO); + + //Pool (juror) record + List jurorPools = + jurorPoolRepository.findByJurorJurorNumberAndIsActive(jurorNumber, true); + assertThat(jurorPools.size()).isGreaterThan(0); + + JurorPool jurorPoolRecord = jurorPools.get(0); + Juror juror = jurorPoolRecord.getJuror(); + assertThat(juror.isResponded()).isEqualTo(Boolean.FALSE); + assertThat(juror.getDisqualifyDate()).isNull(); + assertThat(juror.getDisqualifyCode()).isNull(); + assertThat(juror.getUserEdtq()).isEqualTo("COURT_USER_1"); + assertThat(jurorPoolRecord.getNextDate()).isNotNull(); + assertThat(jurorPoolRecord.getStatus().getStatus()).isEqualTo(RESPONDED); + + //History + LocalDate today = LocalDate.now(); + List jurorHistoryList = + jurorHistoryRepository.findByJurorNumberAndDateCreatedGreaterThanEqual(jurorNumber, today); + assertThat(jurorHistoryList).isEmpty(); + }); } private void assertPaperDisqualifyJurorPostVerification(String user, String jurorNumber) { - //Juror paper response - PaperResponse paperResponse = getJurorPaperResponse(jurorNumber, - jurorPaperResponseRepository); - assertThat(paperResponse).isNotNull(); - assertThat(paperResponse.getProcessingStatus()).isEqualTo(ProcessingStatus.CLOSED); - - //Pool (juror) record - List jurorPools = - jurorPoolRepository.findByJurorJurorNumberAndIsActive(jurorNumber, true); - - assertThat(jurorPools.size()).isGreaterThan(0); - - JurorPool jurorPoolRecord = jurorPools.get(0); - Juror juror = jurorPoolRecord.getJuror(); - assertThat(juror.isResponded()).isEqualTo(Boolean.TRUE); - assertThat(juror.getDisqualifyDate()).isNotNull(); - assertThat(juror.getDisqualifyCode()).isEqualTo("A"); - assertThat(jurorPoolRecord.getUserEdtq()).isEqualTo(user); - assertThat(jurorPoolRecord.getNextDate()).isNull(); - assertThat(jurorPoolRecord.getStatus().getStatus()).isEqualTo(IJurorStatus.DISQUALIFIED); - - //History - LocalDate updatedToday = LocalDate.now(); - List updatedJurorHistoryList = - jurorHistoryRepository.findByJurorNumberAndDateCreatedGreaterThanEqual(jurorNumber, - updatedToday); - assertThat(updatedJurorHistoryList).isNotNull(); + executeInTransaction(() -> { + //Juror paper response + PaperResponse paperResponse = getJurorPaperResponse(jurorNumber, + jurorPaperResponseRepository); + assertThat(paperResponse).isNotNull(); + assertThat(paperResponse.getProcessingStatus()).isEqualTo(ProcessingStatus.CLOSED); + + //Pool (juror) record + List jurorPools = + jurorPoolRepository.findByJurorJurorNumberAndIsActive(jurorNumber, true); + + assertThat(jurorPools.size()).isGreaterThan(0); + + JurorPool jurorPoolRecord = jurorPools.get(0); + Juror juror = jurorPoolRecord.getJuror(); + assertThat(juror.isResponded()).isEqualTo(Boolean.TRUE); + assertThat(juror.getDisqualifyDate()).isNotNull(); + assertThat(juror.getDisqualifyCode()).isEqualTo("A"); + assertThat(jurorPoolRecord.getUserEdtq()).isEqualTo(user); + assertThat(jurorPoolRecord.getNextDate()).isNull(); + assertThat(jurorPoolRecord.getStatus().getStatus()).isEqualTo(IJurorStatus.DISQUALIFIED); + + //History + LocalDate updatedToday = LocalDate.now(); + List updatedJurorHistoryList = + jurorHistoryRepository.findByJurorNumberAndDateCreatedGreaterThanEqual(jurorNumber, + updatedToday); + assertThat(updatedJurorHistoryList).isNotNull(); + }); } @@ -275,7 +281,7 @@ private void assertTemplateExchangeDisqualifyJuror(UserType userType, HttpStatus httpStatus) { final URI uri = URI.create(String.format(URI_DISQUALIFY_JUROR, jurorNumber)); HttpHeaders httpHeaders = - initialiseHeaders(username,userType,Set.of(Role.MANAGER),owner); + initialiseHeaders(username, userType, Set.of(Role.MANAGER), owner); RequestEntity requestEntity = new RequestEntity<>(httpHeaders, HttpMethod.PATCH, uri); diff --git a/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/DisqualifyJurorITest.java b/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/DisqualifyJurorITest.java index 458c67119..f4c70dae9 100644 --- a/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/DisqualifyJurorITest.java +++ b/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/DisqualifyJurorITest.java @@ -167,122 +167,130 @@ public void disqualifyJurorForbiddenException() { } private void assertDigitalDisqualifyJurorPostVerification() { - //Juror digital response - DigitalResponse digitalResponse = getJurorDigitalResponse(JUROR_NUMBER_123456789, - jurorDigitalResponseRepository); - assertThat(digitalResponse).isNotNull(); - assertThat(digitalResponse.getProcessingStatus()).isEqualTo(ProcessingStatus.CLOSED); - - //Pool (juror) record - List jurorPools = - jurorPoolRepository.findByJurorJurorNumberAndIsActive(JUROR_NUMBER_123456789, true); - - assertThat(jurorPools.size()).isGreaterThan(0); - - JurorPool jurorPoolRecord = jurorPools.get(0); - Juror juror = jurorPoolRecord.getJuror(); - assertThat(juror.isResponded()).isEqualTo(Boolean.TRUE); - assertThat(juror.getDisqualifyDate()).isNotNull(); - assertThat(juror.getDisqualifyCode()).isEqualTo("M"); - assertThat(jurorPoolRecord.getUserEdtq()).isEqualTo(BUREAU_USER); - assertThat(jurorPoolRecord.getNextDate()).isNull(); - assertThat(jurorPoolRecord.getStatus().getStatus()).isEqualTo(IJurorStatus.DISQUALIFIED); - - //History - LocalDate updatedToday = LocalDate.now(); - List updatedJurorHistoryList = - jurorHistoryRepository.findByJurorNumberAndDateCreatedGreaterThanEqual(JUROR_NUMBER_123456789, - updatedToday); - assertThat(updatedJurorHistoryList).isNotNull(); + executeInTransaction(() -> { + //Juror digital response + DigitalResponse digitalResponse = getJurorDigitalResponse(JUROR_NUMBER_123456789, + jurorDigitalResponseRepository); + assertThat(digitalResponse).isNotNull(); + assertThat(digitalResponse.getProcessingStatus()).isEqualTo(ProcessingStatus.CLOSED); + + //Pool (juror) record + List jurorPools = + jurorPoolRepository.findByJurorJurorNumberAndIsActive(JUROR_NUMBER_123456789, true); + + assertThat(jurorPools.size()).isGreaterThan(0); + + JurorPool jurorPoolRecord = jurorPools.get(0); + Juror juror = jurorPoolRecord.getJuror(); + assertThat(juror.isResponded()).isEqualTo(Boolean.TRUE); + assertThat(juror.getDisqualifyDate()).isNotNull(); + assertThat(juror.getDisqualifyCode()).isEqualTo("M"); + assertThat(jurorPoolRecord.getUserEdtq()).isEqualTo(BUREAU_USER); + assertThat(jurorPoolRecord.getNextDate()).isNull(); + assertThat(jurorPoolRecord.getStatus().getStatus()).isEqualTo(IJurorStatus.DISQUALIFIED); + + //History + LocalDate updatedToday = LocalDate.now(); + List updatedJurorHistoryList = + jurorHistoryRepository.findByJurorNumberAndDateCreatedGreaterThanEqual(JUROR_NUMBER_123456789, + updatedToday); + assertThat(updatedJurorHistoryList).isNotNull(); + }); } private void assertPaperDisqualifyJurorPostVerification() { - //Juror paper response - PaperResponse paperResponse = getJurorPaperResponse(JUROR_NUMBER_987654321, - jurorPaperResponseRepository); - assertThat(paperResponse).isNotNull(); - assertThat(paperResponse.getProcessingStatus()).isEqualTo(ProcessingStatus.CLOSED); - - //Pool (juror) record - List jurorPools = - jurorPoolRepository.findByJurorJurorNumberAndIsActive(JUROR_NUMBER_987654321, true); - - assertThat(jurorPools.size()).isGreaterThan(0); - - JurorPool jurorPoolRecord = jurorPools.get(0); - Juror juror = jurorPoolRecord.getJuror(); - - assertThat(juror.isResponded()).isEqualTo(Boolean.TRUE); - assertThat(juror.getDisqualifyDate()).isNotNull(); - assertThat(juror.getDisqualifyCode()).isEqualTo("C"); - assertThat(jurorPoolRecord.getUserEdtq()).isEqualTo(COURT_USER); - assertThat(jurorPoolRecord.getNextDate()).isNull(); - assertThat(jurorPoolRecord.getStatus().getStatus()).isEqualTo(IJurorStatus.DISQUALIFIED); - - //History - LocalDate updatedToday = LocalDate.now(); - List updatedJurorHistoryList = - jurorHistoryRepository.findByJurorNumberAndDateCreatedGreaterThanEqual(JUROR_NUMBER_987654321, - updatedToday); - assertThat(updatedJurorHistoryList).isNotNull(); + executeInTransaction(() -> { + //Juror paper response + PaperResponse paperResponse = getJurorPaperResponse(JUROR_NUMBER_987654321, + jurorPaperResponseRepository); + assertThat(paperResponse).isNotNull(); + assertThat(paperResponse.getProcessingStatus()).isEqualTo(ProcessingStatus.CLOSED); + + //Pool (juror) record + List jurorPools = + jurorPoolRepository.findByJurorJurorNumberAndIsActive(JUROR_NUMBER_987654321, true); + + assertThat(jurorPools.size()).isGreaterThan(0); + + JurorPool jurorPoolRecord = jurorPools.get(0); + Juror juror = jurorPoolRecord.getJuror(); + + assertThat(juror.isResponded()).isEqualTo(Boolean.TRUE); + assertThat(juror.getDisqualifyDate()).isNotNull(); + assertThat(juror.getDisqualifyCode()).isEqualTo("C"); + assertThat(jurorPoolRecord.getUserEdtq()).isEqualTo(COURT_USER); + assertThat(jurorPoolRecord.getNextDate()).isNull(); + assertThat(jurorPoolRecord.getStatus().getStatus()).isEqualTo(IJurorStatus.DISQUALIFIED); + + //History + LocalDate updatedToday = LocalDate.now(); + List updatedJurorHistoryList = + jurorHistoryRepository.findByJurorNumberAndDateCreatedGreaterThanEqual(JUROR_NUMBER_987654321, + updatedToday); + assertThat(updatedJurorHistoryList).isNotNull(); + }); } private void digitalDisqualifyJurorPreVerification() { - //Juror digital response - DigitalResponse digitalResponse = getJurorDigitalResponse(JUROR_NUMBER_123456789, - jurorDigitalResponseRepository); - assertThat(digitalResponse).isNotNull(); - assertThat(digitalResponse.getProcessingStatus()).isEqualTo(ProcessingStatus.TODO); - - //Pool (juror) record - List jurorPools = - jurorPoolRepository.findByJurorJurorNumberAndIsActive(JUROR_NUMBER_123456789, true); - assertThat(jurorPools.size()).isGreaterThan(0); - - JurorPool jurorPoolRecord = jurorPools.get(0); - Juror juror = jurorPoolRecord.getJuror(); - - assertThat(juror.isResponded()).isEqualTo(Boolean.FALSE); - assertThat(juror.getDisqualifyDate()).isNull(); - assertThat(juror.getDisqualifyCode()).isNull(); - assertThat(juror.getUserEdtq()).isEqualTo("BUREAU_USER_1"); - assertThat(jurorPoolRecord.getNextDate()).isNotNull(); - assertThat(jurorPoolRecord.getStatus().getStatus()).isEqualTo(IJurorStatus.RESPONDED); - - //History - LocalDate today = LocalDate.now(); - List jurorHistoryList = - jurorHistoryRepository.findByJurorNumberAndDateCreatedGreaterThanEqual(JUROR_NUMBER_123456789, today); - assertThat(jurorHistoryList).isEmpty(); + executeInTransaction(() -> { + //Juror digital response + DigitalResponse digitalResponse = getJurorDigitalResponse(JUROR_NUMBER_123456789, + jurorDigitalResponseRepository); + assertThat(digitalResponse).isNotNull(); + assertThat(digitalResponse.getProcessingStatus()).isEqualTo(ProcessingStatus.TODO); + + //Pool (juror) record + List jurorPools = + jurorPoolRepository.findByJurorJurorNumberAndIsActive(JUROR_NUMBER_123456789, true); + assertThat(jurorPools.size()).isGreaterThan(0); + + JurorPool jurorPoolRecord = jurorPools.get(0); + Juror juror = jurorPoolRecord.getJuror(); + + assertThat(juror.isResponded()).isEqualTo(Boolean.FALSE); + assertThat(juror.getDisqualifyDate()).isNull(); + assertThat(juror.getDisqualifyCode()).isNull(); + assertThat(juror.getUserEdtq()).isEqualTo("BUREAU_USER_1"); + assertThat(jurorPoolRecord.getNextDate()).isNotNull(); + assertThat(jurorPoolRecord.getStatus().getStatus()).isEqualTo(IJurorStatus.RESPONDED); + + //History + LocalDate today = LocalDate.now(); + List jurorHistoryList = + jurorHistoryRepository.findByJurorNumberAndDateCreatedGreaterThanEqual(JUROR_NUMBER_123456789, today); + assertThat(jurorHistoryList).isEmpty(); + }); } private void paperDisqualifyJurorPreVerification() { - //Juror paper response - PaperResponse paperResponse = getJurorPaperResponse(JUROR_NUMBER_987654321, - jurorPaperResponseRepository); - assertThat(paperResponse).isNotNull(); - assertThat(paperResponse.getProcessingStatus()).isEqualTo(ProcessingStatus.TODO); - - //Pool (juror) record - List jurorPools = - jurorPoolRepository.findByJurorJurorNumberAndIsActive(JUROR_NUMBER_987654321, true); - assertThat(jurorPools.size()).isGreaterThan(0); - - JurorPool jurorPoolRecord = jurorPools.get(0); - Juror juror = jurorPoolRecord.getJuror(); - - assertThat(juror.isResponded()).isEqualTo(Boolean.FALSE); - assertThat(juror.getDisqualifyDate()).isNull(); - assertThat(juror.getDisqualifyCode()).isNull(); - assertThat(juror.getUserEdtq()).isEqualTo("COURT_USER_1"); - assertThat(jurorPoolRecord.getNextDate()).isNotNull(); - assertThat(jurorPoolRecord.getStatus().getStatus()).isEqualTo(IJurorStatus.RESPONDED); - - //History - LocalDate today = LocalDate.now(); - List jurorHistoryList = - jurorHistoryRepository.findByJurorNumberAndDateCreatedGreaterThanEqual(JUROR_NUMBER_987654321, today); - assertThat(jurorHistoryList).isEmpty(); + executeInTransaction(() -> { + //Juror paper response + PaperResponse paperResponse = getJurorPaperResponse(JUROR_NUMBER_987654321, + jurorPaperResponseRepository); + assertThat(paperResponse).isNotNull(); + assertThat(paperResponse.getProcessingStatus()).isEqualTo(ProcessingStatus.TODO); + + //Pool (juror) record + List jurorPools = + jurorPoolRepository.findByJurorJurorNumberAndIsActive(JUROR_NUMBER_987654321, true); + assertThat(jurorPools.size()).isGreaterThan(0); + + JurorPool jurorPoolRecord = jurorPools.get(0); + Juror juror = jurorPoolRecord.getJuror(); + + assertThat(juror.isResponded()).isEqualTo(Boolean.FALSE); + assertThat(juror.getDisqualifyDate()).isNull(); + assertThat(juror.getDisqualifyCode()).isNull(); + assertThat(juror.getUserEdtq()).isEqualTo("COURT_USER_1"); + assertThat(jurorPoolRecord.getNextDate()).isNotNull(); + assertThat(jurorPoolRecord.getStatus().getStatus()).isEqualTo(IJurorStatus.RESPONDED); + + //History + LocalDate today = LocalDate.now(); + List jurorHistoryList = + jurorHistoryRepository.findByJurorNumberAndDateCreatedGreaterThanEqual(JUROR_NUMBER_987654321, today); + assertThat(jurorHistoryList).isEmpty(); + }); } private void assertTemplateExchangeDisqualifyJuror( diff --git a/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/ExcusalResponseControllerITest.java b/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/ExcusalResponseControllerITest.java index 84dc3dd8e..d434dbcd8 100644 --- a/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/ExcusalResponseControllerITest.java +++ b/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/ExcusalResponseControllerITest.java @@ -91,7 +91,7 @@ public void setUp() throws Exception { } @Test - @Sql({"/db/mod/truncate.sql","/db/ExcusalResponse_initPaperResponse.sql"}) + @Sql({"/db/mod/truncate.sql", "/db/ExcusalResponse_initPaperResponse.sql"}) public void refuseExcusalRequest_paperResponse_bureauUser_bureauOwner() throws Exception { final String jurorNumber = "123456789"; final String login = "BUREAU_USER"; @@ -106,17 +106,18 @@ public void refuseExcusalRequest_paperResponse_bureauUser_bureauOwner() throws E HttpMethod.PUT, uri); ResponseEntity response = template.exchange(requestEntity, String.class); assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + executeInTransaction(() -> { + PaperResponse jurorPaperResponse = jurorPaperResponseRepository.findByJurorNumber(jurorNumber); + validatePaperResponseExcusal(jurorPaperResponse, login); - PaperResponse jurorPaperResponse = jurorPaperResponseRepository.findByJurorNumber(jurorNumber); - validatePaperResponseExcusal(jurorPaperResponse, login); - - JurorPool jurorPool = JurorPoolUtils.getSingleActiveJurorPool(jurorPoolRepository, jurorNumber); - validateRefuseExcusal(jurorPool, excusalDecisionDto, login); - validateExcusalDeniedLetter(); + JurorPool jurorPool = JurorPoolUtils.getSingleActiveJurorPool(jurorPoolRepository, jurorNumber); + validateRefuseExcusal(jurorPool, excusalDecisionDto, login); + validateExcusalDeniedLetter(); + }); } @Test - @Sql({"/db/mod/truncate.sql","/db/ExcusalResponse_initPaperResponse.sql"}) + @Sql({"/db/mod/truncate.sql", "/db/ExcusalResponse_initPaperResponse.sql"}) public void refuseExcusalRequest_paperResponse_courtUser_courtOwner() throws Exception { final String jurorNumber = "987654321"; final String login = "COURT_USER"; @@ -131,31 +132,32 @@ public void refuseExcusalRequest_paperResponse_courtUser_courtOwner() throws Exc HttpMethod.PUT, uri); ResponseEntity response = template.exchange(requestEntity, String.class); assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); - - PaperResponse jurorPaperResponse = - jurorPaperResponseRepository.findByJurorNumber(jurorNumber); - validatePaperResponseExcusal(jurorPaperResponse, login); - - JurorPool jurorPool = JurorPoolUtils.getSingleActiveJurorPool(jurorPoolRepository, jurorNumber); - validateRefuseExcusal(jurorPool, excusalDecisionDto, login); - - Iterable bulkPrintDataIterable = bulkPrintDataRepository.findAll(); - List bulkPrintData = new ArrayList<>(); - bulkPrintDataIterable.forEach((data) -> { - if (data.getFormAttribute().getFormType().equals(FormCode.BI_EXCUSALDENIED.getCode()) - || data.getFormAttribute().getFormType().equals(FormCode.ENG_EXCUSALDENIED.getCode())) { - bulkPrintData.add(data); - } + executeInTransaction(() -> { + PaperResponse jurorPaperResponse = + jurorPaperResponseRepository.findByJurorNumber(jurorNumber); + validatePaperResponseExcusal(jurorPaperResponse, login); + + JurorPool jurorPool = JurorPoolUtils.getSingleActiveJurorPool(jurorPoolRepository, jurorNumber); + validateRefuseExcusal(jurorPool, excusalDecisionDto, login); + + Iterable bulkPrintDataIterable = bulkPrintDataRepository.findAll(); + List bulkPrintData = new ArrayList<>(); + bulkPrintDataIterable.forEach((data) -> { + if (data.getFormAttribute().getFormType().equals(FormCode.BI_EXCUSALDENIED.getCode()) + || data.getFormAttribute().getFormType().equals(FormCode.ENG_EXCUSALDENIED.getCode())) { + bulkPrintData.add(data); + } + }); + + // there should be zero letters as this is a court journey + assertThat(bulkPrintData.size()) + .as("Expect zero letters to be queued in the bulk print table") + .isEqualTo(0); }); - - // there should be zero letters as this is a court journey - assertThat(bulkPrintData.size()) - .as("Expect zero letters to be queued in the bulk print table") - .isEqualTo(0); } @Test - @Sql({"/db/mod/truncate.sql","/db/ExcusalResponse_initPaperResponse.sql"}) + @Sql({"/db/mod/truncate.sql", "/db/ExcusalResponse_initPaperResponse.sql"}) public void grantExcusalRequest_paperResponse_bureauUser_bureauOwner() throws Exception { final String jurorNumber = "123456789"; final String login = "BUREAU_USER"; @@ -171,19 +173,20 @@ public void grantExcusalRequest_paperResponse_bureauUser_bureauOwner() throws Ex HttpMethod.PUT, uri); ResponseEntity response = template.exchange(requestEntity, String.class); assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + executeInTransaction(() -> { + PaperResponse jurorPaperResponse = + jurorPaperResponseRepository.findByJurorNumber(jurorNumber); + validatePaperResponseExcusal(jurorPaperResponse, login); - PaperResponse jurorPaperResponse = - jurorPaperResponseRepository.findByJurorNumber(jurorNumber); - validatePaperResponseExcusal(jurorPaperResponse, login); - - JurorPool jurorPool = JurorPoolUtils.getSingleActiveJurorPool(jurorPoolRepository, jurorNumber); - validateExcusal(jurorPool, excusalDecisionDto, login); + JurorPool jurorPool = JurorPoolUtils.getSingleActiveJurorPool(jurorPoolRepository, jurorNumber); + validateExcusal(jurorPool, excusalDecisionDto, login); - validateExcusalLetter(excusalDecisionDto.getExcusalReasonCode()); + validateExcusalLetter(excusalDecisionDto.getExcusalReasonCode()); + }); } @Test - @Sql({"/db/mod/truncate.sql","/db/ExcusalResponse_initPaperResponse.sql"}) + @Sql({"/db/mod/truncate.sql", "/db/ExcusalResponse_initPaperResponse.sql"}) public void grantExcusalRequest_paperResponse_courtUser_courtOwner() throws Exception { final String jurorNumber = "987654321"; final String login = "COURT_USER"; @@ -199,17 +202,18 @@ public void grantExcusalRequest_paperResponse_courtUser_courtOwner() throws Exce HttpMethod.PUT, uri); ResponseEntity response = template.exchange(requestEntity, String.class); assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + executeInTransaction(() -> { + PaperResponse jurorPaperResponse = + jurorPaperResponseRepository.findByJurorNumber(jurorNumber); + validatePaperResponseExcusal(jurorPaperResponse, login); - PaperResponse jurorPaperResponse = - jurorPaperResponseRepository.findByJurorNumber(jurorNumber); - validatePaperResponseExcusal(jurorPaperResponse, login); - - JurorPool jurorPool = JurorPoolUtils.getSingleActiveJurorPool(jurorPoolRepository, jurorNumber); - validateExcusal(jurorPool, excusalDecisionDto, login); + JurorPool jurorPool = JurorPoolUtils.getSingleActiveJurorPool(jurorPoolRepository, jurorNumber); + validateExcusal(jurorPool, excusalDecisionDto, login); + }); } @Test - @Sql({"/db/mod/truncate.sql","/db/ExcusalResponse_initDigitalResponse.sql"}) + @Sql({"/db/mod/truncate.sql", "/db/ExcusalResponse_initDigitalResponse.sql"}) public void refuseExcusalRequest_digitalResponse_bureauUser_bureauOwner() throws Exception { final String jurorNumber = "111222333"; final String login = "BUREAU_USER"; @@ -225,17 +229,18 @@ public void refuseExcusalRequest_digitalResponse_bureauUser_bureauOwner() throws HttpMethod.PUT, uri); ResponseEntity response = template.exchange(requestEntity, String.class); assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + executeInTransaction(() -> { + DigitalResponse jurorResponse = jurorResponseRepository.findByJurorNumber(jurorNumber); + validateDigitalResponseExcusal(jurorResponse, login); - DigitalResponse jurorResponse = jurorResponseRepository.findByJurorNumber(jurorNumber); - validateDigitalResponseExcusal(jurorResponse, login); - - JurorPool jurorPool = JurorPoolUtils.getSingleActiveJurorPool(jurorPoolRepository, jurorNumber); - validateRefuseExcusal(jurorPool, excusalDecisionDto, login); - validateExcusalDeniedLetter(); + JurorPool jurorPool = JurorPoolUtils.getSingleActiveJurorPool(jurorPoolRepository, jurorNumber); + validateRefuseExcusal(jurorPool, excusalDecisionDto, login); + validateExcusalDeniedLetter(); + }); } @Test - @Sql({"/db/mod/truncate.sql","/db/ExcusalResponse_initDigitalResponse.sql"}) + @Sql({"/db/mod/truncate.sql", "/db/ExcusalResponse_initDigitalResponse.sql"}) public void refuseExcusalRequest_digitalResponse_courtUser_courtOwner() throws Exception { final String jurorNumber = "333222111"; final String login = "COURT_USER"; @@ -251,25 +256,26 @@ public void refuseExcusalRequest_digitalResponse_courtUser_courtOwner() throws E HttpMethod.PUT, uri); ResponseEntity response = template.exchange(requestEntity, String.class); assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); - - DigitalResponse jurorResponse = jurorResponseRepository.findByJurorNumber(jurorNumber); - validateDigitalResponseExcusal(jurorResponse, login); - - JurorPool jurorPool = JurorPoolUtils.getSingleActiveJurorPool(jurorPoolRepository, jurorNumber); - validateRefuseExcusal(jurorPool, excusalDecisionDto, login); - Iterable bulkPrintDataIterable = bulkPrintDataRepository.findAll(); - List bulkPrintData = new ArrayList<>(); - bulkPrintDataIterable.forEach((data) -> { - if (data.getFormAttribute().getFormType().equals(FormCode.BI_EXCUSALDENIED.getCode()) - || data.getFormAttribute().getFormType().equals(FormCode.ENG_EXCUSALDENIED.getCode())) { - bulkPrintData.add(data); - } + executeInTransaction(() -> { + DigitalResponse jurorResponse = jurorResponseRepository.findByJurorNumber(jurorNumber); + validateDigitalResponseExcusal(jurorResponse, login); + + JurorPool jurorPool = JurorPoolUtils.getSingleActiveJurorPool(jurorPoolRepository, jurorNumber); + validateRefuseExcusal(jurorPool, excusalDecisionDto, login); + Iterable bulkPrintDataIterable = bulkPrintDataRepository.findAll(); + List bulkPrintData = new ArrayList<>(); + bulkPrintDataIterable.forEach((data) -> { + if (data.getFormAttribute().getFormType().equals(FormCode.BI_EXCUSALDENIED.getCode()) + || data.getFormAttribute().getFormType().equals(FormCode.ENG_EXCUSALDENIED.getCode())) { + bulkPrintData.add(data); + } + }); + + // there should be zero letters as this is a court journey + assertThat(bulkPrintData.size()) + .as("Expect zero letters to be queued in the bulk print table") + .isEqualTo(0); }); - - // there should be zero letters as this is a court journey - assertThat(bulkPrintData.size()) - .as("Expect zero letters to be queued in the bulk print table") - .isEqualTo(0); } @Test @@ -290,17 +296,18 @@ public void grantExcusalRequest_digitalResponse_bureauUser_bureauOwner() throws HttpMethod.PUT, uri); ResponseEntity response = template.exchange(requestEntity, String.class); assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + executeInTransaction(() -> { + DigitalResponse jurorResponse = jurorResponseRepository.findByJurorNumber(jurorNumber); + validateDigitalResponseExcusal(jurorResponse, login); - DigitalResponse jurorResponse = jurorResponseRepository.findByJurorNumber(jurorNumber); - validateDigitalResponseExcusal(jurorResponse, login); - - JurorPool jurorPool = JurorPoolUtils.getSingleActiveJurorPool(jurorPoolRepository, jurorNumber); - validateExcusal(jurorPool, excusalDecisionDto, login); - validateExcusalLetter(excusalDecisionDto.getExcusalReasonCode()); + JurorPool jurorPool = JurorPoolUtils.getSingleActiveJurorPool(jurorPoolRepository, jurorNumber); + validateExcusal(jurorPool, excusalDecisionDto, login); + validateExcusalLetter(excusalDecisionDto.getExcusalReasonCode()); + }); } @Test - @Sql({"/db/mod/truncate.sql","/db/ExcusalResponse_initDigitalResponse.sql"}) + @Sql({"/db/mod/truncate.sql", "/db/ExcusalResponse_initDigitalResponse.sql"}) public void grantExcusalRequest_digitalResponse_courtUser_courtOwner() throws Exception { final String jurorNumber = "333222111"; final String login = "COURT_USER"; @@ -317,16 +324,17 @@ public void grantExcusalRequest_digitalResponse_courtUser_courtOwner() throws Ex HttpMethod.PUT, uri); ResponseEntity response = template.exchange(requestEntity, String.class); assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + executeInTransaction(() -> { + DigitalResponse jurorResponse = jurorResponseRepository.findByJurorNumber(jurorNumber); + validateDigitalResponseExcusal(jurorResponse, login); - DigitalResponse jurorResponse = jurorResponseRepository.findByJurorNumber(jurorNumber); - validateDigitalResponseExcusal(jurorResponse, login); - - JurorPool jurorPool = JurorPoolUtils.getSingleActiveJurorPool(jurorPoolRepository, jurorNumber); - validateExcusal(jurorPool, excusalDecisionDto, login); + JurorPool jurorPool = JurorPoolUtils.getSingleActiveJurorPool(jurorPoolRepository, jurorNumber); + validateExcusal(jurorPool, excusalDecisionDto, login); + }); } @Test - @Sql({"/db/mod/truncate.sql","/db/ExcusalResponse_initPaperResponse.sql"}) + @Sql({"/db/mod/truncate.sql", "/db/ExcusalResponse_initPaperResponse.sql"}) public void grantExcusalRequest_excusalCodeDeceased() throws Exception { final String jurorNumber = "123456789"; final String login = "BUREAU_USER"; @@ -343,17 +351,18 @@ public void grantExcusalRequest_excusalCodeDeceased() throws Exception { HttpMethod.PUT, uri); ResponseEntity response = template.exchange(requestEntity, String.class); assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + executeInTransaction(() -> { + PaperResponse jurorPaperResponse = jurorPaperResponseRepository.findByJurorNumber(jurorNumber); + validatePaperResponseExcusal(jurorPaperResponse, login); - PaperResponse jurorPaperResponse = jurorPaperResponseRepository.findByJurorNumber(jurorNumber); - validatePaperResponseExcusal(jurorPaperResponse, login); - - JurorPool jurorPool = JurorPoolUtils.getSingleActiveJurorPool(jurorPoolRepository, jurorNumber); - validateExcusal(jurorPool, excusalDecisionDto, login); - validateExcusalLetter(excusalDecisionDto.getExcusalReasonCode()); + JurorPool jurorPool = JurorPoolUtils.getSingleActiveJurorPool(jurorPoolRepository, jurorNumber); + validateExcusal(jurorPool, excusalDecisionDto, login); + validateExcusalLetter(excusalDecisionDto.getExcusalReasonCode()); + }); } @Test - @Sql({"/db/mod/truncate.sql","/db/ExcusalResponse_initPaperResponse.sql"}) + @Sql({"/db/mod/truncate.sql", "/db/ExcusalResponse_initPaperResponse.sql"}) public void excusalRequest_bureauUser_courtOwner() throws Exception { final String jurorNumber = "987654321"; final String login = "BUREAU_USER"; @@ -371,7 +380,7 @@ public void excusalRequest_bureauUser_courtOwner() throws Exception { } @Test - @Sql({"/db/mod/truncate.sql","/db/ExcusalResponse_initPaperResponse.sql"}) + @Sql({"/db/mod/truncate.sql", "/db/ExcusalResponse_initPaperResponse.sql"}) public void excusalRequest_courtUser_bureauOwner() throws Exception { final String jurorNumber = "123456789"; final String login = "COURT_USER"; @@ -389,7 +398,7 @@ public void excusalRequest_courtUser_bureauOwner() throws Exception { } @Test - @Sql({"/db/mod/truncate.sql","/db/ExcusalResponse_initPaperResponse.sql"}) + @Sql({"/db/mod/truncate.sql", "/db/ExcusalResponse_initPaperResponse.sql"}) public void excusalRequest_paperResponse_alreadyProcessed() throws Exception { final String jurorNumber = "111111111"; final String login = "BUREAU_USER"; @@ -407,17 +416,18 @@ public void excusalRequest_paperResponse_alreadyProcessed() throws Exception { HttpMethod.PUT, uri); ResponseEntity response = template.exchange(requestEntity, String.class); assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + executeInTransaction(() -> { + PaperResponse jurorPaperResponse = jurorPaperResponseRepository.findByJurorNumber(jurorNumber); + validatePaperResponseExcusal(jurorPaperResponse, login); - PaperResponse jurorPaperResponse = jurorPaperResponseRepository.findByJurorNumber(jurorNumber); - validatePaperResponseExcusal(jurorPaperResponse, login); - - JurorPool jurorPool = JurorPoolUtils.getSingleActiveJurorPool(jurorPoolRepository, jurorNumber); - validateExcusal(jurorPool, excusalDecisionDto, login); - validateExcusalLetter(excusalDecisionDto.getExcusalReasonCode()); + JurorPool jurorPool = JurorPoolUtils.getSingleActiveJurorPool(jurorPoolRepository, jurorNumber); + validateExcusal(jurorPool, excusalDecisionDto, login); + validateExcusalLetter(excusalDecisionDto.getExcusalReasonCode()); + }); } @Test - @Sql({"/db/mod/truncate.sql","/db/ExcusalResponse_initDigitalResponse.sql"}) + @Sql({"/db/mod/truncate.sql", "/db/ExcusalResponse_initDigitalResponse.sql"}) public void excusalRequest_digitalResponse_alreadyProcessed() throws Exception { final String jurorNumber = "222222222"; final String login = "BUREAU_USER"; @@ -438,7 +448,7 @@ public void excusalRequest_digitalResponse_alreadyProcessed() throws Exception { } @Test - @Sql({"/db/mod/truncate.sql","/db/ExcusalResponse_initPaperResponse.sql"}) + @Sql({"/db/mod/truncate.sql", "/db/ExcusalResponse_initPaperResponse.sql"}) public void excusalRequest_invalidExcusalCode() throws Exception { final String jurorNumber = "123456789"; final String login = "BUREAU_USER"; @@ -457,7 +467,7 @@ public void excusalRequest_invalidExcusalCode() throws Exception { } @Test - @Sql({"/db/mod/truncate.sql","/db/ExcusalResponse_initPaperResponse.sql"}) + @Sql({"/db/mod/truncate.sql", "/db/ExcusalResponse_initPaperResponse.sql"}) public void excusalRequest_paperResponse_doesNotExist() throws Exception { final String jurorNumber = "222222222"; final String login = "BUREAU_USER"; @@ -472,10 +482,11 @@ public void excusalRequest_paperResponse_doesNotExist() throws Exception { HttpMethod.PUT, uri); ResponseEntity response = template.exchange(requestEntity, String.class); assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); - - JurorPool jurorPool = JurorPoolUtils.getSingleActiveJurorPool(jurorPoolRepository, jurorNumber); - validateExcusal(jurorPool, excusalDecisionDto, login); - validateExcusalLetter(excusalDecisionDto.getExcusalReasonCode()); + executeInTransaction(() -> { + JurorPool jurorPool = JurorPoolUtils.getSingleActiveJurorPool(jurorPoolRepository, jurorNumber); + validateExcusal(jurorPool, excusalDecisionDto, login); + validateExcusalLetter(excusalDecisionDto.getExcusalReasonCode()); + }); } private void validatePaperResponseExcusal(PaperResponse jurorPaperResponse, String login) { @@ -497,101 +508,110 @@ private void validateDigitalResponseExcusal(DigitalResponse jurorDigitalResponse } private void validateRefuseExcusal(JurorPool jurorPool, ExcusalDecisionDto excusalDecisionDto, String login) { - Juror juror = jurorPool.getJuror(); - assertThat(juror.isResponded()) - .as("Juror record should be updated and marked as responded") - .isTrue(); - assertThat(juror.getExcusalDate()) - .as("Juror record should be updated with an excusal date") - .isNotNull(); - assertThat(juror.getExcusalCode()) - .as("Juror record should be update with an excusal code") - .isEqualTo(excusalDecisionDto.getExcusalReasonCode()); - assertThat(juror.getUserEdtq()) - .as("Current user should be recorded in juror record as last to make changes") - .isEqualTo(login); - assertThat(juror.getExcusalRejected()) - .as("Juror record should be updated to show excusal was rejected") - .isEqualTo("Y"); - assertThat(jurorPool.getStatus().getStatus()) - .as("Juror record should be updated to show they have responded") - .isEqualTo(IJurorStatus.RESPONDED); - - LocalDate yesterday = LocalDate.now().minusDays(1); - List jurorHistory = jurorHistoryRepository.findByJurorNumberAndDateCreatedGreaterThanEqual( - jurorPool.getJurorNumber(), yesterday); - assertThat(jurorHistory.stream() - .anyMatch(jurorHist -> jurorHist.getHistoryCode().equals(HistoryCodeMod.RESPONDED_POSITIVELY))) - .as("Expect history record to be created to show juror now responded") - .isTrue(); + executeInTransaction(() -> { + Juror juror = jurorPool.getJuror(); + assertThat(juror.isResponded()) + .as("Juror record should be updated and marked as responded") + .isTrue(); + assertThat(juror.getExcusalDate()) + .as("Juror record should be updated with an excusal date") + .isNotNull(); + assertThat(juror.getExcusalCode()) + .as("Juror record should be update with an excusal code") + .isEqualTo(excusalDecisionDto.getExcusalReasonCode()); + assertThat(juror.getUserEdtq()) + .as("Current user should be recorded in juror record as last to make changes") + .isEqualTo(login); + assertThat(juror.getExcusalRejected()) + .as("Juror record should be updated to show excusal was rejected") + .isEqualTo("Y"); + assertThat(jurorPool.getStatus().getStatus()) + .as("Juror record should be updated to show they have responded") + .isEqualTo(IJurorStatus.RESPONDED); + + LocalDate yesterday = LocalDate.now().minusDays(1); + List jurorHistory = jurorHistoryRepository.findByJurorNumberAndDateCreatedGreaterThanEqual( + jurorPool.getJurorNumber(), yesterday); + assertThat(jurorHistory.stream() + .anyMatch(jurorHist -> jurorHist.getHistoryCode().equals(HistoryCodeMod.RESPONDED_POSITIVELY))) + .as("Expect history record to be created to show juror now responded") + .isTrue(); + }); } private void validateExcusalDeniedLetter() { - Iterable bulkPrintDataIterable = bulkPrintDataRepository.findAll(); - List bulkPrintData = new ArrayList<>(); - bulkPrintDataIterable.forEach((data) -> { - if (data.getFormAttribute().getFormType().equals(FormCode.BI_EXCUSALDENIED.getCode()) - || data.getFormAttribute().getFormType().equals(FormCode.ENG_EXCUSALDENIED.getCode())) { - bulkPrintData.add(data); - } - }) - ; - - assertThat(bulkPrintData.size()) - .as("Expect a single excusal denied letter to exist") - .isEqualTo(1); + executeInTransaction(() -> { + Iterable bulkPrintDataIterable = bulkPrintDataRepository.findAll(); + List bulkPrintData = new ArrayList<>(); + bulkPrintDataIterable.forEach((data) -> { + if (data.getFormAttribute().getFormType().equals(FormCode.BI_EXCUSALDENIED.getCode()) + || data.getFormAttribute().getFormType().equals(FormCode.ENG_EXCUSALDENIED.getCode())) { + bulkPrintData.add(data); + } + }) + ; + + assertThat(bulkPrintData.size()) + .as("Expect a single excusal denied letter to exist") + .isEqualTo(1); + }); } private void validateExcusal(JurorPool jurorPool, ExcusalDecisionDto excusalDecisionDto, String login) { - Juror juror = jurorPool.getJuror(); - assertThat(juror.isResponded()) - .as("Juror record should be updated and marked as responded") - .isTrue(); - assertThat(juror.getExcusalDate()) - .as("Juror record should be updated with an excusal date") - .isNotNull(); - assertThat(juror.getExcusalCode()) - .as("Juror record should be update with an excusal code") - .isEqualTo(excusalDecisionDto.getExcusalReasonCode()); - assertThat(juror.getUserEdtq()) - .as("Current user should be recorded in juror record as last to make changes") - .isEqualTo(login); - if (excusalDecisionDto.getExcusalDecision().equals(REFUSE)) { - assertThat(jurorPool.getStatus().getStatus()) - .as("Juror record should be updated to show they are responded") - .isEqualTo(IJurorStatus.RESPONDED); - } else { - assertThat(jurorPool.getStatus().getStatus()) - .as("Juror record should be updated to show they are excused") - .isEqualTo(IJurorStatus.EXCUSED); - } - assertThat(jurorPool.getNextDate()) - .as("Next date should be set to null as Juror has been excused") - .isNull(); - - LocalDate yesterday = LocalDate.now().minusDays(1); - List jurorHistoryList = jurorHistoryRepository.findByJurorNumberAndDateCreatedGreaterThanEqual( - juror.getJurorNumber(), yesterday); - assertThat(jurorHistoryList.stream() - .anyMatch(jurorHistory -> jurorHistory.getHistoryCode().equals(HistoryCodeMod.EXCUSE_POOL_MEMBER))) - .as("Expect history record to be created for excusal refusal") - .isTrue(); + executeInTransaction(() -> { + Juror juror = jurorPool.getJuror(); + assertThat(juror.isResponded()) + .as("Juror record should be updated and marked as responded") + .isTrue(); + assertThat(juror.getExcusalDate()) + .as("Juror record should be updated with an excusal date") + .isNotNull(); + assertThat(juror.getExcusalCode()) + .as("Juror record should be update with an excusal code") + .isEqualTo(excusalDecisionDto.getExcusalReasonCode()); + assertThat(juror.getUserEdtq()) + .as("Current user should be recorded in juror record as last to make changes") + .isEqualTo(login); + if (excusalDecisionDto.getExcusalDecision().equals(REFUSE)) { + assertThat(jurorPool.getStatus().getStatus()) + .as("Juror record should be updated to show they are responded") + .isEqualTo(IJurorStatus.RESPONDED); + } else { + assertThat(jurorPool.getStatus().getStatus()) + .as("Juror record should be updated to show they are excused") + .isEqualTo(IJurorStatus.EXCUSED); + } + assertThat(jurorPool.getNextDate()) + .as("Next date should be set to null as Juror has been excused") + .isNull(); + + LocalDate yesterday = LocalDate.now().minusDays(1); + List jurorHistoryList = + jurorHistoryRepository.findByJurorNumberAndDateCreatedGreaterThanEqual( + juror.getJurorNumber(), yesterday); + assertThat(jurorHistoryList.stream() + .anyMatch(jurorHistory -> jurorHistory.getHistoryCode().equals(HistoryCodeMod.EXCUSE_POOL_MEMBER))) + .as("Expect history record to be created for excusal refusal") + .isTrue(); + }); } private void validateExcusalLetter(String excusalCode) { - Iterable excusalLetterIterable = bulkPrintDataRepository.findAll(); - List excusalLetters = new ArrayList<>(); - excusalLetterIterable.forEach(excusalLetters::add); - - if (ExcusalCodeEnum.D.getCode().equals(excusalCode)) { - assertThat(excusalLetters.size()) - .as("Expect no excusal letter for deceased jurors") - .isEqualTo(0); - } else { - assertThat(excusalLetters.size()) - .as("Expect a single excusal letter to exist") - .isEqualTo(1); - } + executeInTransaction(() -> { + Iterable excusalLetterIterable = bulkPrintDataRepository.findAll(); + List excusalLetters = new ArrayList<>(); + excusalLetterIterable.forEach(excusalLetters::add); + + if (ExcusalCodeEnum.D.getCode().equals(excusalCode)) { + assertThat(excusalLetters.size()) + .as("Expect no excusal letter for deceased jurors") + .isEqualTo(0); + } else { + assertThat(excusalLetters.size()) + .as("Expect a single excusal letter to exist") + .isEqualTo(1); + } + }); } private ExcusalDecisionDto createExcusalDecisionDto() { diff --git a/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/JurorExpenseControllerITest.java b/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/JurorExpenseControllerITest.java index fa2036d4d..e083a9104 100644 --- a/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/JurorExpenseControllerITest.java +++ b/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/JurorExpenseControllerITest.java @@ -2591,8 +2591,7 @@ void typicalApprovalCash() throws Exception { "/db/JurorExpenseControllerITest_approveExpenseSetUp.sql", "/db/JurorExpenseControllerITest_expenseRates.sql", "/db/JurorExpenseControllerITest_ApproveExpensesSupport.sql" - } - ) + }) void typicalReApproved() throws Exception { ApproveExpenseDto approveExpenseDto = ApproveExpenseDto.builder() .jurorNumber(JUROR_NUMBER) diff --git a/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/JurorPaperResponseControllerITest.java b/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/JurorPaperResponseControllerITest.java index 2ba8a1545..53ad0e684 100644 --- a/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/JurorPaperResponseControllerITest.java +++ b/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/JurorPaperResponseControllerITest.java @@ -260,28 +260,30 @@ public void respondToSummons_straightThrough_ageDisqualification_tooOld() throws ResponseEntity response = template.exchange(requestEntity, SaveJurorPaperReplyResponseDto.class); assertThat(response.getStatusCode()).isEqualTo(HttpStatus.CREATED); + executeInTransaction(() -> { + SaveJurorPaperReplyResponseDto responseDto = response.getBody(); + assertThat(responseDto).isNotNull(); - SaveJurorPaperReplyResponseDto responseDto = response.getBody(); - assertThat(responseDto).isNotNull(); - - assertThat(responseDto.isStraightThroughAcceptance()).isFalse(); + assertThat(responseDto.isStraightThroughAcceptance()).isFalse(); - PaperResponse jurorPaperResponse = getJurorPaperResponse(jurorNumber); + PaperResponse jurorPaperResponse = getJurorPaperResponse(jurorNumber); - verifyRequestDtoMappingPersonalDetails(jurorPaperResponse, requestDto); - verifyRequestDtoMappingContactDetails(jurorPaperResponse, requestDto); + verifyRequestDtoMappingPersonalDetails(jurorPaperResponse, requestDto); + verifyRequestDtoMappingContactDetails(jurorPaperResponse, requestDto); - Optional jurorPoolOpt = - jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumberAndIsActive(jurorNumber, POOL_415220502, true); + Optional jurorPoolOpt = + jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumberAndIsActive(jurorNumber, POOL_415220502, + true); - assertThat(jurorPoolOpt.isPresent()).isTrue(); + assertThat(jurorPoolOpt.isPresent()).isTrue(); - JurorPool jurorPool = jurorPoolOpt.get(); + JurorPool jurorPool = jurorPoolOpt.get(); - assertThat(jurorPool.getJuror().isResponseEntered()).isTrue(); + assertThat(jurorPool.getJuror().isResponseEntered()).isTrue(); - validateMergedJurorRecord(jurorPool, jurorPaperResponse, IJurorStatus.DISQUALIFIED); - verifyAgeDisqualification(jurorPool); + validateMergedJurorRecord(jurorPool, jurorPaperResponse, IJurorStatus.DISQUALIFIED); + verifyAgeDisqualification(jurorPool); + }); } @Test @@ -302,28 +304,29 @@ public void respondToSummons_straightThrough_ageDisqualification_tooYoung() thro ResponseEntity response = template.exchange(requestEntity, SaveJurorPaperReplyResponseDto.class); assertThat(response.getStatusCode()).isEqualTo(HttpStatus.CREATED); + executeInTransaction(() -> { + SaveJurorPaperReplyResponseDto responseDto = response.getBody(); + assertThat(responseDto).isNotNull(); - SaveJurorPaperReplyResponseDto responseDto = response.getBody(); - assertThat(responseDto).isNotNull(); + assertThat(responseDto.isStraightThroughAcceptance()).isFalse(); - assertThat(responseDto.isStraightThroughAcceptance()).isFalse(); + PaperResponse jurorPaperResponse = getJurorPaperResponse(jurorNumber); + verifyRequestDtoMappingPersonalDetails(jurorPaperResponse, requestDto); + verifyRequestDtoMappingContactDetails(jurorPaperResponse, requestDto); - PaperResponse jurorPaperResponse = getJurorPaperResponse(jurorNumber); - verifyRequestDtoMappingPersonalDetails(jurorPaperResponse, requestDto); - verifyRequestDtoMappingContactDetails(jurorPaperResponse, requestDto); - - Optional jurorPoolOpt = - jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumberAndIsActive(jurorNumber, - POOL_411220502, true); + Optional jurorPoolOpt = + jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumberAndIsActive(jurorNumber, + POOL_411220502, true); - assertThat(jurorPoolOpt.isPresent()).isTrue(); + assertThat(jurorPoolOpt.isPresent()).isTrue(); - JurorPool jurorPool = jurorPoolOpt.get(); + JurorPool jurorPool = jurorPoolOpt.get(); - assertThat(jurorPool.getJuror().isResponseEntered()).isTrue(); + assertThat(jurorPool.getJuror().isResponseEntered()).isTrue(); - validateMergedJurorRecord(jurorPool, jurorPaperResponse, IJurorStatus.DISQUALIFIED); - verifyAgeDisqualification(jurorPool); + validateMergedJurorRecord(jurorPool, jurorPaperResponse, IJurorStatus.DISQUALIFIED); + verifyAgeDisqualification(jurorPool); + }); } @Test @@ -344,23 +347,25 @@ public void respondToSummons_straightThrough_ageDisqualification_invalidStatus() ResponseEntity response = template.exchange(requestEntity, SaveJurorPaperReplyResponseDto.class); assertThat(response.getStatusCode()).isEqualTo(HttpStatus.CREATED); + executeInTransaction(() -> { + SaveJurorPaperReplyResponseDto responseDto = response.getBody(); + assertThat(responseDto).isNotNull(); - SaveJurorPaperReplyResponseDto responseDto = response.getBody(); - assertThat(responseDto).isNotNull(); - - assertThat(responseDto.isStraightThroughAcceptance()).isFalse(); + assertThat(responseDto.isStraightThroughAcceptance()).isFalse(); - PaperResponse jurorPaperResponse = getJurorPaperResponse(jurorNumber); + PaperResponse jurorPaperResponse = getJurorPaperResponse(jurorNumber); - Optional jurorPool = - jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumberAndIsActive(jurorNumber, POOL_411220502, true); + Optional jurorPool = + jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumberAndIsActive(jurorNumber, POOL_411220502, + true); - assertThat(jurorPool.isPresent()).isTrue(); + assertThat(jurorPool.isPresent()).isTrue(); - assertThat(jurorPool.get().getJuror().isResponseEntered()).isTrue(); + assertThat(jurorPool.get().getJuror().isResponseEntered()).isTrue(); - verifyStraightThroughAgeDisqualificationNotProcessed(jurorPaperResponse, jurorPool.get(), - IJurorStatus.DEFERRED); + verifyStraightThroughAgeDisqualificationNotProcessed(jurorPaperResponse, jurorPool.get(), + IJurorStatus.DEFERRED); + }); } @Test @@ -382,23 +387,25 @@ public void respondToSummons_straightThrough_ageDisqualification_thirdParty() th ResponseEntity response = template.exchange(requestEntity, SaveJurorPaperReplyResponseDto.class); assertThat(response.getStatusCode()).isEqualTo(HttpStatus.CREATED); + executeInTransaction(() -> { + SaveJurorPaperReplyResponseDto responseDto = response.getBody(); + assertThat(responseDto).isNotNull(); - SaveJurorPaperReplyResponseDto responseDto = response.getBody(); - assertThat(responseDto).isNotNull(); + assertThat(responseDto.isStraightThroughAcceptance()).isFalse(); - assertThat(responseDto.isStraightThroughAcceptance()).isFalse(); - - PaperResponse jurorPaperResponse = getJurorPaperResponse(jurorNumber); + PaperResponse jurorPaperResponse = getJurorPaperResponse(jurorNumber); - Optional jurorPool = - jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumberAndIsActive(jurorNumber, POOL_415220502, true); + Optional jurorPool = + jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumberAndIsActive(jurorNumber, POOL_415220502, + true); - assertThat(jurorPool.isPresent()).isTrue(); + assertThat(jurorPool.isPresent()).isTrue(); - assertThat(jurorPool.get().getJuror().isResponseEntered()).isTrue(); + assertThat(jurorPool.get().getJuror().isResponseEntered()).isTrue(); - verifyStraightThroughAgeDisqualificationNotProcessed(jurorPaperResponse, jurorPool.get(), - IJurorStatus.SUMMONED); + verifyStraightThroughAgeDisqualificationNotProcessed(jurorPaperResponse, jurorPool.get(), + IJurorStatus.SUMMONED); + }); } @Test @@ -423,48 +430,51 @@ public void respondToSummons_straightThrough_ageDisqualification_letterAlreadyEx SaveJurorPaperReplyResponseDto responseDto = response.getBody(); assertThat(responseDto).isNotNull(); - - assertThat(responseDto.isStraightThroughAcceptance()).isFalse(); - - PaperResponse jurorPaperResponse = getJurorPaperResponse(jurorNumber); - - verifyRequestDtoMappingPersonalDetails(jurorPaperResponse, requestDto); - verifyRequestDtoMappingContactDetails(jurorPaperResponse, requestDto); - - Optional jurorPoolOpt = - jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumberAndIsActive(jurorNumber, POOL_411220502, true); - - assertThat(jurorPoolOpt.isPresent()).isTrue(); - JurorPool jurorPool = jurorPoolOpt.get(); - - assertThat(jurorPool.getJuror().isResponseEntered()).isTrue(); - - validateMergedJurorRecord(jurorPool, jurorPaperResponse, IJurorStatus.DISQUALIFIED); - verifyAgeDisqualification(jurorPool); - - LocalDate yesterday = LocalDate.now().minusDays(1); - List jurorHistoryList = - jurorHistoryRepository.findByJurorNumberAndDateCreatedGreaterThanEqual(jurorNumber, yesterday); - assertThat( - jurorHistoryList.stream().anyMatch(ph -> ph.getHistoryCode().equals(HistoryCodeMod.DISQUALIFY_POOL_MEMBER))) - .as("Expect history record to be created for juror disqualification") - .isTrue(); - assertThat( - jurorHistoryList.stream().anyMatch(ph -> ph.getHistoryCode().equals(HistoryCodeMod.WITHDRAWAL_LETTER))) - .as("Expect history record to be created for disqualification letter") - .isTrue(); - - Iterable disqualifyLetterIterator = bulkPrintDataRepository.findAll(); - List disqualificationLetters = new ArrayList<>(); - disqualifyLetterIterator.forEach(bulkPrintData -> { - if (Set.of("5224", "5224C").contains(bulkPrintData.getFormAttribute().getFormType())) { - disqualificationLetters.add(bulkPrintData); - } + executeInTransaction(() -> { + assertThat(responseDto.isStraightThroughAcceptance()).isFalse(); + + PaperResponse jurorPaperResponse = getJurorPaperResponse(jurorNumber); + + verifyRequestDtoMappingPersonalDetails(jurorPaperResponse, requestDto); + verifyRequestDtoMappingContactDetails(jurorPaperResponse, requestDto); + + Optional jurorPoolOpt = + jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumberAndIsActive(jurorNumber, POOL_411220502, + true); + + assertThat(jurorPoolOpt.isPresent()).isTrue(); + JurorPool jurorPool = jurorPoolOpt.get(); + + assertThat(jurorPool.getJuror().isResponseEntered()).isTrue(); + + validateMergedJurorRecord(jurorPool, jurorPaperResponse, IJurorStatus.DISQUALIFIED); + verifyAgeDisqualification(jurorPool); + + LocalDate yesterday = LocalDate.now().minusDays(1); + List jurorHistoryList = + jurorHistoryRepository.findByJurorNumberAndDateCreatedGreaterThanEqual(jurorNumber, yesterday); + assertThat( + jurorHistoryList.stream() + .anyMatch(ph -> ph.getHistoryCode().equals(HistoryCodeMod.DISQUALIFY_POOL_MEMBER))) + .as("Expect history record to be created for juror disqualification") + .isTrue(); + assertThat( + jurorHistoryList.stream().anyMatch(ph -> ph.getHistoryCode().equals(HistoryCodeMod.WITHDRAWAL_LETTER))) + .as("Expect history record to be created for disqualification letter") + .isTrue(); + + Iterable disqualifyLetterIterator = bulkPrintDataRepository.findAll(); + List disqualificationLetters = new ArrayList<>(); + disqualifyLetterIterator.forEach(bulkPrintData -> { + if (Set.of("5224", "5224C").contains(bulkPrintData.getFormAttribute().getFormType())) { + disqualificationLetters.add(bulkPrintData); + } + }); + + assertThat(disqualificationLetters.size()) + .as("Expect a single disqualification letter to exist (existing record updated)") + .isEqualTo(1); }); - - assertThat(disqualificationLetters.size()) - .as("Expect a single disqualification letter to exist (existing record updated)") - .isEqualTo(1); } @Test @@ -487,15 +497,18 @@ public void respondToSummons_responseEntered() { SaveJurorPaperReplyResponseDto responseDto = response.getBody(); assertThat(responseDto).isNotNull(); - Optional jurorPoolOpt = - jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumberAndIsActive(jurorNumber, POOL_415220502, true); + executeInTransaction(() -> { + Optional jurorPoolOpt = + jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumberAndIsActive(jurorNumber, POOL_415220502, + true); - assertThat(jurorPoolOpt.isPresent()).isTrue(); - JurorPool jurorPool = jurorPoolOpt.get(); + assertThat(jurorPoolOpt.isPresent()).isTrue(); + JurorPool jurorPool = jurorPoolOpt.get(); - assertThat(jurorPool.getJuror().getJurorNumber()).isEqualTo(jurorNumber); + assertThat(jurorPool.getJuror().getJurorNumber()).isEqualTo(jurorNumber); - assertThat(jurorPool.getJuror().isResponseEntered()).isTrue(); + assertThat(jurorPool.getJuror().isResponseEntered()).isTrue(); + }); } @Test @@ -674,24 +687,25 @@ public void updateJurorPaperResponseStatus_bureauUser_happyPath() throws Excepti RequestEntity requestEntity = new RequestEntity<>(httpHeaders, HttpMethod.PUT, uri); ResponseEntity response = template.exchange(requestEntity, Void.class); assertThat(response.getStatusCode()).isEqualTo(HttpStatus.ACCEPTED); + executeInTransaction(() -> { + Optional jurorPoolOpt = + jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumberAndIsActive("111111111", POOL_411220502, + true); - Optional jurorPoolOpt = - jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumberAndIsActive("111111111", POOL_411220502, true); - - assertThat(jurorPoolOpt.isPresent()).isTrue(); - JurorPool jurorPool = jurorPoolOpt.get(); + assertThat(jurorPoolOpt.isPresent()).isTrue(); + JurorPool jurorPool = jurorPoolOpt.get(); - PaperResponse summonsReplyData = jurorPaperResponseRepository.findByJurorNumber("111111111"); + PaperResponse summonsReplyData = jurorPaperResponseRepository.findByJurorNumber("111111111"); - validateMergedJurorRecord(jurorPool, summonsReplyData, IJurorStatus.RESPONDED); - assertThat(jurorPool.getUserEdtq()).isEqualToIgnoringCase("BUREAU_USER"); - - Juror juror = jurorPool.getJuror(); - // Summons reply was not completed by a third party so contact details should be merged - validateMergedJurorRecordContactDetails(juror, summonsReplyData); - // no mobile number present so numbers should be mapped to home phone and work phone only - assertThat(juror.getAltPhoneNumber()).isNull(); + validateMergedJurorRecord(jurorPool, summonsReplyData, IJurorStatus.RESPONDED); + assertThat(jurorPool.getUserEdtq()).isEqualToIgnoringCase("BUREAU_USER"); + Juror juror = jurorPool.getJuror(); + // Summons reply was not completed by a third party so contact details should be merged + validateMergedJurorRecordContactDetails(juror, summonsReplyData); + // no mobile number present so numbers should be mapped to home phone and work phone only + assertThat(juror.getAltPhoneNumber()).isNull(); + }); } @Test @@ -1772,141 +1786,146 @@ public void updateJurorPaperResponseStatus_courtUser_thirdParty() throws Excepti RequestEntity requestEntity = new RequestEntity<>(httpHeaders, HttpMethod.PUT, uri); ResponseEntity response = template.exchange(requestEntity, Void.class); assertThat(response.getStatusCode()).isEqualTo(HttpStatus.ACCEPTED); + executeInTransaction(() -> { + List jurorPoolList = + jurorPoolRepository.findByJurorJurorNumberAndIsActive("555555555", true); - List jurorPoolList = - jurorPoolRepository.findByJurorJurorNumberAndIsActive("555555555", true); + assertThat(jurorPoolList.size()).isGreaterThan(0); + JurorPool jurorPool = jurorPoolList.get(0); + Juror juror = jurorPool.getJuror(); - assertThat(jurorPoolList.size()).isGreaterThan(0); - JurorPool jurorPool = jurorPoolList.get(0); - Juror juror = jurorPool.getJuror(); + PaperResponse summonsReplyData = jurorPaperResponseRepository.findByJurorNumber( + "555555555"); - PaperResponse summonsReplyData = jurorPaperResponseRepository.findByJurorNumber( - "555555555"); + validateMergedJurorRecord(jurorPool, summonsReplyData, IJurorStatus.RESPONDED); + assertThat(jurorPool.getUserEdtq()).isEqualToIgnoringCase("COURT_USER"); - validateMergedJurorRecord(jurorPool, summonsReplyData, IJurorStatus.RESPONDED); - assertThat(jurorPool.getUserEdtq()).isEqualToIgnoringCase("COURT_USER"); - - // juror contact details are omitted from merge when completed by a third party - assertThat(juror.getPhoneNumber()).isNull(); - assertThat(juror.getWorkPhone()).isNull(); - assertThat(juror.getAltPhoneNumber()).isNull(); - assertThat(juror.getEmail()).isNull(); + // juror contact details are omitted from merge when completed by a third party + assertThat(juror.getPhoneNumber()).isNull(); + assertThat(juror.getWorkPhone()).isNull(); + assertThat(juror.getAltPhoneNumber()).isNull(); + assertThat(juror.getEmail()).isNull(); + }); } - @SuppressWarnings({"PMD.NcssCount", "PMD.NPathComplexity"}) + @SuppressWarnings({"PMD.NcssCount", "PMD.NPathComplexity", "PMD.CognitiveComplexity"}) private void verifyResponseDtoMapping(JurorPaperResponseDetailDto responseDetailDto, String owner) { - PaperResponse jurorPaperResponse = - jurorPaperResponseRepository.findByJurorNumber(responseDetailDto.getJurorNumber()); - assertThat(jurorPaperResponse).isNotNull(); - - JurorPool jurorPool = JurorPoolUtils.getActiveJurorPoolForUser(jurorPoolRepository, - responseDetailDto.getJurorNumber(), owner); - - assertThat(jurorPool.getOwner().equals(responseDetailDto.getCurrentOwner())); - - assertThat(jurorPool).isNotNull(); - - SummonsSnapshot summonsSnapshot = summonsSnapshotRepository.findById(jurorPool.getJurorNumber()) - .orElse(null); - - assertThat(responseDetailDto.getJurorNumber()).isEqualTo(jurorPool.getJurorNumber()); - if (summonsSnapshot != null) { - assertThat(responseDetailDto.getPoolNumber()).isEqualTo(summonsSnapshot.getPoolNumber()); - assertThat(responseDetailDto.getServiceStartDate()).isEqualTo(summonsSnapshot.getServiceStartDate()); - assertThat(responseDetailDto.getCourtName()).isEqualTo(summonsSnapshot.getCourtLocationName()); - assertThat(responseDetailDto.isWelshCourt()).isEqualTo( - CourtLocationUtils.isWelshCourtLocation(welshCourtLocationRepository, - summonsSnapshot.getCourtLocationCode())); - } else { - assertThat(responseDetailDto.getPoolNumber()).isEqualTo(jurorPool.getPoolNumber()); - assertThat(responseDetailDto.getServiceStartDate()).isEqualTo(jurorPool.getReturnDate()); - assertThat(responseDetailDto.getCourtName()).isEqualTo(jurorPool.getCourt().getName()); - assertThat(responseDetailDto.isWelshCourt()).isEqualTo( - CourtLocationUtils.isWelshCourtLocation(welshCourtLocationRepository, - jurorPool.getCourt().getLocCode())); - } - assertThat(responseDetailDto.getJurorStatus()).isEqualTo(jurorPool.getStatus().getStatusDesc()); - - assertThat(responseDetailDto.getTitle()).isEqualTo(jurorPaperResponse.getTitle()); - assertThat(responseDetailDto.getFirstName()).isEqualTo(jurorPaperResponse.getFirstName()); - assertThat(responseDetailDto.getLastName()).isEqualTo(jurorPaperResponse.getLastName()); - assertThat(responseDetailDto.getDateOfBirth()).isEqualTo(jurorPaperResponse.getDateOfBirth()); - assertThat(responseDetailDto.getPrimaryPhone()).isEqualTo(jurorPaperResponse.getPhoneNumber()); - assertThat(responseDetailDto.getSecondaryPhone()).isEqualTo(jurorPaperResponse.getAltPhoneNumber()); - assertThat(responseDetailDto.getEmailAddress()).isEqualTo(jurorPaperResponse.getEmail()); - - assertThat(responseDetailDto.getAddressLineOne()).isEqualTo(jurorPaperResponse.getAddressLine1()); - assertThat(responseDetailDto.getAddressLineTwo()).isEqualTo(jurorPaperResponse.getAddressLine2()); - assertThat(responseDetailDto.getAddressLineThree()).isEqualTo(jurorPaperResponse.getAddressLine3()); - assertThat(responseDetailDto.getAddressTown()).isEqualTo(jurorPaperResponse.getAddressLine4()); - assertThat(responseDetailDto.getAddressCounty()).isEqualTo(jurorPaperResponse.getAddressLine5()); - assertThat(responseDetailDto.getAddressPostcode()).isEqualTo(jurorPaperResponse.getPostcode()); - - List cjsEmployments = - jurorPaperResponseCjsRepository.findByJurorNumber(responseDetailDto.getJurorNumber()); - if (cjsEmployments != null && !cjsEmployments.isEmpty()) { - JurorResponseCjsEmployment actualCjs = cjsEmployments.get(0); - JurorPaperResponseDetailDto.CjsEmployment expectedCjs = responseDetailDto.getCjsEmployment().get(0); - assertThat(expectedCjs.getCjsEmployer()).isEqualTo(actualCjs.getCjsEmployer()); - assertThat(expectedCjs.getCjsEmployerDetails()).isEqualTo(actualCjs.getCjsEmployerDetails()); - } - - List reasonableAdjustments = - jurorReasonableAdjustmentRepository.findByJurorNumber(responseDetailDto.getJurorNumber()); - if (reasonableAdjustments != null && !reasonableAdjustments.isEmpty()) { - JurorReasonableAdjustment actualReasonableAdjustment = reasonableAdjustments.get(0); - JurorPaperResponseDetailDto.ReasonableAdjustment expectedSpecialNeeds = - responseDetailDto.getReasonableAdjustments().get(0); - assertThat(expectedSpecialNeeds.getAssistanceType()).isEqualTo( - actualReasonableAdjustment.getReasonableAdjustment().getCode()); - assertThat(expectedSpecialNeeds.getAssistanceTypeDetails()).isEqualTo( - actualReasonableAdjustment.getReasonableAdjustmentDetail()); - } + executeInTransaction(() -> { + PaperResponse jurorPaperResponse = + jurorPaperResponseRepository.findByJurorNumber(responseDetailDto.getJurorNumber()); + assertThat(jurorPaperResponse).isNotNull(); + + JurorPool jurorPool = JurorPoolUtils.getActiveJurorPoolForUser(jurorPoolRepository, + responseDetailDto.getJurorNumber(), owner); + + assertThat(jurorPool.getOwner().equals(responseDetailDto.getCurrentOwner())); + + assertThat(jurorPool).isNotNull(); + + SummonsSnapshot summonsSnapshot = summonsSnapshotRepository.findById(jurorPool.getJurorNumber()) + .orElse(null); + + assertThat(responseDetailDto.getJurorNumber()).isEqualTo(jurorPool.getJurorNumber()); + if (summonsSnapshot != null) { + assertThat(responseDetailDto.getPoolNumber()).isEqualTo(summonsSnapshot.getPoolNumber()); + assertThat(responseDetailDto.getServiceStartDate()).isEqualTo(summonsSnapshot.getServiceStartDate()); + assertThat(responseDetailDto.getCourtName()).isEqualTo(summonsSnapshot.getCourtLocationName()); + assertThat(responseDetailDto.isWelshCourt()).isEqualTo( + CourtLocationUtils.isWelshCourtLocation(welshCourtLocationRepository, + summonsSnapshot.getCourtLocationCode())); + } else { + assertThat(responseDetailDto.getPoolNumber()).isEqualTo(jurorPool.getPoolNumber()); + assertThat(responseDetailDto.getServiceStartDate()).isEqualTo(jurorPool.getReturnDate()); + assertThat(responseDetailDto.getCourtName()).isEqualTo(jurorPool.getCourt().getName()); + assertThat(responseDetailDto.isWelshCourt()).isEqualTo( + CourtLocationUtils.isWelshCourtLocation(welshCourtLocationRepository, + jurorPool.getCourt().getLocCode())); + } + assertThat(responseDetailDto.getJurorStatus()).isEqualTo(jurorPool.getStatus().getStatusDesc()); + + assertThat(responseDetailDto.getTitle()).isEqualTo(jurorPaperResponse.getTitle()); + assertThat(responseDetailDto.getFirstName()).isEqualTo(jurorPaperResponse.getFirstName()); + assertThat(responseDetailDto.getLastName()).isEqualTo(jurorPaperResponse.getLastName()); + assertThat(responseDetailDto.getDateOfBirth()).isEqualTo(jurorPaperResponse.getDateOfBirth()); + assertThat(responseDetailDto.getPrimaryPhone()).isEqualTo(jurorPaperResponse.getPhoneNumber()); + assertThat(responseDetailDto.getSecondaryPhone()).isEqualTo(jurorPaperResponse.getAltPhoneNumber()); + assertThat(responseDetailDto.getEmailAddress()).isEqualTo(jurorPaperResponse.getEmail()); + + assertThat(responseDetailDto.getAddressLineOne()).isEqualTo(jurorPaperResponse.getAddressLine1()); + assertThat(responseDetailDto.getAddressLineTwo()).isEqualTo(jurorPaperResponse.getAddressLine2()); + assertThat(responseDetailDto.getAddressLineThree()).isEqualTo(jurorPaperResponse.getAddressLine3()); + assertThat(responseDetailDto.getAddressTown()).isEqualTo(jurorPaperResponse.getAddressLine4()); + assertThat(responseDetailDto.getAddressCounty()).isEqualTo(jurorPaperResponse.getAddressLine5()); + assertThat(responseDetailDto.getAddressPostcode()).isEqualTo(jurorPaperResponse.getPostcode()); + + List cjsEmployments = + jurorPaperResponseCjsRepository.findByJurorNumber(responseDetailDto.getJurorNumber()); + if (cjsEmployments != null && !cjsEmployments.isEmpty()) { + JurorResponseCjsEmployment actualCjs = cjsEmployments.get(0); + JurorPaperResponseDetailDto.CjsEmployment expectedCjs = responseDetailDto.getCjsEmployment().get(0); + assertThat(expectedCjs.getCjsEmployer()).isEqualTo(actualCjs.getCjsEmployer()); + assertThat(expectedCjs.getCjsEmployerDetails()).isEqualTo(actualCjs.getCjsEmployerDetails()); + } - assertThat(responseDetailDto.getDeferral()).isEqualTo(jurorPaperResponse.getDeferral()); - assertThat(responseDetailDto.getExcusal()).isEqualTo(jurorPaperResponse.getExcusal()); - - if (jurorPaperResponse.getResidency() != null || jurorPaperResponse.getMentalHealthAct() != null - || jurorPaperResponse.getMentalHealthCapacity() != null || jurorPaperResponse.getBail() != null - || jurorPaperResponse.getConvictions() != null) { - JurorPaperResponseDetailDto.Eligibility eligibility = responseDetailDto.getEligibility(); - assertThat(eligibility.getLivedConsecutive()).isEqualTo(jurorPaperResponse.getResidency()); - assertThat(eligibility.getMentalHealthAct()).isEqualTo(jurorPaperResponse.getMentalHealthAct()); - assertThat(eligibility.getMentalHealthCapacity()).isEqualTo(jurorPaperResponse.getMentalHealthCapacity()); - assertThat(eligibility.getOnBail()).isEqualTo(jurorPaperResponse.getBail()); - assertThat(eligibility.getConvicted()).isEqualTo(jurorPaperResponse.getConvictions()); - } + List reasonableAdjustments = + jurorReasonableAdjustmentRepository.findByJurorNumber(responseDetailDto.getJurorNumber()); + if (reasonableAdjustments != null && !reasonableAdjustments.isEmpty()) { + JurorReasonableAdjustment actualReasonableAdjustment = reasonableAdjustments.get(0); + JurorPaperResponseDetailDto.ReasonableAdjustment expectedSpecialNeeds = + responseDetailDto.getReasonableAdjustments().get(0); + assertThat(expectedSpecialNeeds.getAssistanceType()).isEqualTo( + actualReasonableAdjustment.getReasonableAdjustment().getCode()); + assertThat(expectedSpecialNeeds.getAssistanceTypeDetails()).isEqualTo( + actualReasonableAdjustment.getReasonableAdjustmentDetail()); + } - assertThat(responseDetailDto.getSigned()).isEqualTo(jurorPaperResponse.getSigned()); + assertThat(responseDetailDto.getDeferral()).isEqualTo(jurorPaperResponse.getDeferral()); + assertThat(responseDetailDto.getExcusal()).isEqualTo(jurorPaperResponse.getExcusal()); + + if (jurorPaperResponse.getResidency() != null || jurorPaperResponse.getMentalHealthAct() != null + || jurorPaperResponse.getMentalHealthCapacity() != null || jurorPaperResponse.getBail() != null + || jurorPaperResponse.getConvictions() != null) { + JurorPaperResponseDetailDto.Eligibility eligibility = responseDetailDto.getEligibility(); + assertThat(eligibility.getLivedConsecutive()).isEqualTo(jurorPaperResponse.getResidency()); + assertThat(eligibility.getMentalHealthAct()).isEqualTo(jurorPaperResponse.getMentalHealthAct()); + assertThat(eligibility.getMentalHealthCapacity()).isEqualTo( + jurorPaperResponse.getMentalHealthCapacity()); + assertThat(eligibility.getOnBail()).isEqualTo(jurorPaperResponse.getBail()); + assertThat(eligibility.getConvicted()).isEqualTo(jurorPaperResponse.getConvictions()); + } - if (jurorPaperResponse.getRelationship() != null && !jurorPaperResponse.getRelationship().isEmpty()) { - JurorPaperResponseDetailDto.ThirdParty thirdParty = responseDetailDto.getThirdParty(); - assertThat(thirdParty.getRelationship()).isEqualTo(jurorPaperResponse.getRelationship()); - assertThat(thirdParty.getThirdPartyReason()).isEqualTo(jurorPaperResponse.getThirdPartyReason()); - } + assertThat(responseDetailDto.getSigned()).isEqualTo(jurorPaperResponse.getSigned()); - assertThat(responseDetailDto.getWelsh()).isEqualTo(jurorPaperResponse.getWelsh()); - assertThat(responseDetailDto.getDateReceived()).isEqualTo(jurorPaperResponse.getDateReceived().toLocalDate()); - assertThat(responseDetailDto.getProcessingStatus()).isEqualTo( - jurorPaperResponse.getProcessingStatus().getDescription()); + if (jurorPaperResponse.getRelationship() != null && !jurorPaperResponse.getRelationship().isEmpty()) { + JurorPaperResponseDetailDto.ThirdParty thirdParty = responseDetailDto.getThirdParty(); + assertThat(thirdParty.getRelationship()).isEqualTo(jurorPaperResponse.getRelationship()); + assertThat(thirdParty.getThirdPartyReason()).isEqualTo(jurorPaperResponse.getThirdPartyReason()); + } - if (jurorPaperResponse.getRelationship() != null && !jurorPaperResponse.getRelationship().isEmpty()) { - JurorPaperResponseDetailDto.ThirdParty thirdParty = responseDetailDto.getThirdParty(); - assertThat(thirdParty.getRelationship()).isEqualTo(jurorPaperResponse.getRelationship()); - assertThat(thirdParty.getThirdPartyReason()).isEqualTo(jurorPaperResponse.getThirdPartyReason()); - } + assertThat(responseDetailDto.getWelsh()).isEqualTo(jurorPaperResponse.getWelsh()); + assertThat(responseDetailDto.getDateReceived()).isEqualTo( + jurorPaperResponse.getDateReceived().toLocalDate()); + assertThat(responseDetailDto.getProcessingStatus()).isEqualTo( + jurorPaperResponse.getProcessingStatus().getDescription()); - Juror juror = jurorPool.getJuror(); + if (jurorPaperResponse.getRelationship() != null && !jurorPaperResponse.getRelationship().isEmpty()) { + JurorPaperResponseDetailDto.ThirdParty thirdParty = responseDetailDto.getThirdParty(); + assertThat(thirdParty.getRelationship()).isEqualTo(jurorPaperResponse.getRelationship()); + assertThat(thirdParty.getThirdPartyReason()).isEqualTo(jurorPaperResponse.getThirdPartyReason()); + } - assertThat(responseDetailDto.getExistingTitle()).isEqualTo(juror.getTitle()); - assertThat(responseDetailDto.getExistingFirstName()).isEqualTo(juror.getFirstName()); - assertThat(responseDetailDto.getExistingLastName()).isEqualTo(juror.getLastName()); - assertThat(responseDetailDto.getExistingAddressLineOne()).isEqualTo(juror.getAddressLine1()); - assertThat(responseDetailDto.getExistingAddressLineTwo()).isEqualTo(juror.getAddressLine2()); - assertThat(responseDetailDto.getExistingAddressLineThree()).isEqualTo(juror.getAddressLine3()); - assertThat(responseDetailDto.getExistingAddressTown()).isEqualTo(juror.getAddressLine4()); - assertThat(responseDetailDto.getExistingAddressCounty()).isEqualTo(juror.getAddressLine5()); - assertThat(responseDetailDto.getExistingAddressPostcode()).isEqualTo(juror.getPostcode()); + Juror juror = jurorPool.getJuror(); + + assertThat(responseDetailDto.getExistingTitle()).isEqualTo(juror.getTitle()); + assertThat(responseDetailDto.getExistingFirstName()).isEqualTo(juror.getFirstName()); + assertThat(responseDetailDto.getExistingLastName()).isEqualTo(juror.getLastName()); + assertThat(responseDetailDto.getExistingAddressLineOne()).isEqualTo(juror.getAddressLine1()); + assertThat(responseDetailDto.getExistingAddressLineTwo()).isEqualTo(juror.getAddressLine2()); + assertThat(responseDetailDto.getExistingAddressLineThree()).isEqualTo(juror.getAddressLine3()); + assertThat(responseDetailDto.getExistingAddressTown()).isEqualTo(juror.getAddressLine4()); + assertThat(responseDetailDto.getExistingAddressCounty()).isEqualTo(juror.getAddressLine5()); + assertThat(responseDetailDto.getExistingAddressPostcode()).isEqualTo(juror.getPostcode()); + }); } private PaperResponse getJurorPaperResponse(String jurorNumber) { diff --git a/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/JurorRecordControllerITest.java b/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/JurorRecordControllerITest.java index 1548df669..38e38c7de 100644 --- a/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/JurorRecordControllerITest.java +++ b/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/JurorRecordControllerITest.java @@ -469,31 +469,32 @@ void editJurorDetailsHappyPathAllFieldsRequired() { assertThat(response.getStatusCode()) .as("Expect the HTTP status to be NO CONTENT") .isEqualTo(HttpStatus.NO_CONTENT); - - JurorPool jurorPool = JurorPoolUtils.getSingleActiveJurorPool(jurorPoolRepository, jurorNumber); - Juror juror = jurorPool.getJuror(); - - //Check data has been changed and now matches what was in the dto. - assertThat(juror.getTitle()).isEqualTo(requestDto.getTitle()); - assertThat(juror.getFirstName()).isEqualTo(requestDto.getFirstName()); - assertThat(juror.getLastName()).isEqualTo(requestDto.getLastName()); - assertThat(juror.getAddressLine1()).isEqualTo(requestDto.getAddressLineOne()); - assertThat(juror.getAddressLine2()).isEqualTo(requestDto.getAddressLineTwo()); - assertThat(juror.getAddressLine3()).isEqualTo(requestDto.getAddressLineThree()); - assertThat(juror.getAddressLine4()).isEqualTo(requestDto.getAddressTown()); - assertThat(juror.getAddressLine5()).isEqualTo(requestDto.getAddressCounty()); - assertThat(juror.getPostcode()).isEqualTo(requestDto.getAddressPostcode()); - assertThat(juror.getDateOfBirth()).isEqualTo(requestDto.getDateOfBirth()); - assertThat(juror.getPhoneNumber()).isEqualTo(requestDto.getPrimaryPhone()); - assertThat(juror.getEmail()).isEqualTo(requestDto.getEmailAddress()); - assertThat(juror.getReasonableAdjustmentCode()).isEqualTo(requestDto.getSpecialNeed()); - assertThat(juror.getReasonableAdjustmentMessage()).isEqualTo(requestDto.getSpecialNeedMessage()); - - assertThat(juror.getOpticRef()).isEqualTo(requestDto.getOpticReference()); - assertThat(juror.getPendingTitle()).isEqualTo(requestDto.getPendingTitle()); - assertThat(juror.getPendingFirstName()).isEqualTo(requestDto.getPendingFirstName()); - assertThat(juror.getPendingLastName()).isEqualTo(requestDto.getPendingLastName()); - assertThat(juror.getWelsh()).isEqualTo(requestDto.getWelshLanguageRequired()); + executeInTransaction(() -> { + JurorPool jurorPool = JurorPoolUtils.getSingleActiveJurorPool(jurorPoolRepository, jurorNumber); + Juror juror = jurorPool.getJuror(); + + //Check data has been changed and now matches what was in the dto. + assertThat(juror.getTitle()).isEqualTo(requestDto.getTitle()); + assertThat(juror.getFirstName()).isEqualTo(requestDto.getFirstName()); + assertThat(juror.getLastName()).isEqualTo(requestDto.getLastName()); + assertThat(juror.getAddressLine1()).isEqualTo(requestDto.getAddressLineOne()); + assertThat(juror.getAddressLine2()).isEqualTo(requestDto.getAddressLineTwo()); + assertThat(juror.getAddressLine3()).isEqualTo(requestDto.getAddressLineThree()); + assertThat(juror.getAddressLine4()).isEqualTo(requestDto.getAddressTown()); + assertThat(juror.getAddressLine5()).isEqualTo(requestDto.getAddressCounty()); + assertThat(juror.getPostcode()).isEqualTo(requestDto.getAddressPostcode()); + assertThat(juror.getDateOfBirth()).isEqualTo(requestDto.getDateOfBirth()); + assertThat(juror.getPhoneNumber()).isEqualTo(requestDto.getPrimaryPhone()); + assertThat(juror.getEmail()).isEqualTo(requestDto.getEmailAddress()); + assertThat(juror.getReasonableAdjustmentCode()).isEqualTo(requestDto.getSpecialNeed()); + assertThat(juror.getReasonableAdjustmentMessage()).isEqualTo(requestDto.getSpecialNeedMessage()); + + assertThat(juror.getOpticRef()).isEqualTo(requestDto.getOpticReference()); + assertThat(juror.getPendingTitle()).isEqualTo(requestDto.getPendingTitle()); + assertThat(juror.getPendingFirstName()).isEqualTo(requestDto.getPendingFirstName()); + assertThat(juror.getPendingLastName()).isEqualTo(requestDto.getPendingLastName()); + assertThat(juror.getWelsh()).isEqualTo(requestDto.getWelshLanguageRequired()); + }); } @Test @@ -509,31 +510,32 @@ void editJurorDetailsHappyPathMandatoryFieldsOnly() { assertThat(response.getStatusCode()) .as("Expect the HTTP status to be NO CONTENT") .isEqualTo(HttpStatus.NO_CONTENT); - - JurorPool jurorPool = JurorPoolUtils.getSingleActiveJurorPool(jurorPoolRepository, jurorNumber); - Juror juror = jurorPool.getJuror(); - - //Check data has been changed and now matches what was in the dto. - assertThat(juror.getTitle()).isEqualTo(requestDto.getTitle()); - assertThat(juror.getFirstName()).isEqualTo(requestDto.getFirstName()); - assertThat(juror.getLastName()).isEqualTo(requestDto.getLastName()); - assertThat(juror.getAddressLine1()).isEqualTo(requestDto.getAddressLineOne()); - assertThat(juror.getAddressLine2()).isEqualTo(requestDto.getAddressLineTwo()); - assertThat(juror.getAddressLine3()).isEqualTo(requestDto.getAddressLineThree()); - assertThat(juror.getAddressLine4()).isEqualTo(requestDto.getAddressTown()); - assertThat(juror.getAddressLine5()).isEqualTo(requestDto.getAddressCounty()); - assertThat(juror.getPostcode()).isEqualTo(requestDto.getAddressPostcode()); - assertThat(juror.getDateOfBirth()).isEqualTo(requestDto.getDateOfBirth()); - assertThat(juror.getPhoneNumber()).isEqualTo(requestDto.getPrimaryPhone()); - assertThat(juror.getEmail()).isEqualTo(requestDto.getEmailAddress()); - assertThat(juror.getReasonableAdjustmentCode()).isEqualTo(requestDto.getSpecialNeed()); - assertThat(juror.getReasonableAdjustmentMessage()).isEqualTo(requestDto.getSpecialNeedMessage()); - - assertThat(juror.getOpticRef()).isEqualTo(requestDto.getOpticReference()); - assertThat(juror.getPendingTitle()).isEqualTo(requestDto.getPendingTitle()); - assertThat(juror.getPendingFirstName()).isEqualTo(requestDto.getPendingFirstName()); - assertThat(juror.getPendingLastName()).isEqualTo(requestDto.getPendingLastName()); - assertThat(juror.getWelsh()).isEqualTo(requestDto.getWelshLanguageRequired()); + executeInTransaction(() -> { + JurorPool jurorPool = JurorPoolUtils.getSingleActiveJurorPool(jurorPoolRepository, jurorNumber); + Juror juror = jurorPool.getJuror(); + + //Check data has been changed and now matches what was in the dto. + assertThat(juror.getTitle()).isEqualTo(requestDto.getTitle()); + assertThat(juror.getFirstName()).isEqualTo(requestDto.getFirstName()); + assertThat(juror.getLastName()).isEqualTo(requestDto.getLastName()); + assertThat(juror.getAddressLine1()).isEqualTo(requestDto.getAddressLineOne()); + assertThat(juror.getAddressLine2()).isEqualTo(requestDto.getAddressLineTwo()); + assertThat(juror.getAddressLine3()).isEqualTo(requestDto.getAddressLineThree()); + assertThat(juror.getAddressLine4()).isEqualTo(requestDto.getAddressTown()); + assertThat(juror.getAddressLine5()).isEqualTo(requestDto.getAddressCounty()); + assertThat(juror.getPostcode()).isEqualTo(requestDto.getAddressPostcode()); + assertThat(juror.getDateOfBirth()).isEqualTo(requestDto.getDateOfBirth()); + assertThat(juror.getPhoneNumber()).isEqualTo(requestDto.getPrimaryPhone()); + assertThat(juror.getEmail()).isEqualTo(requestDto.getEmailAddress()); + assertThat(juror.getReasonableAdjustmentCode()).isEqualTo(requestDto.getSpecialNeed()); + assertThat(juror.getReasonableAdjustmentMessage()).isEqualTo(requestDto.getSpecialNeedMessage()); + + assertThat(juror.getOpticRef()).isEqualTo(requestDto.getOpticReference()); + assertThat(juror.getPendingTitle()).isEqualTo(requestDto.getPendingTitle()); + assertThat(juror.getPendingFirstName()).isEqualTo(requestDto.getPendingFirstName()); + assertThat(juror.getPendingLastName()).isEqualTo(requestDto.getPendingLastName()); + assertThat(juror.getWelsh()).isEqualTo(requestDto.getWelshLanguageRequired()); + }); } @Test @@ -584,18 +586,19 @@ void createJurorOpticReferenceHappyPathDigital() { assertThat(response.getStatusCode()) .as("Expect the HTTP POST request to be CREATED") .isEqualTo(HttpStatus.CREATED); + executeInTransaction(() -> { + DigitalResponse digitalResponse = jurorResponseRepository.findByJurorNumber(jurorNumber); + assertThat(digitalResponse).isNotNull(); + assertThat(digitalResponse.getProcessingStatus()).isEqualTo(AWAITING_COURT_REPLY); - DigitalResponse digitalResponse = jurorResponseRepository.findByJurorNumber(jurorNumber); - assertThat(digitalResponse).isNotNull(); - assertThat(digitalResponse.getProcessingStatus()).isEqualTo(AWAITING_COURT_REPLY); - - //assert optic ref is same as set above - JurorPool jurorPool = - jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumberAndIsActive(jurorNumber, poolNumber, - true).get(); - Juror juror = jurorPool.getJuror(); - assertThat(juror.getOpticRef()).isEqualTo(opticRef); + //assert optic ref is same as set above + JurorPool jurorPool = + jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumberAndIsActive(jurorNumber, poolNumber, + true).get(); + Juror juror = jurorPool.getJuror(); + assertThat(juror.getOpticRef()).isEqualTo(opticRef); + }); } @Test @@ -612,18 +615,19 @@ void createJurorOpticReferenceHappyPathPaper() { assertThat(response.getStatusCode()) .as("Expect the HTTP POST request to be CREATED") .isEqualTo(HttpStatus.CREATED); + executeInTransaction(() -> { + PaperResponse paperResponse = + jurorPaperResponseRepository.findByJurorNumber(jurorNumber); + assertThat(paperResponse).isNotNull(); + assertThat(paperResponse.getProcessingStatus()).isEqualTo(AWAITING_COURT_REPLY); - PaperResponse paperResponse = - jurorPaperResponseRepository.findByJurorNumber(jurorNumber); - assertThat(paperResponse).isNotNull(); - assertThat(paperResponse.getProcessingStatus()).isEqualTo(AWAITING_COURT_REPLY); - - //assert optic ref is same as set above - JurorPool jurorPool = - jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumberAndIsActive(jurorNumber, poolNumber, - true).get(); - Juror juror = jurorPool.getJuror(); - assertThat(juror.getOpticRef()).isEqualTo(opticRef); + //assert optic ref is same as set above + JurorPool jurorPool = + jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumberAndIsActive(jurorNumber, poolNumber, + true).get(); + Juror juror = jurorPool.getJuror(); + assertThat(juror.getOpticRef()).isEqualTo(opticRef); + }); } @@ -2458,15 +2462,16 @@ void testRetrieveJurorDetailsByIdBureauUserHappyPath() { BureauJurorDetailDto dto = response.getBody(); assertThat(dto).isNotNull(); + executeInTransaction(() -> { + JurorPool jurorPool = + jurorPoolRepository.findByJurorJurorNumberAndIsActive(jurorNumber, true).stream().findFirst().get(); - JurorPool jurorPool = - jurorPoolRepository.findByJurorJurorNumberAndIsActive(jurorNumber, true).stream().findFirst().get(); - - validateJurorDetailsMapping(dto, jurorPool, "415220502"); - // use snapshot loc_code 415 instead of latest, reassigned loc code 435 - validateCourtDetails(dto, "415"); - validateResponseDetails(dto); - assertThat(dto.isWelshCourt()).isFalse(); + validateJurorDetailsMapping(dto, jurorPool, "415220502"); + // use snapshot loc_code 415 instead of latest, reassigned loc code 435 + validateCourtDetails(dto, "415"); + validateResponseDetails(dto); + assertThat(dto.isWelshCourt()).isFalse(); + }); } @Test @@ -2480,21 +2485,22 @@ void testRetrieveJurorDetailsLatestTransferred() { assertThat(response.getStatusCode()) .as("Expect the HTTP GET to return OK 200") .isEqualTo(HttpStatus.OK); + executeInTransaction(() -> { + BureauJurorDetailDto dto = response.getBody(); + assertThat(dto).isNotNull(); - BureauJurorDetailDto dto = response.getBody(); - assertThat(dto).isNotNull(); - - JurorPool jurorPool = - jurorPoolRepository.findByJurorJurorNumberAndIsActive(jurorNumber, true).stream().findFirst().get(); + JurorPool jurorPool = + jurorPoolRepository.findByJurorJurorNumberAndIsActive(jurorNumber, true).stream().findFirst().get(); - assertThat(dto.getCurrentOwner()) - .as("Expect current owner to be the owner of the transferred to pool") - .isEqualToIgnoringCase("471"); + assertThat(dto.getCurrentOwner()) + .as("Expect current owner to be the owner of the transferred to pool") + .isEqualToIgnoringCase("471"); - validateJurorDetailsMapping(dto, jurorPool, "415240601"); - validateCourtDetails(dto, "415"); - validateResponseDetails(dto); - assertThat(dto.isWelshCourt()).isFalse(); + validateJurorDetailsMapping(dto, jurorPool, "415240601"); + validateCourtDetails(dto, "415"); + validateResponseDetails(dto); + assertThat(dto.isWelshCourt()).isFalse(); + }); } @Test @@ -2513,16 +2519,18 @@ void testRetrieveJurorDetailsByIdBureauUserHappyPathWelshCourt() { BureauJurorDetailDto dto = response.getBody(); assertThat(dto).isNotNull(); + executeInTransaction(() -> { + JurorPool jurorPool = + jurorPoolRepository.findByOwnerAndJurorJurorNumberAndPoolPoolNumber(bureauOwner, jurorNumber, + poolNumber) + .stream().findFirst().get(); - JurorPool jurorPool = - jurorPoolRepository.findByOwnerAndJurorJurorNumberAndPoolPoolNumber(bureauOwner, jurorNumber, poolNumber) - .stream().findFirst().get(); - - validateJurorDetailsMapping(dto, jurorPool, poolNumber); - // use snapshot loc_code 415 instead of latest, reassigned loc code 435 - validateCourtDetails(dto, "457"); - validateResponseDetails(dto); - assertThat(dto.isWelshCourt()).isTrue(); + validateJurorDetailsMapping(dto, jurorPool, poolNumber); + // use snapshot loc_code 415 instead of latest, reassigned loc code 435 + validateCourtDetails(dto, "457"); + validateResponseDetails(dto); + assertThat(dto.isWelshCourt()).isTrue(); + }); } @Test @@ -2552,18 +2560,19 @@ void testRetrieveJurorDetailsByIdCourtUserHappyPathMultipleSummonsHistoryRecords BureauJurorDetailDto dto = response.getBody(); assertThat(dto).isNotNull(); + executeInTransaction(() -> { + JurorPool jurorPool = jurorPoolRepository.findByOwnerAndJurorJurorNumberAndPoolPoolNumber(courtOwner, + jurorNumber, poolNumber).get(); - JurorPool jurorPool = jurorPoolRepository.findByOwnerAndJurorJurorNumberAndPoolPoolNumber(courtOwner, - jurorNumber, poolNumber).get(); - - assertThat(response.getStatusCode()) - .as("Expect the HTTP GET to return OK 200") - .isEqualTo(HttpStatus.OK); + assertThat(response.getStatusCode()) + .as("Expect the HTTP GET to return OK 200") + .isEqualTo(HttpStatus.OK); - validateJurorDetailsMapping(dto, jurorPool, "415220502"); - // Earliest summons history event should be used (location code 415) - validateCourtDetails(dto, "415"); - validateResponseDetails(dto); + validateJurorDetailsMapping(dto, jurorPool, "415220502"); + // Earliest summons history event should be used (location code 415) + validateCourtDetails(dto, "415"); + validateResponseDetails(dto); + }); } @Test @@ -2814,47 +2823,49 @@ void testFixJurorNameCourtUserHappyPath() throws Exception { assertThat(response.getStatusCode()) .as("Expect the HTTP PATCH request to be successful") .isEqualTo(HttpStatus.NO_CONTENT); + executeInTransaction(() -> { + JurorPool jurorPool = + jurorPoolRepository.findByOwnerAndJurorJurorNumberAndPoolPoolNumber(owner, jurorNumber, + poolNumber).get(); + Juror juror = jurorPool.getJuror(); + + assertThat(juror.getTitle()).isEqualTo(dto.getTitle()); + assertThat(juror.getFirstName()).isEqualTo(dto.getFirstName()); + assertThat(juror.getLastName()).isEqualTo(dto.getLastName()); + assertThat(juror.getUserEdtq()).isEqualTo(username); + List jurorHistoryList = jurorHistoryRepository.findByJurorNumberOrderById(jurorNumber); + assertThat(jurorHistoryList.size()).isEqualTo(3); + for (JurorHistory jurorHistory : jurorHistoryList) { + assertThat(jurorHistory.getPoolNumber()).isEqualTo(jurorPool.getPoolNumber()); + assertThat(jurorHistory.getHistoryCode()).isEqualTo(HistoryCodeMod.CHANGE_PERSONAL_DETAILS); + } - JurorPool jurorPool = jurorPoolRepository.findByOwnerAndJurorJurorNumberAndPoolPoolNumber(owner, jurorNumber, - poolNumber).get(); - Juror juror = jurorPool.getJuror(); - - assertThat(juror.getTitle()).isEqualTo(dto.getTitle()); - assertThat(juror.getFirstName()).isEqualTo(dto.getFirstName()); - assertThat(juror.getLastName()).isEqualTo(dto.getLastName()); - assertThat(juror.getUserEdtq()).isEqualTo(username); - List jurorHistoryList = jurorHistoryRepository.findByJurorNumberOrderById(jurorNumber); - assertThat(jurorHistoryList.size()).isEqualTo(3); - for (JurorHistory jurorHistory : jurorHistoryList) { - assertThat(jurorHistory.getPoolNumber()).isEqualTo(jurorPool.getPoolNumber()); - assertThat(jurorHistory.getHistoryCode()).isEqualTo(HistoryCodeMod.CHANGE_PERSONAL_DETAILS); - } - - List historyInfoList = initChangedHistoryProperties(); + List historyInfoList = initChangedHistoryProperties(); - for (String historyInfo : historyInfoList) { - assertThat(jurorHistoryList.stream().filter(hist -> - hist.getOtherInformation().equalsIgnoreCase(historyInfo)) - .findFirst() - .orElse(null)) - .isNotNull(); - } + for (String historyInfo : historyInfoList) { + assertThat(jurorHistoryList.stream().filter(hist -> + hist.getOtherInformation().equalsIgnoreCase(historyInfo)) + .findFirst() + .orElse(null)) + .isNotNull(); + } - List jurorAuditHistory = - jurorRepository.findRevisions(jurorNumber).stream() - .sorted(Comparator.comparingLong(rev -> rev.getRevisionNumber().orElse(0L))) - .map(Revision::getEntity).toList(); - assertThat(jurorAuditHistory.size()).isEqualTo(2); + List jurorAuditHistory = + jurorRepository.findRevisions(jurorNumber).stream() + .sorted(Comparator.comparingLong(rev -> rev.getRevisionNumber().orElse(0L))) + .map(Revision::getEntity).toList(); + assertThat(jurorAuditHistory.size()).isEqualTo(2); - Juror originalJurorVersion = jurorAuditHistory.get(0); - assertThat(originalJurorVersion.getTitle()).isNull(); - assertThat(originalJurorVersion.getFirstName()).isEqualToIgnoringCase("FNAMEONE"); - assertThat(originalJurorVersion.getLastName()).isEqualToIgnoringCase("LNAMEONE"); + Juror originalJurorVersion = jurorAuditHistory.get(0); + assertThat(originalJurorVersion.getTitle()).isNull(); + assertThat(originalJurorVersion.getFirstName()).isEqualToIgnoringCase("FNAMEONE"); + assertThat(originalJurorVersion.getLastName()).isEqualToIgnoringCase("LNAMEONE"); - Juror updatedJurorVersion = jurorAuditHistory.get(1); - assertThat(updatedJurorVersion.getTitle()).isEqualToIgnoringCase("Mr"); - assertThat(updatedJurorVersion.getFirstName()).isEqualToIgnoringCase("First"); - assertThat(updatedJurorVersion.getLastName()).isEqualToIgnoringCase("Last"); + Juror updatedJurorVersion = jurorAuditHistory.get(1); + assertThat(updatedJurorVersion.getTitle()).isEqualToIgnoringCase("Mr"); + assertThat(updatedJurorVersion.getFirstName()).isEqualToIgnoringCase("First"); + assertThat(updatedJurorVersion.getLastName()).isEqualToIgnoringCase("Last"); + }); } @Test @@ -2876,48 +2887,50 @@ void testFixJurorNameBureauUserHappyPath() throws Exception { assertThat(response.getStatusCode()) .as("Expect the HTTP PATCH request to be successful") .isEqualTo(HttpStatus.NO_CONTENT); + executeInTransaction(() -> { + JurorPool jurorPool = + jurorPoolRepository.findByOwnerAndJurorJurorNumberAndPoolPoolNumber(owner, jurorNumber, poolNumber) + .get(); + Juror juror = jurorPool.getJuror(); + + assertThat(juror.getTitle()).isEqualTo(dto.getTitle()); + assertThat(juror.getFirstName()).isEqualTo(dto.getFirstName()); + assertThat(juror.getLastName()).isEqualTo(dto.getLastName()); + assertThat(juror.getUserEdtq()).isEqualTo(username); + + List jurorHistoryList = jurorHistoryRepository.findByJurorNumberOrderById(jurorNumber); + assertThat(jurorHistoryList.size()).isEqualTo(3); + for (JurorHistory jurorHistory : jurorHistoryList) { + assertThat(jurorHistory.getPoolNumber()).isEqualTo(jurorPool.getPoolNumber()); + assertThat(jurorHistory.getHistoryCode()).isEqualTo(HistoryCodeMod.CHANGE_PERSONAL_DETAILS); + } - JurorPool jurorPool = - jurorPoolRepository.findByOwnerAndJurorJurorNumberAndPoolPoolNumber(owner, jurorNumber, poolNumber).get(); - Juror juror = jurorPool.getJuror(); - - assertThat(juror.getTitle()).isEqualTo(dto.getTitle()); - assertThat(juror.getFirstName()).isEqualTo(dto.getFirstName()); - assertThat(juror.getLastName()).isEqualTo(dto.getLastName()); - assertThat(juror.getUserEdtq()).isEqualTo(username); - - List jurorHistoryList = jurorHistoryRepository.findByJurorNumberOrderById(jurorNumber); - assertThat(jurorHistoryList.size()).isEqualTo(3); - for (JurorHistory jurorHistory : jurorHistoryList) { - assertThat(jurorHistory.getPoolNumber()).isEqualTo(jurorPool.getPoolNumber()); - assertThat(jurorHistory.getHistoryCode()).isEqualTo(HistoryCodeMod.CHANGE_PERSONAL_DETAILS); - } - - List historyInfoList = initChangedHistoryProperties(); + List historyInfoList = initChangedHistoryProperties(); - for (String historyInfo : historyInfoList) { - assertThat(jurorHistoryList.stream().filter(hist -> - hist.getOtherInformation().equalsIgnoreCase(historyInfo)) - .findFirst() - .orElse(null)) - .isNotNull(); - } + for (String historyInfo : historyInfoList) { + assertThat(jurorHistoryList.stream().filter(hist -> + hist.getOtherInformation().equalsIgnoreCase(historyInfo)) + .findFirst() + .orElse(null)) + .isNotNull(); + } - List jurorAuditHistory = - jurorRepository.findRevisions(jurorNumber).stream() - .sorted(Comparator.comparingLong(rev -> rev.getRevisionNumber().orElse(0L))) - .map(Revision::getEntity).toList(); - assertThat(jurorAuditHistory.size()).isEqualTo(2); + List jurorAuditHistory = + jurorRepository.findRevisions(jurorNumber).stream() + .sorted(Comparator.comparingLong(rev -> rev.getRevisionNumber().orElse(0L))) + .map(Revision::getEntity).toList(); + assertThat(jurorAuditHistory.size()).isEqualTo(2); - Juror originalJurorVersion = jurorAuditHistory.get(0); - assertThat(originalJurorVersion.getTitle()).isNull(); - assertThat(originalJurorVersion.getFirstName()).isEqualToIgnoringCase("FNAMEONE"); - assertThat(originalJurorVersion.getLastName()).isEqualToIgnoringCase("LNAMEONE"); + Juror originalJurorVersion = jurorAuditHistory.get(0); + assertThat(originalJurorVersion.getTitle()).isNull(); + assertThat(originalJurorVersion.getFirstName()).isEqualToIgnoringCase("FNAMEONE"); + assertThat(originalJurorVersion.getLastName()).isEqualToIgnoringCase("LNAMEONE"); - Juror updatedJurorVersion = jurorAuditHistory.get(1); - assertThat(updatedJurorVersion.getTitle()).isEqualToIgnoringCase("Mr"); - assertThat(updatedJurorVersion.getFirstName()).isEqualToIgnoringCase("First"); - assertThat(updatedJurorVersion.getLastName()).isEqualToIgnoringCase("Last"); + Juror updatedJurorVersion = jurorAuditHistory.get(1); + assertThat(updatedJurorVersion.getTitle()).isEqualToIgnoringCase("Mr"); + assertThat(updatedJurorVersion.getFirstName()).isEqualToIgnoringCase("First"); + assertThat(updatedJurorVersion.getLastName()).isEqualToIgnoringCase("Last"); + }); } @@ -2958,59 +2971,61 @@ void testProcessNameChangeApprovalCourtUserApprovedHappyPath() throws Exception assertThat(response.getStatusCode()) .as("Expect the HTTP PATCH request to be successful") .isEqualTo(HttpStatus.NO_CONTENT); + executeInTransaction(() -> { + JurorPool jurorPool = + jurorPoolRepository.findByOwnerAndJurorJurorNumberAndPoolPoolNumber(owner, jurorNumber, poolNumber) + .get(); + Juror juror = jurorPool.getJuror(); + + assertThat(juror.getTitle()).isEqualTo("Mr"); + assertThat(juror.getFirstName()).isEqualTo("Test"); + assertThat(juror.getLastName()).isEqualTo("Person"); + assertThat(juror.getUserEdtq()).isEqualTo(username); + + assertThat(juror.getPendingTitle()).isNull(); + assertThat(juror.getPendingFirstName()).isNull(); + assertThat(juror.getPendingLastName()).isNull(); + + List jurorHistoryList = jurorHistoryRepository.findByJurorNumberOrderById(jurorNumber); + assertThat(jurorHistoryList.size()).isEqualTo(4); + for (JurorHistory jurorHistory : jurorHistoryList) { + assertThat(jurorHistory.getPoolNumber()).isEqualTo(jurorPool.getPoolNumber()); + assertThat(jurorHistory.getHistoryCode()).isEqualTo(HistoryCodeMod.CHANGE_PERSONAL_DETAILS); + } - JurorPool jurorPool = - jurorPoolRepository.findByOwnerAndJurorJurorNumberAndPoolPoolNumber(owner, jurorNumber, poolNumber).get(); - Juror juror = jurorPool.getJuror(); - - assertThat(juror.getTitle()).isEqualTo("Mr"); - assertThat(juror.getFirstName()).isEqualTo("Test"); - assertThat(juror.getLastName()).isEqualTo("Person"); - assertThat(juror.getUserEdtq()).isEqualTo(username); - - assertThat(juror.getPendingTitle()).isNull(); - assertThat(juror.getPendingFirstName()).isNull(); - assertThat(juror.getPendingLastName()).isNull(); - - List jurorHistoryList = jurorHistoryRepository.findByJurorNumberOrderById(jurorNumber); - assertThat(jurorHistoryList.size()).isEqualTo(4); - for (JurorHistory jurorHistory : jurorHistoryList) { - assertThat(jurorHistory.getPoolNumber()).isEqualTo(jurorPool.getPoolNumber()); - assertThat(jurorHistory.getHistoryCode()).isEqualTo(HistoryCodeMod.CHANGE_PERSONAL_DETAILS); - } - - List historyInfoList = initChangedHistoryProperties(); - historyInfoList.add("Name change approved"); + List historyInfoList = initChangedHistoryProperties(); + historyInfoList.add("Name change approved"); - for (String historyInfo : historyInfoList) { - assertThat(jurorHistoryList.stream().filter(hist -> - hist.getOtherInformation().equalsIgnoreCase(historyInfo)) - .findFirst() - .orElse(null)) - .isNotNull(); - } + for (String historyInfo : historyInfoList) { + assertThat(jurorHistoryList.stream().filter(hist -> + hist.getOtherInformation().equalsIgnoreCase(historyInfo)) + .findFirst() + .orElse(null)) + .isNotNull(); + } - List jurorAuditHistory = - jurorRepository.findRevisions(jurorNumber).stream() - .sorted(Comparator.comparingLong(rev -> rev.getRevisionNumber().orElse(0L))) - .map(Revision::getEntity).toList(); - assertThat(jurorAuditHistory.size()).isEqualTo(2); - - Juror originalJurorVersion = jurorAuditHistory.get(0); - assertThat(originalJurorVersion.getTitle()).isNull(); - assertThat(originalJurorVersion.getFirstName()).isEqualToIgnoringCase("FNAMEONE"); - assertThat(originalJurorVersion.getLastName()).isEqualToIgnoringCase("LNAMEONE"); - assertThat(originalJurorVersion.getPendingTitle()).isEqualToIgnoringCase("Mr"); - assertThat(originalJurorVersion.getPendingFirstName()).isEqualToIgnoringCase("Test"); - assertThat(originalJurorVersion.getPendingLastName()).isEqualToIgnoringCase("Person"); - - Juror updatedJurorVersion = jurorAuditHistory.get(1); - assertThat(updatedJurorVersion.getTitle()).isEqualToIgnoringCase("Mr"); - assertThat(updatedJurorVersion.getFirstName()).isEqualToIgnoringCase("Test"); - assertThat(updatedJurorVersion.getLastName()).isEqualToIgnoringCase("Person"); - assertThat(updatedJurorVersion.getPendingTitle()).isNull(); - assertThat(updatedJurorVersion.getPendingFirstName()).isNull(); - assertThat(updatedJurorVersion.getPendingLastName()).isNull(); + List jurorAuditHistory = + jurorRepository.findRevisions(jurorNumber).stream() + .sorted(Comparator.comparingLong(rev -> rev.getRevisionNumber().orElse(0L))) + .map(Revision::getEntity).toList(); + assertThat(jurorAuditHistory.size()).isEqualTo(2); + + Juror originalJurorVersion = jurorAuditHistory.get(0); + assertThat(originalJurorVersion.getTitle()).isNull(); + assertThat(originalJurorVersion.getFirstName()).isEqualToIgnoringCase("FNAMEONE"); + assertThat(originalJurorVersion.getLastName()).isEqualToIgnoringCase("LNAMEONE"); + assertThat(originalJurorVersion.getPendingTitle()).isEqualToIgnoringCase("Mr"); + assertThat(originalJurorVersion.getPendingFirstName()).isEqualToIgnoringCase("Test"); + assertThat(originalJurorVersion.getPendingLastName()).isEqualToIgnoringCase("Person"); + + Juror updatedJurorVersion = jurorAuditHistory.get(1); + assertThat(updatedJurorVersion.getTitle()).isEqualToIgnoringCase("Mr"); + assertThat(updatedJurorVersion.getFirstName()).isEqualToIgnoringCase("Test"); + assertThat(updatedJurorVersion.getLastName()).isEqualToIgnoringCase("Person"); + assertThat(updatedJurorVersion.getPendingTitle()).isNull(); + assertThat(updatedJurorVersion.getPendingFirstName()).isNull(); + assertThat(updatedJurorVersion.getPendingLastName()).isNull(); + }); } @Test @@ -3031,46 +3046,48 @@ void testProcessNameChangeApprovalCourtUserRejectedHappyPath() throws Exception assertThat(response.getStatusCode()) .as("Expect the HTTP PATCH request to be successful") .isEqualTo(HttpStatus.NO_CONTENT); + executeInTransaction(() -> { + JurorPool jurorPool = + jurorPoolRepository.findByOwnerAndJurorJurorNumberAndPoolPoolNumber(owner, jurorNumber, poolNumber) + .get(); + Juror juror = jurorPool.getJuror(); + assertThat(juror.getTitle()).isNull(); + assertThat(juror.getFirstName()).isEqualTo("FNAMEONE"); + assertThat(juror.getLastName()).isEqualTo("LNAMEONE"); + assertThat(juror.getUserEdtq()).isEqualTo(username); + + assertThat(juror.getPendingTitle()).isNull(); + assertThat(juror.getPendingFirstName()).isNull(); + assertThat(juror.getPendingLastName()).isNull(); + + List jurorHistoryList = jurorHistoryRepository.findByJurorNumberOrderById(jurorNumber); + assertThat(jurorHistoryList.size()).isEqualTo(1); + JurorHistory jurorHistory = jurorHistoryList.get(0); + assertThat(jurorHistory.getHistoryCode()).isEqualTo(HistoryCodeMod.CHANGE_PERSONAL_DETAILS); + assertThat(jurorHistory.getOtherInformation()).isEqualTo("Name change rejected"); - JurorPool jurorPool = - jurorPoolRepository.findByOwnerAndJurorJurorNumberAndPoolPoolNumber(owner, jurorNumber, poolNumber).get(); - Juror juror = jurorPool.getJuror(); - assertThat(juror.getTitle()).isNull(); - assertThat(juror.getFirstName()).isEqualTo("FNAMEONE"); - assertThat(juror.getLastName()).isEqualTo("LNAMEONE"); - assertThat(juror.getUserEdtq()).isEqualTo(username); - - assertThat(juror.getPendingTitle()).isNull(); - assertThat(juror.getPendingFirstName()).isNull(); - assertThat(juror.getPendingLastName()).isNull(); - - List jurorHistoryList = jurorHistoryRepository.findByJurorNumberOrderById(jurorNumber); - assertThat(jurorHistoryList.size()).isEqualTo(1); - JurorHistory jurorHistory = jurorHistoryList.get(0); - assertThat(jurorHistory.getHistoryCode()).isEqualTo(HistoryCodeMod.CHANGE_PERSONAL_DETAILS); - assertThat(jurorHistory.getOtherInformation()).isEqualTo("Name change rejected"); - - List jurorAuditHistory = - jurorRepository.findRevisions(jurorNumber).stream() - .sorted(Comparator.comparingLong(rev -> rev.getRevisionNumber().orElse(0L))) - .map(Revision::getEntity).toList(); - assertThat(jurorAuditHistory.size()).isEqualTo(2); - - Juror originalJurorVersion = jurorAuditHistory.get(0); - assertThat(originalJurorVersion.getTitle()).isNull(); - assertThat(originalJurorVersion.getFirstName()).isEqualToIgnoringCase("FNAMEONE"); - assertThat(originalJurorVersion.getLastName()).isEqualToIgnoringCase("LNAMEONE"); - assertThat(originalJurorVersion.getPendingTitle()).isEqualToIgnoringCase("Mr"); - assertThat(originalJurorVersion.getPendingFirstName()).isEqualToIgnoringCase("Test"); - assertThat(originalJurorVersion.getPendingLastName()).isEqualToIgnoringCase("Person"); - - Juror updatedJurorVersion = jurorAuditHistory.get(1); - assertThat(updatedJurorVersion.getTitle()).isNull(); - assertThat(updatedJurorVersion.getFirstName()).isEqualToIgnoringCase("FNAMEONE"); - assertThat(updatedJurorVersion.getLastName()).isEqualToIgnoringCase("LNAMEONE"); - assertThat(updatedJurorVersion.getPendingTitle()).isNull(); - assertThat(updatedJurorVersion.getPendingFirstName()).isNull(); - assertThat(updatedJurorVersion.getPendingLastName()).isNull(); + List jurorAuditHistory = + jurorRepository.findRevisions(jurorNumber).stream() + .sorted(Comparator.comparingLong(rev -> rev.getRevisionNumber().orElse(0L))) + .map(Revision::getEntity).toList(); + assertThat(jurorAuditHistory.size()).isEqualTo(2); + + Juror originalJurorVersion = jurorAuditHistory.get(0); + assertThat(originalJurorVersion.getTitle()).isNull(); + assertThat(originalJurorVersion.getFirstName()).isEqualToIgnoringCase("FNAMEONE"); + assertThat(originalJurorVersion.getLastName()).isEqualToIgnoringCase("LNAMEONE"); + assertThat(originalJurorVersion.getPendingTitle()).isEqualToIgnoringCase("Mr"); + assertThat(originalJurorVersion.getPendingFirstName()).isEqualToIgnoringCase("Test"); + assertThat(originalJurorVersion.getPendingLastName()).isEqualToIgnoringCase("Person"); + + Juror updatedJurorVersion = jurorAuditHistory.get(1); + assertThat(updatedJurorVersion.getTitle()).isNull(); + assertThat(updatedJurorVersion.getFirstName()).isEqualToIgnoringCase("FNAMEONE"); + assertThat(updatedJurorVersion.getLastName()).isEqualToIgnoringCase("LNAMEONE"); + assertThat(updatedJurorVersion.getPendingTitle()).isNull(); + assertThat(updatedJurorVersion.getPendingFirstName()).isNull(); + assertThat(updatedJurorVersion.getPendingLastName()).isNull(); + }); } @@ -5275,11 +5292,12 @@ void markJurorAsRespondedCourtHappyPath() throws Exception { assertThat(response.getStatusCode()) .as("Expect the HTTP POST request to be OK") .isEqualTo(HttpStatus.OK); + executeInTransaction(() -> { + JurorPool jurorPool = jurorPoolRepository.findByJurorJurorNumber(jurorNumber); - JurorPool jurorPool = jurorPoolRepository.findByJurorJurorNumber(jurorNumber); - - assertThat(jurorPool.getStatus().getStatus()).isEqualTo(IJurorStatus.RESPONDED); - assertThat(jurorPool.getReturnDate()).isEqualTo(LocalDate.now().minusWeeks(2)); + assertThat(jurorPool.getStatus().getStatus()).isEqualTo(IJurorStatus.RESPONDED); + assertThat(jurorPool.getReturnDate()).isEqualTo(LocalDate.now().minusWeeks(2)); + }); } @@ -5299,12 +5317,12 @@ void markJurorAsRespondedBureauHappyPath() throws Exception { assertThat(response.getStatusCode()) .as("Expect the HTTP POST request to be OK") .isEqualTo(HttpStatus.OK); + executeInTransaction(() -> { + JurorPool jurorPool = jurorPoolRepository.findByJurorJurorNumber(jurorNumber); - JurorPool jurorPool = jurorPoolRepository.findByJurorJurorNumber(jurorNumber); - - assertThat(jurorPool.getStatus().getStatus()).isEqualTo(IJurorStatus.RESPONDED); - assertThat(jurorPool.getReturnDate()).isEqualTo(LocalDate.now().minusWeeks(2)); - + assertThat(jurorPool.getStatus().getStatus()).isEqualTo(IJurorStatus.RESPONDED); + assertThat(jurorPool.getReturnDate()).isEqualTo(LocalDate.now().minusWeeks(2)); + }); } @Test diff --git a/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/JurorResponseControllerITest.java b/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/JurorResponseControllerITest.java index 1b29915d7..15a50040d 100644 --- a/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/JurorResponseControllerITest.java +++ b/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/JurorResponseControllerITest.java @@ -90,8 +90,6 @@ class JurorResponseControllerITest extends AbstractIntegrationTest { private static final String JUROR_NUMBER_111222333 = "111222333"; private static final String JUROR_NUMBER_222222222 = "222222222"; private static final String JUROR_NUMBER_555555555 = "555555555"; - private static final String JUROR_NUMBER_333222111 = "333222111"; - private static final String JUROR_NUMBER_352004504 = "352004504"; private static final String URI_PERSONAL_DETAILS = "/api/v1/moj/juror-response/juror/%s/details/personal"; private static final String URI_RETRIEVE_JUROR_RESPONSES = "/api/v1/moj/juror-response/retrieve"; @@ -429,7 +427,7 @@ void updateResponseStatusHappyNonMergeStatusChangeAwaitingJurorContact() throws final User staff = userRepository.findByUsername("testlogin"); // juror number in sql file // assert db state before status change - validateDatabaseStateBefore(); + assertDatabaseStateBefore(); final BureauResponseStatusUpdateDto dto = BureauResponseStatusUpdateDto.builder() .status(newProcessingStatus) @@ -439,23 +437,24 @@ void updateResponseStatusHappyNonMergeStatusChangeAwaitingJurorContact() throws sendRequestAndValidateRequest(bureauJwt, dto, description, uri); // assert db state after status change. - validateDatabaseStateAfter(); + assertDatabaseStateAfter(); final String jurorNumber = "644892530"; - - List jurorPools = jurorPoolRepository.findByJurorJurorNumberAndIsActive( - jurorNumber, true); - JurorPool jurorPool = jurorPools.get(0); - Juror juror = jurorPool.getJuror(); - - // assert the changes to pool were not applied - assertThat(juror.getLastName()).isEqualTo("CASTILLO"); - - // assert change to processing status was audited - assertThat(jdbcTemplate.queryForObject("SELECT NEW_PROCESSING_STATUS FROM juror_mod.JUROR_RESPONSE_AUD " - + "WHERE JUROR_NUMBER = '644892530'", String.class)).isEqualTo(newProcessingStatus.toString()); - assertThat(jdbcTemplate.queryForObject("SELECT OLD_PROCESSING_STATUS FROM juror_mod.JUROR_RESPONSE_AUD " - + "WHERE JUROR_NUMBER = '644892530'", String.class)).isEqualTo("TODO"); + executeInTransaction(() -> { + List jurorPools = jurorPoolRepository.findByJurorJurorNumberAndIsActive( + jurorNumber, true); + JurorPool jurorPool = jurorPools.get(0); + Juror juror = jurorPool.getJuror(); + + // assert the changes to pool were not applied + assertThat(juror.getLastName()).isEqualTo("CASTILLO"); + + // assert change to processing status was audited + assertThat(jdbcTemplate.queryForObject("SELECT NEW_PROCESSING_STATUS FROM juror_mod.JUROR_RESPONSE_AUD " + + "WHERE JUROR_NUMBER = '644892530'", String.class)).isEqualTo(newProcessingStatus.toString()); + assertThat(jdbcTemplate.queryForObject("SELECT OLD_PROCESSING_STATUS FROM juror_mod.JUROR_RESPONSE_AUD " + + "WHERE JUROR_NUMBER = '644892530'", String.class)).isEqualTo("TODO"); + }); // assert staff assignment on response has changed and been audited validateStaffAssignment(staff); @@ -482,7 +481,7 @@ void updateResponseStatusHappyNonMergeStatusChangeAwaitingCourt() throws Excepti .build()); // assert db state before status change - validateDatabaseStateBefore(); + assertDatabaseStateBefore(); final BureauResponseStatusUpdateDto dto = BureauResponseStatusUpdateDto.builder() .status(newProcessingStatus) @@ -492,22 +491,24 @@ void updateResponseStatusHappyNonMergeStatusChangeAwaitingCourt() throws Excepti sendRequestAndValidateRequest(bureauJwt, dto, description, uri); // assert db state after status change. - validateDatabaseStateAfter(); + assertDatabaseStateAfter(); final String jurorNumber = "644892530"; - List jurorPools = jurorPoolRepository.findByJurorJurorNumberAndIsActive( - jurorNumber, true); - JurorPool jurorPool = jurorPools.get(0); - Juror juror = jurorPool.getJuror(); - - // assert the changes to pool were not applied - assertThat(juror.getLastName()).isEqualTo("CASTILLO"); - - // assert change to processing status was audited - assertThat(jdbcTemplate.queryForObject("SELECT NEW_PROCESSING_STATUS FROM juror_mod.JUROR_RESPONSE_AUD " - + "WHERE JUROR_NUMBER = '644892530'", String.class)).isEqualTo(newProcessingStatus.toString()); - assertThat(jdbcTemplate.queryForObject("SELECT OLD_PROCESSING_STATUS FROM juror_mod.JUROR_RESPONSE_AUD " - + "WHERE JUROR_NUMBER = '644892530'", String.class)).isEqualTo("TODO"); + executeInTransaction(() -> { + List jurorPools = jurorPoolRepository.findByJurorJurorNumberAndIsActive( + jurorNumber, true); + JurorPool jurorPool = jurorPools.get(0); + Juror juror = jurorPool.getJuror(); + + // assert the changes to pool were not applied + assertThat(juror.getLastName()).isEqualTo("CASTILLO"); + + // assert change to processing status was audited + assertThat(jdbcTemplate.queryForObject("SELECT NEW_PROCESSING_STATUS FROM juror_mod.JUROR_RESPONSE_AUD " + + "WHERE JUROR_NUMBER = '644892530'", String.class)).isEqualTo(newProcessingStatus.toString()); + assertThat(jdbcTemplate.queryForObject("SELECT OLD_PROCESSING_STATUS FROM juror_mod.JUROR_RESPONSE_AUD " + + "WHERE JUROR_NUMBER = '644892530'", String.class)).isEqualTo("TODO"); + }); } /** @@ -532,7 +533,7 @@ void updateResponseStatusHappyNonMergeStatusChangeAwaitingTranslation() throws E .build()); // assert db state before status change - validateDatabaseStateBefore(); + assertDatabaseStateBefore(); final BureauResponseStatusUpdateDto dto = BureauResponseStatusUpdateDto.builder() .status(newProcessingStatus) @@ -542,21 +543,22 @@ void updateResponseStatusHappyNonMergeStatusChangeAwaitingTranslation() throws E sendRequestAndValidateRequest(bureauJwt, dto, description, uri); // assert db state after status change. - validateDatabaseStateAfter(); - - final String jurorNumber = "644892530"; - List jurorPools = jurorPoolRepository.findByJurorJurorNumberAndIsActive(jurorNumber, true); - JurorPool jurorPool = jurorPools.get(0); - Juror juror = jurorPool.getJuror(); - - // assert the changes to pool were not applied - assertThat(juror.getLastName()).isEqualTo("CASTILLO"); - - // assert change to processing status was audited - assertThat(jdbcTemplate.queryForObject("SELECT NEW_PROCESSING_STATUS FROM juror_mod.JUROR_RESPONSE_AUD " - + "WHERE JUROR_NUMBER = '644892530'", String.class)).isEqualTo(newProcessingStatus.toString()); - assertThat(jdbcTemplate.queryForObject("SELECT OLD_PROCESSING_STATUS FROM juror_mod.JUROR_RESPONSE_AUD " - + "WHERE JUROR_NUMBER = '644892530'", String.class)).isEqualTo("TODO"); + assertDatabaseStateAfter(); + executeInTransaction(() -> { + final String jurorNumber = "644892530"; + List jurorPools = jurorPoolRepository.findByJurorJurorNumberAndIsActive(jurorNumber, true); + JurorPool jurorPool = jurorPools.get(0); + Juror juror = jurorPool.getJuror(); + + // assert the changes to pool were not applied + assertThat(juror.getLastName()).isEqualTo("CASTILLO"); + + // assert change to processing status was audited + assertThat(jdbcTemplate.queryForObject("SELECT NEW_PROCESSING_STATUS FROM juror_mod.JUROR_RESPONSE_AUD " + + "WHERE JUROR_NUMBER = '644892530'", String.class)).isEqualTo(newProcessingStatus.toString()); + assertThat(jdbcTemplate.queryForObject("SELECT OLD_PROCESSING_STATUS FROM juror_mod.JUROR_RESPONSE_AUD " + + "WHERE JUROR_NUMBER = '644892530'", String.class)).isEqualTo("TODO"); + }); } /** @@ -581,7 +583,7 @@ void updateResponseStatusHappyNonMergeStatusChangeTodo() throws Exception { .build()); // assert db state before status change - validateDatabaseStateBefore(); + assertDatabaseStateBefore(); final BureauResponseStatusUpdateDto dto = BureauResponseStatusUpdateDto.builder() .status(newProcessingStatus) @@ -591,24 +593,25 @@ void updateResponseStatusHappyNonMergeStatusChangeTodo() throws Exception { sendRequestAndValidateRequest(bureauJwt, dto, description, uri); // assert db state after status change. - validateDatabaseStateAfter(); - - final String jurorNumber = "644892530"; - List jurorPools = jurorPoolRepository.findByJurorJurorNumberAndIsActive(jurorNumber, true); - JurorPool jurorPool = jurorPools.get(0); - Juror juror = jurorPool.getJuror(); - - // assert the changes to pool were not applied - assertThat(juror.getLastName()).isEqualTo("CASTILLO"); - - // assert change to processing status was audited - assertThat(jdbcTemplate.queryForObject("SELECT NEW_PROCESSING_STATUS FROM juror_mod.JUROR_RESPONSE_AUD " - + "WHERE JUROR_NUMBER = '644892530'", String.class)).isEqualTo(newProcessingStatus.toString()); - assertThat(jdbcTemplate.queryForObject("SELECT OLD_PROCESSING_STATUS FROM juror_mod.JUROR_RESPONSE_AUD " - + "WHERE JUROR_NUMBER = '644892530'", String.class)).isEqualTo("TODO"); + assertDatabaseStateAfter(); + executeInTransaction(() -> { + final String jurorNumber = "644892530"; + List jurorPools = jurorPoolRepository.findByJurorJurorNumberAndIsActive(jurorNumber, true); + JurorPool jurorPool = jurorPools.get(0); + Juror juror = jurorPool.getJuror(); + + // assert the changes to pool were not applied + assertThat(juror.getLastName()).isEqualTo("CASTILLO"); + + // assert change to processing status was audited + assertThat(jdbcTemplate.queryForObject("SELECT NEW_PROCESSING_STATUS FROM juror_mod.JUROR_RESPONSE_AUD " + + "WHERE JUROR_NUMBER = '644892530'", String.class)).isEqualTo(newProcessingStatus.toString()); + assertThat(jdbcTemplate.queryForObject("SELECT OLD_PROCESSING_STATUS FROM juror_mod.JUROR_RESPONSE_AUD " + + "WHERE JUROR_NUMBER = '644892530'", String.class)).isEqualTo("TODO"); + }); } - private void validateDatabaseStateBefore() { + private void assertDatabaseStateBefore() { assertThat(jurorPoolRepository.count()).isEqualTo(1); assertThat(jurorDigitalResponseRepository.count()).isEqualTo(1); assertThat(auditRepository.count()).isEqualTo(0); @@ -616,7 +619,7 @@ private void validateDatabaseStateBefore() { assertThat(jurorResponseCjsEmploymentRepository.count()).isEqualTo(1); } - private void validateDatabaseStateAfter() { + private void assertDatabaseStateAfter() { assertThat(jurorPoolRepository.count()).isEqualTo(1); assertThat(jurorDigitalResponseRepository.count()).isEqualTo(1); assertThat(auditRepository.count()).isEqualTo(1); @@ -949,92 +952,102 @@ private JurorPersonalDetailsDto createJurorPersonalDetailsDto() { private void assertUpdatedPaperResponsePersonalDetails(String jurorNumber, JurorPersonalDetailsDto jurorPersonalDetailsDto) { - - PaperResponse updatedJurorPaperResponseOpt = jurorPaperResponseRepository.findByJurorNumber(jurorNumber); - assertThat(updatedJurorPaperResponseOpt).isNotNull(); - PaperResponse updatedJurorPaperResponse = updatedJurorPaperResponseOpt; - - assertThat(updatedJurorPaperResponse.getTitle()).isEqualTo(jurorPersonalDetailsDto.getTitle()); - assertThat(updatedJurorPaperResponse.getFirstName()).isEqualTo(jurorPersonalDetailsDto.getFirstName()); - assertThat(updatedJurorPaperResponse.getLastName()).isEqualTo(jurorPersonalDetailsDto.getLastName()); - - assertThat(updatedJurorPaperResponse.getDateOfBirth()).isEqualTo(jurorPersonalDetailsDto.getDateOfBirth()); - assertThat(updatedJurorPaperResponse.getEmail()).isEqualTo(jurorPersonalDetailsDto.getEmailAddress()); - - assertThat(updatedJurorPaperResponse.getAddressLine1()).isEqualTo(jurorPersonalDetailsDto.getAddressLineOne()); - assertThat(updatedJurorPaperResponse.getAddressLine2()).isEqualTo(jurorPersonalDetailsDto.getAddressLineTwo()); - assertThat(updatedJurorPaperResponse.getAddressLine3()).isEqualTo(jurorPersonalDetailsDto - .getAddressLineThree()); - assertThat(updatedJurorPaperResponse.getAddressLine4()).isEqualTo(jurorPersonalDetailsDto.getAddressTown()); - assertThat(updatedJurorPaperResponse.getAddressLine5()).isEqualTo(jurorPersonalDetailsDto.getAddressCounty()); - - JurorPaperResponseDto.ThirdParty thirdParty = jurorPersonalDetailsDto.getThirdParty(); - if (thirdParty != null) { - assertThat(updatedJurorPaperResponse.getRelationship()).isEqualTo(thirdParty.getRelationship()); - assertThat(updatedJurorPaperResponse.getThirdPartyReason()).isEqualTo(thirdParty.getThirdPartyReason()); - } + executeInTransaction(() -> { + PaperResponse updatedJurorPaperResponseOpt = jurorPaperResponseRepository.findByJurorNumber(jurorNumber); + assertThat(updatedJurorPaperResponseOpt).isNotNull(); + PaperResponse updatedJurorPaperResponse = updatedJurorPaperResponseOpt; + + assertThat(updatedJurorPaperResponse.getTitle()).isEqualTo(jurorPersonalDetailsDto.getTitle()); + assertThat(updatedJurorPaperResponse.getFirstName()).isEqualTo(jurorPersonalDetailsDto.getFirstName()); + assertThat(updatedJurorPaperResponse.getLastName()).isEqualTo(jurorPersonalDetailsDto.getLastName()); + + assertThat(updatedJurorPaperResponse.getDateOfBirth()).isEqualTo(jurorPersonalDetailsDto.getDateOfBirth()); + assertThat(updatedJurorPaperResponse.getEmail()).isEqualTo(jurorPersonalDetailsDto.getEmailAddress()); + + assertThat(updatedJurorPaperResponse.getAddressLine1()).isEqualTo( + jurorPersonalDetailsDto.getAddressLineOne()); + assertThat(updatedJurorPaperResponse.getAddressLine2()).isEqualTo( + jurorPersonalDetailsDto.getAddressLineTwo()); + assertThat(updatedJurorPaperResponse.getAddressLine3()).isEqualTo(jurorPersonalDetailsDto + .getAddressLineThree()); + assertThat(updatedJurorPaperResponse.getAddressLine4()).isEqualTo(jurorPersonalDetailsDto.getAddressTown()); + assertThat(updatedJurorPaperResponse.getAddressLine5()).isEqualTo( + jurorPersonalDetailsDto.getAddressCounty()); + + JurorPaperResponseDto.ThirdParty thirdParty = jurorPersonalDetailsDto.getThirdParty(); + if (thirdParty != null) { + assertThat(updatedJurorPaperResponse.getRelationship()).isEqualTo(thirdParty.getRelationship()); + assertThat(updatedJurorPaperResponse.getThirdPartyReason()).isEqualTo(thirdParty.getThirdPartyReason()); + } + }); } private void validateUpdatedDigitalResponsePersonalDetails(String jurorNumber, DigitalResponse originalJurorDigitalResponse, JurorPersonalDetailsDto jurorPersonalDetailsDto) { - DigitalResponse updatedJurorDigitalResponse = jurorDigitalResponseRepository.findByJurorNumber(jurorNumber); - assertThat(updatedJurorDigitalResponse).isNotNull(); - - assertThat(updatedJurorDigitalResponse.getTitle()).isEqualTo(originalJurorDigitalResponse.getTitle()); - assertThat(updatedJurorDigitalResponse.getFirstName()).isEqualTo(originalJurorDigitalResponse.getFirstName()); - assertThat(updatedJurorDigitalResponse.getLastName()).isEqualTo(originalJurorDigitalResponse.getLastName()); - - assertThat(updatedJurorDigitalResponse.getDateOfBirth()).isEqualTo( - jurorPersonalDetailsDto.getDateOfBirth()); - assertThat(updatedJurorDigitalResponse.getEmail()).isEqualTo(originalJurorDigitalResponse.getEmail()); - - assertThat(updatedJurorDigitalResponse.getAddressLine1()) - .isEqualTo(originalJurorDigitalResponse.getAddressLine1()); - assertThat(updatedJurorDigitalResponse.getAddressLine2()) - .isEqualTo(originalJurorDigitalResponse.getAddressLine2()); - assertThat(updatedJurorDigitalResponse.getAddressLine3()) - .isEqualTo(originalJurorDigitalResponse.getAddressLine3()); - assertThat(updatedJurorDigitalResponse.getAddressLine4()) - .isEqualTo(originalJurorDigitalResponse.getAddressLine4()); - assertThat(updatedJurorDigitalResponse.getAddressLine5()) - .isEqualTo(originalJurorDigitalResponse.getAddressLine5()); - - JurorPaperResponseDto.ThirdParty thirdParty = jurorPersonalDetailsDto.getThirdParty(); - if (thirdParty != null) { - assertThat(updatedJurorDigitalResponse.getRelationship()).isEqualTo( - originalJurorDigitalResponse.getRelationship()); - assertThat(updatedJurorDigitalResponse.getThirdPartyReason()).isEqualTo( - originalJurorDigitalResponse.getThirdPartyReason()); - } + executeInTransaction(() -> { + DigitalResponse updatedJurorDigitalResponse = jurorDigitalResponseRepository.findByJurorNumber(jurorNumber); + assertThat(updatedJurorDigitalResponse).isNotNull(); + + assertThat(updatedJurorDigitalResponse.getTitle()).isEqualTo(originalJurorDigitalResponse.getTitle()); + assertThat(updatedJurorDigitalResponse.getFirstName()).isEqualTo( + originalJurorDigitalResponse.getFirstName()); + assertThat(updatedJurorDigitalResponse.getLastName()).isEqualTo(originalJurorDigitalResponse.getLastName()); + + assertThat(updatedJurorDigitalResponse.getDateOfBirth()).isEqualTo( + jurorPersonalDetailsDto.getDateOfBirth()); + assertThat(updatedJurorDigitalResponse.getEmail()).isEqualTo(originalJurorDigitalResponse.getEmail()); + + assertThat(updatedJurorDigitalResponse.getAddressLine1()) + .isEqualTo(originalJurorDigitalResponse.getAddressLine1()); + assertThat(updatedJurorDigitalResponse.getAddressLine2()) + .isEqualTo(originalJurorDigitalResponse.getAddressLine2()); + assertThat(updatedJurorDigitalResponse.getAddressLine3()) + .isEqualTo(originalJurorDigitalResponse.getAddressLine3()); + assertThat(updatedJurorDigitalResponse.getAddressLine4()) + .isEqualTo(originalJurorDigitalResponse.getAddressLine4()); + assertThat(updatedJurorDigitalResponse.getAddressLine5()) + .isEqualTo(originalJurorDigitalResponse.getAddressLine5()); + + JurorPaperResponseDto.ThirdParty thirdParty = jurorPersonalDetailsDto.getThirdParty(); + if (thirdParty != null) { + assertThat(updatedJurorDigitalResponse.getRelationship()).isEqualTo( + originalJurorDigitalResponse.getRelationship()); + assertThat(updatedJurorDigitalResponse.getThirdPartyReason()).isEqualTo( + originalJurorDigitalResponse.getThirdPartyReason()); + } + }); } private void validateAgeDisqualificationMergedJurorRecord(String jurorNumber, ReplyMethod replyMethod, int statusCode) { - AbstractJurorResponse jurorResponse = createGenericJurorResponse(replyMethod, jurorNumber); - JurorPool jurorPool = - jurorPoolRepository.findByJurorJurorNumberAndIsActiveOrderByPoolReturnDateDesc(jurorNumber, true).get(0); - Juror juror = jurorPool.getJuror(); - - assertThat(juror.getPendingTitle()).isEqualToIgnoringCase(jurorResponse.getTitle()); - assertThat(juror.getPendingFirstName()).isEqualToIgnoringCase(jurorResponse.getFirstName()); - assertThat(juror.getPendingLastName()).isEqualToIgnoringCase(jurorResponse.getLastName()); - - assertThat(juror.getAddressLine1()).isEqualToIgnoringCase(jurorResponse.getAddressLine1()); - assertThat(juror.getAddressLine2()).isEqualToIgnoringCase(jurorResponse.getAddressLine2()); - assertThat(juror.getAddressLine3()).isEqualToIgnoringCase(jurorResponse.getAddressLine3()); - assertThat(juror.getAddressLine4()).isEqualToIgnoringCase(jurorResponse.getAddressLine4()); - assertThat(juror.getAddressLine5()).isEqualToIgnoringCase(jurorResponse.getAddressLine5()); - assertThat(juror.getPostcode()).isEqualToIgnoringCase(jurorResponse.getPostcode()); - - assertThat(juror.isResponded()).isTrue(); - assertThat(jurorPool.getStatus().getStatus()).isEqualTo(statusCode); - - if (Boolean.TRUE.equals(jurorResponse.getWelsh())) { - assertThat(juror.getWelsh()).isTrue(); - } else { - assertThat(juror.getWelsh()).isNull(); - } + executeInTransaction(() -> { + AbstractJurorResponse jurorResponse = createGenericJurorResponse(replyMethod, jurorNumber); + JurorPool jurorPool = + jurorPoolRepository.findByJurorJurorNumberAndIsActiveOrderByPoolReturnDateDesc(jurorNumber, true) + .get(0); + Juror juror = jurorPool.getJuror(); + + assertThat(juror.getPendingTitle()).isEqualToIgnoringCase(jurorResponse.getTitle()); + assertThat(juror.getPendingFirstName()).isEqualToIgnoringCase(jurorResponse.getFirstName()); + assertThat(juror.getPendingLastName()).isEqualToIgnoringCase(jurorResponse.getLastName()); + + assertThat(juror.getAddressLine1()).isEqualToIgnoringCase(jurorResponse.getAddressLine1()); + assertThat(juror.getAddressLine2()).isEqualToIgnoringCase(jurorResponse.getAddressLine2()); + assertThat(juror.getAddressLine3()).isEqualToIgnoringCase(jurorResponse.getAddressLine3()); + assertThat(juror.getAddressLine4()).isEqualToIgnoringCase(jurorResponse.getAddressLine4()); + assertThat(juror.getAddressLine5()).isEqualToIgnoringCase(jurorResponse.getAddressLine5()); + assertThat(juror.getPostcode()).isEqualToIgnoringCase(jurorResponse.getPostcode()); + + assertThat(juror.isResponded()).isTrue(); + assertThat(jurorPool.getStatus().getStatus()).isEqualTo(statusCode); + + if (Boolean.TRUE.equals(jurorResponse.getWelsh())) { + assertThat(juror.getWelsh()).isTrue(); + } else { + assertThat(juror.getWelsh()).isNull(); + } + }); } private AbstractJurorResponse createGenericJurorResponse(ReplyMethod replyMethod, String jurorNumber) { @@ -1046,89 +1059,100 @@ private AbstractJurorResponse createGenericJurorResponse(ReplyMethod replyMethod } private void verifyAgeDisqualification(String jurorNumber) { - JurorPool jurorPool = - jurorPoolRepository.findByJurorJurorNumberAndIsActiveOrderByPoolReturnDateDesc(jurorNumber, true).get(0); - Juror juror = jurorPool.getJuror(); - - assertThat(juror.isResponded()).as("Juror record should be updated and marked as responded").isTrue(); - assertThat(juror.getDisqualifyDate()).as("Juror record should be updated with a disqualified date") - .isNotNull(); - assertThat(juror.getDisqualifyCode()).as("Juror record should be updated with a disqualification code") - .isEqualTo(DisqualifyCode.A.toString()); - assertThat(jurorPool.getNextDate()).as("Juror record is no longer due to attend, expect NEXT_DATE to be " - + "null").isNull(); - - LocalDate yesterday = LocalDate.now().minusDays(1); - - List jurorHistoryList = jurorHistoryRepository.findByJurorNumberAndDateCreatedGreaterThanEqual( - jurorPool.getJurorNumber(), yesterday); - assertThat( - jurorHistoryList.stream() - .anyMatch(ph -> ph.getHistoryCode().equals(HistoryCodeMod.DISQUALIFY_POOL_MEMBER))) - .as("Expect history record to be created for juror disqualification").isTrue(); - assertThat( - jurorHistoryList.stream().anyMatch(ph -> ph.getHistoryCode().equals(HistoryCodeMod.WITHDRAWAL_LETTER))).as( - "Expect history record to be created for disqualification letter").isTrue(); - - List bulkPrintData = bulkPrintDataRepository.findByJurorNo(jurorNumber); - - assertThat(bulkPrintData.size()).as("Expect a single disqualification letter to exist " - + "(existing record updated)").isEqualTo(1); + executeInTransaction(() -> { + JurorPool jurorPool = + jurorPoolRepository.findByJurorJurorNumberAndIsActiveOrderByPoolReturnDateDesc(jurorNumber, true) + .get(0); + Juror juror = jurorPool.getJuror(); + + assertThat(juror.isResponded()).as("Juror record should be updated and marked as responded").isTrue(); + assertThat(juror.getDisqualifyDate()).as("Juror record should be updated with a disqualified date") + .isNotNull(); + assertThat(juror.getDisqualifyCode()).as("Juror record should be updated with a disqualification code") + .isEqualTo(DisqualifyCode.A.toString()); + assertThat(jurorPool.getNextDate()).as("Juror record is no longer due to attend, expect NEXT_DATE to be " + + "null").isNull(); + + LocalDate yesterday = LocalDate.now().minusDays(1); + + List jurorHistoryList = + jurorHistoryRepository.findByJurorNumberAndDateCreatedGreaterThanEqual( + jurorPool.getJurorNumber(), yesterday); + assertThat( + jurorHistoryList.stream() + .anyMatch(ph -> ph.getHistoryCode().equals(HistoryCodeMod.DISQUALIFY_POOL_MEMBER))) + .as("Expect history record to be created for juror disqualification").isTrue(); + assertThat( + jurorHistoryList.stream() + .anyMatch(ph -> ph.getHistoryCode().equals(HistoryCodeMod.WITHDRAWAL_LETTER))).as( + "Expect history record to be created for disqualification letter").isTrue(); + + List bulkPrintData = bulkPrintDataRepository.findByJurorNo(jurorNumber); + + assertThat(bulkPrintData.size()).as("Expect a single disqualification letter to exist " + + "(existing record updated)").isEqualTo(1); + }); } private void verifyStraightThroughAgeDisqualificationNotProcessed(String jurorNumber, ReplyMethod replyMethod, int statusCode) { - AbstractJurorResponse jurorResponse = createGenericJurorResponse(replyMethod, jurorNumber); - JurorPool jurorPool = - jurorPoolRepository.findByJurorJurorNumberAndIsActiveOrderByPoolReturnDateDesc(jurorNumber, true).get(0); - final Juror juror = jurorPool.getJuror(); - - assertThat(jurorResponse.getProcessingComplete()) - .as("No automatic processing, so processing complete flag remains unset").isNotEqualTo(Boolean.TRUE); - assertThat(jurorResponse.getCompletedAt()).as("No automatic processing, so completed date remains unset") - .isNull(); - assertThat(jurorResponse.getProcessingStatus()).as("No automatic processing, so processing status " - + "remains as To Do").isEqualTo(ProcessingStatus.TODO); - - if (statusCode != IJurorStatus.RESPONDED) { - assertThat(juror.isResponded()).as("No automatic processing, so juror record is not set to " - + "responded").isFalse(); - } - assertThat(juror.getDisqualifyDate()).as("No automatic processing, so disqualification date remains " - + "unset").isNull(); - assertThat(juror.getDisqualifyCode()).as("No automatic processing, so disqualification code remains " - + "unset").isNull(); - assertThat(jurorPool.getStatus().getStatus()).as("No automatic processing, so status remains unchanged") - .isEqualTo(statusCode); - assertThat(jurorPool.getNextDate()).as("No automatic processing, so next date remains set").isNotNull(); - - LocalDate yesterday = LocalDate.now().minusDays(1); - - List jurorHistoryList = jurorHistoryRepository.findByJurorNumberAndDateCreatedGreaterThanEqual( - jurorPool.getJurorNumber(), yesterday); - assertThat( - jurorHistoryList.stream() - .anyMatch(ph -> ph.getHistoryCode().equals(HistoryCodeMod.DISQUALIFY_POOL_MEMBER))).as( - "Expect no history record to be created for juror disqualification").isFalse(); - assertThat( - jurorHistoryList.stream().anyMatch(ph -> ph.getHistoryCode().equals(HistoryCodeMod.WITHDRAWAL_LETTER))) - .as("Expect no history record to be created for disqualification letter").isFalse(); - - List bulkPrintData = bulkPrintDataRepository.findByJurorNo(jurorNumber); - - assertThat(bulkPrintData.size()).as("No disqualification letter expected to be generated") - .isEqualTo(0); + executeInTransaction(() -> { + AbstractJurorResponse jurorResponse = createGenericJurorResponse(replyMethod, jurorNumber); + JurorPool jurorPool = + jurorPoolRepository.findByJurorJurorNumberAndIsActiveOrderByPoolReturnDateDesc(jurorNumber, true) + .get(0); + final Juror juror = jurorPool.getJuror(); + + assertThat(jurorResponse.getProcessingComplete()) + .as("No automatic processing, so processing complete flag remains unset").isNotEqualTo(Boolean.TRUE); + assertThat(jurorResponse.getCompletedAt()).as("No automatic processing, so completed date remains unset") + .isNull(); + assertThat(jurorResponse.getProcessingStatus()).as("No automatic processing, so processing status " + + "remains as To Do").isEqualTo(ProcessingStatus.TODO); + + if (statusCode != IJurorStatus.RESPONDED) { + assertThat(juror.isResponded()).as("No automatic processing, so juror record is not set to " + + "responded").isFalse(); + } + assertThat(juror.getDisqualifyDate()).as("No automatic processing, so disqualification date remains " + + "unset").isNull(); + assertThat(juror.getDisqualifyCode()).as("No automatic processing, so disqualification code remains " + + "unset").isNull(); + assertThat(jurorPool.getStatus().getStatus()).as("No automatic processing, so status remains unchanged") + .isEqualTo(statusCode); + assertThat(jurorPool.getNextDate()).as("No automatic processing, so next date remains set").isNotNull(); + + LocalDate yesterday = LocalDate.now().minusDays(1); + + List jurorHistoryList = + jurorHistoryRepository.findByJurorNumberAndDateCreatedGreaterThanEqual( + jurorPool.getJurorNumber(), yesterday); + assertThat( + jurorHistoryList.stream() + .anyMatch(ph -> ph.getHistoryCode().equals(HistoryCodeMod.DISQUALIFY_POOL_MEMBER))).as( + "Expect no history record to be created for juror disqualification").isFalse(); + assertThat( + jurorHistoryList.stream().anyMatch(ph -> ph.getHistoryCode().equals(HistoryCodeMod.WITHDRAWAL_LETTER))) + .as("Expect no history record to be created for disqualification letter").isFalse(); + + List bulkPrintData = bulkPrintDataRepository.findByJurorNo(jurorNumber); + + assertThat(bulkPrintData.size()).as("No disqualification letter expected to be generated") + .isEqualTo(0); + }); } private void validateStaffAssignment(User staff) { - assertThat(staff).isNotNull(); - assertThat(staff.getUsername()).isEqualTo("testlogin"); - assertThat(jdbcTemplate.queryForObject("SELECT COUNT(*) FROM juror_mod.user_juror_response_audit", - Integer.class)) - .isEqualTo(1); - assertThat(jdbcTemplate.queryForObject("SELECT assigned_to FROM juror_mod.user_juror_response_audit", - String.class)) - .isEqualTo("testlogin"); + executeInTransaction(() -> { + assertThat(staff).isNotNull(); + assertThat(staff.getUsername()).isEqualTo("testlogin"); + assertThat(jdbcTemplate.queryForObject("SELECT COUNT(*) FROM juror_mod.user_juror_response_audit", + Integer.class)) + .isEqualTo(1); + assertThat(jdbcTemplate.queryForObject("SELECT assigned_to FROM juror_mod.user_juror_response_audit", + String.class)) + .isEqualTo("testlogin"); + }); } private void sendRequestAndValidateRequest(String bureauJwt, BureauResponseStatusUpdateDto dto, diff --git a/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/LetterControllerITest.java b/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/LetterControllerITest.java index f06a16960..f410b4c4e 100644 --- a/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/LetterControllerITest.java +++ b/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/LetterControllerITest.java @@ -3115,6 +3115,8 @@ void reissueInformationRequestLetterHappy() { @Nested @DisplayName("Summons Reminder Letter") + //False positive + @SuppressWarnings("PMD.JUnitTestsShouldIncludeAssert") class SummonsReminderLetter { @Test @Sql({"/db/mod/truncate.sql", "/db/letter/LetterController_initSummonsReminderLetter.sql"}) @@ -3126,38 +3128,41 @@ void summonsReminderLetterHappy() { .datePrinted(LocalDate.of(2024, 1, 31)) .build() ); - - // verify letter added - BulkPrintData bulkPrintData = bulkPrintDataRepository.findByJurorNumberFormCodeDatePrinted("555555561", - FormCode.ENG_SUMMONS_REMINDER.getCode(), LocalDate.now()).orElseThrow(() -> Failures.instance() - .failure("Expected record to be found in bulk print data table")); - - verifyDataResponse(bulkPrintData, "561", Boolean.FALSE, LocalDate.now(), null, false); - - // verify history added - List updatedJurorHistoryList = jurorHistoryRepository - .findByJurorNumberAndDateCreatedGreaterThanEqual("555555561", LocalDate.now()); - assertThat(updatedJurorHistoryList).as("History record should have been added").isNotNull(); - assertThat(updatedJurorHistoryList.size()).as("Expect 1 history record").isEqualTo(1); - verifyHistoryResponse(updatedJurorHistoryList.get(0), "561", "504"); + executeInTransaction(() -> { + // verify letter added + BulkPrintData bulkPrintData = + bulkPrintDataRepository.findByJurorNumberFormCodeDatePrinted("555555561", + FormCode.ENG_SUMMONS_REMINDER.getCode(), LocalDate.now()) + .orElseThrow(() -> Failures.instance() + .failure("Expected record to be found in bulk print data table")); + + verifyDataResponse(bulkPrintData, "561", Boolean.FALSE, LocalDate.now(), null, false); + // verify history added + List updatedJurorHistoryList = jurorHistoryRepository + .findByJurorNumberAndDateCreatedGreaterThanEqual("555555561", LocalDate.now()); + assertThat(updatedJurorHistoryList).as("History record should have been added").isNotNull(); + assertThat(updatedJurorHistoryList.size()).as("Expect 1 history record").isEqualTo(1); + verifyHistoryResponse(updatedJurorHistoryList.get(0), "561", "504"); + + }); } @Test @Sql({"/db/mod/truncate.sql", "/db/letter/LetterController_initSummonsReminderLetter.sql"}) void summonsReminderLetterDoesNotExistCreateNewLetter() { final String jurorNumber = "555555570"; - - // first verify letter doesn't already exist for today's date (this will be the date the letter is to + // first verify letter doesn't already exist for today's date (this will be the date the letter + // is to // be created) assertThat(bulkPrintDataRepository.findByJurorNumberFormCodeDatePrinted(jurorNumber, FormCode.ENG_SUMMONS_REMINDER.getCode(), LocalDate.now())) .as("Existing letter should not exist for today's date").isEmpty(); - - // verify history does not already exist for today's date - List updatedJurorHistoryList = jurorHistoryRepository - .findByJurorNumberAndDateCreatedGreaterThanEqual(jurorNumber, LocalDate.now()); - assertThat(updatedJurorHistoryList).as("History record should not exist").isEmpty(); - + executeInTransaction(() -> { + // verify history does not already exist for today's date + List updatedJurorHistoryList = jurorHistoryRepository + .findByJurorNumberAndDateCreatedGreaterThanEqual(jurorNumber, LocalDate.now()); + assertThat(updatedJurorHistoryList).as("History record should not exist").isEmpty(); + }); // invoke api triggerValidBureau( ReissueLetterRequestDto.ReissueLetterRequestData.builder() @@ -3166,21 +3171,24 @@ void summonsReminderLetterDoesNotExistCreateNewLetter() { .datePrinted(LocalDate.now()) .build() ); - - // verify letter added - BulkPrintData bulkPrintData = bulkPrintDataRepository.findByJurorNumberFormCodeDatePrinted(jurorNumber, - FormCode.ENG_SUMMONS_REMINDER.getCode(), LocalDate.now()) - .orElseThrow( - () -> Failures.instance().failure("Expected record to be found in bulk print data table")); - - verifyDataResponse(bulkPrintData, "570", Boolean.FALSE, LocalDate.now(), null, false); - - // verify history added - updatedJurorHistoryList = jurorHistoryRepository - .findByJurorNumberAndDateCreatedGreaterThanEqual(jurorNumber, LocalDate.now()); - assertThat(updatedJurorHistoryList).as("History record should have been added").isNotNull(); - assertThat(updatedJurorHistoryList.size()).isEqualTo(1); - verifyHistoryResponse(updatedJurorHistoryList.get(0), "570", "405"); + executeInTransaction(() -> { + // verify letter added + BulkPrintData bulkPrintData = + bulkPrintDataRepository.findByJurorNumberFormCodeDatePrinted(jurorNumber, + FormCode.ENG_SUMMONS_REMINDER.getCode(), LocalDate.now()) + .orElseThrow( + () -> Failures.instance() + .failure("Expected record to be found in bulk print data table")); + + verifyDataResponse(bulkPrintData, "570", Boolean.FALSE, LocalDate.now(), null, false); + + // verify history added + List updatedJurorHistoryList = jurorHistoryRepository + .findByJurorNumberAndDateCreatedGreaterThanEqual(jurorNumber, LocalDate.now()); + assertThat(updatedJurorHistoryList).as("History record should have been added").isNotNull(); + assertThat(updatedJurorHistoryList.size()).isEqualTo(1); + verifyHistoryResponse(updatedJurorHistoryList.get(0), "570", "405"); + }); } @Test @@ -3198,21 +3206,24 @@ void summonsReminderReprintAfterLetterIsCreatedAndIsPending() { ); // verify letter added - BulkPrintData bulkPrintData = bulkPrintDataRepository.findByJurorNumberFormCodeDatePrinted(jurorNumber, - FormCode.ENG_SUMMONS_REMINDER.getCode(), LocalDate.now()) - .orElseThrow( - () -> Failures.instance().failure("Expected record to be found in bulk print data table")); - - verifyDataResponse(bulkPrintData, "570", Boolean.FALSE, LocalDate.now(), null, false); - - // verify history added - List updatedJurorHistoryList = jurorHistoryRepository - .findByJurorNumberAndDateCreatedGreaterThanEqual(jurorNumber, LocalDate.now()); - assertThat(updatedJurorHistoryList).isNotNull(); - assertThat(updatedJurorHistoryList.size()).isEqualTo(1); - - verifyHistoryResponse(updatedJurorHistoryList.get(0), "570", "405"); - + executeInTransaction(() -> { + BulkPrintData bulkPrintData = + bulkPrintDataRepository.findByJurorNumberFormCodeDatePrinted(jurorNumber, + FormCode.ENG_SUMMONS_REMINDER.getCode(), LocalDate.now()) + .orElseThrow( + () -> Failures.instance() + .failure("Expected record to be found in bulk print data table")); + + verifyDataResponse(bulkPrintData, "570", Boolean.FALSE, LocalDate.now(), null, false); + + // verify history added + List updatedJurorHistoryList = jurorHistoryRepository + .findByJurorNumberAndDateCreatedGreaterThanEqual(jurorNumber, LocalDate.now()); + assertThat(updatedJurorHistoryList).isNotNull(); + assertThat(updatedJurorHistoryList.size()).isEqualTo(1); + + verifyHistoryResponse(updatedJurorHistoryList.get(0), "570", "405"); + }); // invoke api again for same juror and letter final URI uri = URI.create("/api/v1/moj/letter/reissue-letter"); final String bureauJwt = createJwtBureau("BUREAU_USER"); @@ -3293,17 +3304,19 @@ void summonsReminderInitialLetterEnglishReprintAsWelsh() { assertThat(bulkPrintDataRepository.findByJurorNumberFormCodeDatePrinted(jurorNumber, FormCode.ENG_SUMMONS_REMINDER.getCode(), LocalDate.now())) .as("Existing letter should not exist for today's date").isEmpty(); - - // verify a previous letter exists - should be english - BulkPrintData bulkPrintData = bulkPrintDataRepository.findByJurorNumberFormCodeAndExtracted(jurorNumber, - FormCode.ENG_SUMMONS_REMINDER.getCode(), true) - .orElseThrow( - () -> Failures.instance().failure("Expected record to be found in bulk print data table")); - - verifyDataResponse(bulkPrintData, "575", true, - LocalDate.of(2024, 1, 31), - LocalDate.of(2024, 1, 18), false); - + executeInTransaction(() -> { + // verify a previous letter exists - should be english + BulkPrintData bulkPrintData = + bulkPrintDataRepository.findByJurorNumberFormCodeAndExtracted(jurorNumber, + FormCode.ENG_SUMMONS_REMINDER.getCode(), true) + .orElseThrow( + () -> Failures.instance() + .failure("Expected record to be found in bulk print data table")); + + verifyDataResponse(bulkPrintData, "575", true, + LocalDate.of(2024, 1, 31), + LocalDate.of(2024, 1, 18), false); + }); // invoke service to reissue letter triggerValidBureau( ReissueLetterRequestDto.ReissueLetterRequestData.builder() @@ -3313,20 +3326,24 @@ void summonsReminderInitialLetterEnglishReprintAsWelsh() { .build() ); - // verify letter added - should be welsh (welsh flag was updated - juror now wants welsh letters) - bulkPrintData = bulkPrintDataRepository.findByJurorNumberFormCodeDatePrinted(jurorNumber, - FormCode.BI_SUMMONS_REMINDER.getCode(), LocalDate.now()) - .orElseThrow( - () -> Failures.instance().failure("Expected record to be found in bulk print data table")); - - verifyDataResponse(bulkPrintData, "575", Boolean.FALSE, LocalDate.now(), null, true); - - // verify history added - List updatedJurorHistoryList = jurorHistoryRepository - .findByJurorNumberAndDateCreatedGreaterThanEqual(jurorNumber, LocalDate.now()); - assertThat(updatedJurorHistoryList).as("History record should have been added").isNotNull(); - assertThat(updatedJurorHistoryList.size()).isEqualTo(1); - verifyHistoryResponse(updatedJurorHistoryList.get(0), "575", "405"); + executeInTransaction(() -> { + // verify letter added - should be welsh (welsh flag was updated - juror now wants welsh letters) + BulkPrintData bulkPrintData = + bulkPrintDataRepository.findByJurorNumberFormCodeDatePrinted(jurorNumber, + FormCode.BI_SUMMONS_REMINDER.getCode(), LocalDate.now()) + .orElseThrow( + () -> Failures.instance() + .failure("Expected record to be found in bulk print data table")); + + verifyDataResponse(bulkPrintData, "575", Boolean.FALSE, LocalDate.now(), null, true); + + // verify history added + List updatedJurorHistoryList = jurorHistoryRepository + .findByJurorNumberAndDateCreatedGreaterThanEqual(jurorNumber, LocalDate.now()); + assertThat(updatedJurorHistoryList).as("History record should have been added").isNotNull(); + assertThat(updatedJurorHistoryList.size()).isEqualTo(1); + verifyHistoryResponse(updatedJurorHistoryList.get(0), "575", "405"); + }); } @Test @@ -3340,14 +3357,17 @@ void summonsReminderInitialLetterWelshReprintAsEnglish() { FormCode.ENG_SUMMONS_REMINDER.getCode(), LocalDate.now())) .as("Existing letter should not exist for today's date").isEmpty(); - // verify a previous letter exists - should be welsh - BulkPrintData bulkPrintData = bulkPrintDataRepository.findByJurorNumberFormCodeAndExtracted(jurorNumber, - FormCode.BI_SUMMONS_REMINDER.getCode(), true) - .orElseThrow(() -> Failures.instance().failure("Expected record exist in bulk print data table")); - - verifyDataResponse(bulkPrintData, "576", true, - LocalDate.of(2024, 1, 31), LocalDate.of(2024, 1, 18), true); - + executeInTransaction(() -> { + // verify a previous letter exists - should be welsh + BulkPrintData bulkPrintData = + bulkPrintDataRepository.findByJurorNumberFormCodeAndExtracted(jurorNumber, + FormCode.BI_SUMMONS_REMINDER.getCode(), true) + .orElseThrow( + () -> Failures.instance().failure("Expected record exist in bulk print data table")); + + verifyDataResponse(bulkPrintData, "576", true, + LocalDate.of(2024, 1, 31), LocalDate.of(2024, 1, 18), true); + }); // invoke service to reissue letter triggerValidBureau( ReissueLetterRequestDto.ReissueLetterRequestData.builder() @@ -3356,22 +3376,27 @@ void summonsReminderInitialLetterWelshReprintAsEnglish() { .datePrinted(LocalDate.of(2024, 1, 31)) .build() ); - - // verify letter added - should be english (welsh flag was updated - juror now wants english letters) - bulkPrintData = bulkPrintDataRepository.findByJurorNumberFormCodeDatePrinted(jurorNumber, - FormCode.ENG_SUMMONS_REMINDER.getCode(), LocalDate.now()) - .orElseThrow(() -> Failures.instance().failure("Expect record to exit in bulk print data table")); - - verifyDataResponse(bulkPrintData, "576", Boolean.FALSE, LocalDate.now(), null, false); - - // verify history added - List updatedJurorHistoryList = jurorHistoryRepository - .findByJurorNumberAndDateCreatedGreaterThanEqual(jurorNumber, LocalDate.now()); - assertThat(updatedJurorHistoryList).as("History record should have been added").isNotNull(); - assertThat(updatedJurorHistoryList.size()).isEqualTo(1); - verifyHistoryResponse(updatedJurorHistoryList.get(0), "576", "405"); + executeInTransaction(() -> { + // verify letter added - should be english (welsh flag was updated - juror now wants english + // letters) + BulkPrintData bulkPrintData = + bulkPrintDataRepository.findByJurorNumberFormCodeDatePrinted(jurorNumber, + FormCode.ENG_SUMMONS_REMINDER.getCode(), LocalDate.now()) + .orElseThrow( + () -> Failures.instance().failure("Expect record to exit in bulk print data table")); + + verifyDataResponse(bulkPrintData, "576", Boolean.FALSE, LocalDate.now(), null, false); + + // verify history added + List updatedJurorHistoryList = jurorHistoryRepository + .findByJurorNumberAndDateCreatedGreaterThanEqual(jurorNumber, LocalDate.now()); + assertThat(updatedJurorHistoryList).as("History record should have been added").isNotNull(); + assertThat(updatedJurorHistoryList.size()).isEqualTo(1); + verifyHistoryResponse(updatedJurorHistoryList.get(0), "576", "405"); + }); } + @Test @Sql({"/db/mod/truncate.sql", "/db/letter/LetterController_initSummonsReminderLetter.sql"}) void summonsReminderReprintNotAllowedForLettersNotExtractedYet() { @@ -3407,6 +3432,8 @@ void summonsReminderReprintNotAllowedForLettersNotExtractedYet() { @Test @Sql({"/db/mod/truncate.sql", "/db/letter/LetterController_initSummonsReminderLetter.sql"}) + //False positive + @SuppressWarnings("PMD.JUnitTestsShouldIncludeAssert") void summonsReminderReissueLetterUsingADifferentCreationDate() { triggerValidBureau( ReissueLetterRequestDto.ReissueLetterRequestData.builder() @@ -3415,46 +3442,48 @@ void summonsReminderReissueLetterUsingADifferentCreationDate() { .datePrinted(LocalDate.of(2024, 1, 25)) .build() ); - - // verify letter added - a new letter will be created for today's date if a match is not found - BulkPrintData bulkPrintData = bulkPrintDataRepository - .findByJurorNumberFormCodeDatePrinted("555555561", - FormCode.ENG_SUMMONS_REMINDER.getCode(), LocalDate.now()) - .orElseThrow( - () -> Failures.instance().failure("Expected record to be found in bulk print data table")); - - verifyDataResponse(bulkPrintData, "561", Boolean.FALSE, LocalDate.now(), null, false); - - // verify history added - List updatedJurorHistoryList = jurorHistoryRepository - .findByJurorNumberAndDateCreatedGreaterThanEqual("555555561", LocalDate.now()); - assertThat(updatedJurorHistoryList).as("History record should have been added").isNotNull(); - assertThat(updatedJurorHistoryList.size()).isEqualTo(1); - verifyHistoryResponse(updatedJurorHistoryList.get(0), "561", "504"); + executeInTransaction(() -> { + // verify letter added - a new letter will be created for today's date if a match is not found + BulkPrintData bulkPrintData = bulkPrintDataRepository + .findByJurorNumberFormCodeDatePrinted("555555561", + FormCode.ENG_SUMMONS_REMINDER.getCode(), LocalDate.now()) + .orElseThrow( + () -> Failures.instance().failure("Expected record to be found in bulk print data table")); + + verifyDataResponse(bulkPrintData, "561", Boolean.FALSE, LocalDate.now(), null, false); + // verify history added + List updatedJurorHistoryList = jurorHistoryRepository + .findByJurorNumberAndDateCreatedGreaterThanEqual("555555561", LocalDate.now()); + assertThat(updatedJurorHistoryList).as("History record should have been added").isNotNull(); + assertThat(updatedJurorHistoryList.size()).isEqualTo(1); + verifyHistoryResponse(updatedJurorHistoryList.get(0), "561", "504"); + }); } private void verifyDataResponse(BulkPrintData bulkPrintData, String jurorNumberPostfix, Boolean extractedFlag, LocalDate creationDate, LocalDate reprintRecDate, Boolean isWelsh) { - assertThat(bulkPrintData).isNotNull(); - - assertThat(bulkPrintData.isExtractedFlag()).isEqualTo(extractedFlag); - assertThat(bulkPrintData.getJurorNo()).isEqualTo("555555" + jurorNumberPostfix); - assertThat(bulkPrintData.getCreationDate()).isEqualTo(creationDate); - assertThat(bulkPrintData.isExtractedFlag()).isEqualTo(extractedFlag); - assertThat(bulkPrintData.isDigitalComms()).isFalse(); - - verifyRecDate(bulkPrintData, reprintRecDate); - if (isWelsh) { - assertThat(bulkPrintData.getFormAttribute().getDirectoryName()).isEqualTo("WEL_NON_RESP"); - assertThat(bulkPrintData.getFormAttribute().getMaxRecLen()).isEqualTo(691); - assertThat(bulkPrintData.getFormAttribute().getFormType()).isEqualTo("5228C"); - } else { - assertThat(bulkPrintData.getFormAttribute().getDirectoryName()).isEqualTo("ENG_NON_RESP"); - assertThat(bulkPrintData.getFormAttribute().getMaxRecLen()).isEqualTo(670); - assertThat(bulkPrintData.getFormAttribute().getFormType()).isEqualTo("5228"); - } + executeInTransaction(() -> { + assertThat(bulkPrintData).isNotNull(); + + assertThat(bulkPrintData.isExtractedFlag()).isEqualTo(extractedFlag); + assertThat(bulkPrintData.getJurorNo()).isEqualTo("555555" + jurorNumberPostfix); + assertThat(bulkPrintData.getCreationDate()).isEqualTo(creationDate); + assertThat(bulkPrintData.isExtractedFlag()).isEqualTo(extractedFlag); + assertThat(bulkPrintData.isDigitalComms()).isFalse(); + + verifyRecDate(bulkPrintData, reprintRecDate); + if (isWelsh) { + assertThat(bulkPrintData.getFormAttribute().getDirectoryName()).isEqualTo("WEL_NON_RESP"); + assertThat(bulkPrintData.getFormAttribute().getMaxRecLen()).isEqualTo(691); + assertThat(bulkPrintData.getFormAttribute().getFormType()).isEqualTo("5228C"); + } else { + assertThat(bulkPrintData.getFormAttribute().getDirectoryName()).isEqualTo("ENG_NON_RESP"); + assertThat(bulkPrintData.getFormAttribute().getMaxRecLen()).isEqualTo(670); + assertThat(bulkPrintData.getFormAttribute().getFormType()).isEqualTo("5228"); + } + }); } private void verifyHistoryResponse(JurorHistory index, String jurorPostfix, String poolNumberPostfix) { diff --git a/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/ManagePoolControllerITest.java b/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/ManagePoolControllerITest.java index 83ac5f2f6..4b14b9255 100644 --- a/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/ManagePoolControllerITest.java +++ b/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/ManagePoolControllerITest.java @@ -1808,37 +1808,40 @@ public void test_getPoolMonitoringStats_wrongPoolTypeForCourtLocation() throws E } private void validateReassignedJuror(String jurorNumber, String sourcePool, String receivingPool) { - // check the old record is now inactive - JurorPool oldJurorPool = jurorPoolRepository.findByOwnerAndJurorJurorNumberAndPoolPoolNumber("400", jurorNumber, - sourcePool).get(); - assertThat(oldJurorPool).isNotNull(); - assertThat(oldJurorPool.getStatus().getStatus()).isEqualTo(8L); - assertThat(oldJurorPool.getNextDate()).isNull(); - - // check there is a new record created for reassigned juror - JurorPool newJurorPool = jurorPoolRepository.findByOwnerAndJurorJurorNumberAndPoolPoolNumber("400", jurorNumber, - receivingPool).get(); - assertThat(newJurorPool).isNotNull(); - assertThat(newJurorPool.getStatus().getStatus()).isEqualTo(2L); - - assertThat(newJurorPool.getIsActive()).isTrue(); - - verifyCopiedFields(oldJurorPool.getJuror(), newJurorPool.getJuror()); - - // database should have service start date 10 days in the future - LocalDate serviceStartDate = LocalDate.now().plusDays(10); - assertThat(newJurorPool.getNextDate()).isEqualTo(serviceStartDate); - - // check there is a cert letter queued, should be one only - Optional confirmLetter = bulkPrintDataRepository.findLatestPendingLetterForJuror(jurorNumber, - FormCode.ENG_CONFIRMATION.getCode()); - - if (confirmLetter.isPresent()) { - assertThat(confirmLetter.get().getJurorNo()).isEqualTo(jurorNumber); - } else { - fail("No confirmation letter found for juror: " + jurorNumber); - } - + executeInTransaction(() -> { + // check the old record is now inactive + JurorPool oldJurorPool = + jurorPoolRepository.findByOwnerAndJurorJurorNumberAndPoolPoolNumber("400", jurorNumber, + sourcePool).get(); + assertThat(oldJurorPool).isNotNull(); + assertThat(oldJurorPool.getStatus().getStatus()).isEqualTo(8L); + assertThat(oldJurorPool.getNextDate()).isNull(); + + // check there is a new record created for reassigned juror + JurorPool newJurorPool = + jurorPoolRepository.findByOwnerAndJurorJurorNumberAndPoolPoolNumber("400", jurorNumber, + receivingPool).get(); + assertThat(newJurorPool).isNotNull(); + assertThat(newJurorPool.getStatus().getStatus()).isEqualTo(2L); + + assertThat(newJurorPool.getIsActive()).isTrue(); + + verifyCopiedFields(oldJurorPool.getJuror(), newJurorPool.getJuror()); + + // database should have service start date 10 days in the future + LocalDate serviceStartDate = LocalDate.now().plusDays(10); + assertThat(newJurorPool.getNextDate()).isEqualTo(serviceStartDate); + + // check there is a cert letter queued, should be one only + Optional confirmLetter = bulkPrintDataRepository.findLatestPendingLetterForJuror(jurorNumber, + FormCode.ENG_CONFIRMATION.getCode()); + + if (confirmLetter.isPresent()) { + assertThat(confirmLetter.get().getJurorNo()).isEqualTo(jurorNumber); + } else { + fail("No confirmation letter found for juror: " + jurorNumber); + } + }); } private static void verifyCopiedFields(Juror oldJuror, Juror newJuror) { @@ -1966,220 +1969,223 @@ private void transferJurorPoolValidateSourceJurorPool(String jurorNumber, String private void transferJurorPoolValidateNewlyCreatedJurorPool(String jurorNumber, String sourcePoolNumber, String targetPoolNumber, String targetLocCode, LocalDate targetStartDate, String currentUser) { - JurorPool sourceJurorPool = - jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumberAndIsActive(jurorNumber, - sourcePoolNumber, true).get(); - JurorPool targetJurorPool = - jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumberAndIsActive(jurorNumber, - targetPoolNumber, true).get(); - - // derived properties - assertThat(targetJurorPool.getOwner()) - .as("Expect property to be derived for new juror record") - .isEqualTo(targetLocCode); - assertThat(targetJurorPool.getPoolNumber()) - .as("Expect property to be derived for new juror record") - .isEqualTo(targetPoolNumber); - assertThat(targetJurorPool.getNextDate()) - .as("Expect property to be derived for new juror record") - .isEqualTo(targetStartDate); - assertThat(targetJurorPool.getUserEdtq()) - .as("Expect property to be derived for new juror record") - .isEqualTo(currentUser); - assertThat(targetJurorPool.getCourt().getLocCode()) - .as("Expect property to be derived for new juror record") - .isEqualTo(targetLocCode); - - // copied properties - Juror targetJuror = targetJurorPool.getJuror(); - Juror sourceJuror = sourceJurorPool.getJuror(); - assertThat(targetJuror.getJurorNumber()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJurorPool.getJurorNumber()); - assertThat(targetJuror.getPollNumber()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJuror.getPollNumber()); - assertThat(targetJuror.getTitle()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJuror.getTitle()); - assertThat(targetJuror.getFirstName()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJuror.getFirstName()); - assertThat(targetJuror.getLastName()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJuror.getLastName()); - assertThat(targetJuror.getDateOfBirth().compareTo(sourceJuror.getDateOfBirth())) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(0); - assertThat(targetJuror.getAddressLine1()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJuror.getAddressLine1()); - assertThat(targetJuror.getAddressLine2()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJuror.getAddressLine2()); - assertThat(targetJuror.getAddressLine3()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJuror.getAddressLine3()); - assertThat(targetJuror.getAddressLine4()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJuror.getAddressLine4()); - assertThat(targetJuror.getAddressLine5()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJuror.getAddressLine5()); - assertThat(targetJuror.getPostcode()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJuror.getPostcode()); - assertThat(targetJuror.getPhoneNumber()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJuror.getPhoneNumber()); - assertThat(targetJuror.getAltPhoneNumber()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJuror.getAltPhoneNumber()); - assertThat(targetJuror.getWorkPhone()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJuror.getWorkPhone()); - assertThat(targetJuror.getWorkPhoneExtension()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJuror.getWorkPhoneExtension()); - assertThat(targetJurorPool.getDeferralDate()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(targetJurorPool.getDeferralDate()); - assertThat(targetJuror.isResponded()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJuror.isResponded()); - assertThat(targetJuror.getExcusalDate()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJuror.getExcusalDate()); - assertThat(targetJuror.getExcusalCode()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJuror.getExcusalCode()); - assertThat(targetJuror.getExcusalRejected()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJuror.getExcusalRejected()); - assertThat(targetJuror.getDisqualifyDate()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJuror.getDisqualifyDate()); - assertThat(targetJuror.getDisqualifyCode()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJuror.getDisqualifyCode()); - assertThat(targetJuror.getNotes()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJuror.getNotes()); - assertThat(targetJurorPool.getNoAttendances()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJurorPool.getNoAttendances()); - assertThat(targetJurorPool.getIsActive()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJurorPool.getIsActive()); - assertThat(targetJuror.getNoDefPos()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJuror.getNoDefPos()); - assertThat(targetJuror.getPermanentlyDisqualify()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJuror.getPermanentlyDisqualify()); - assertThat(targetJuror.getReasonableAdjustmentCode()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJuror.getReasonableAdjustmentCode()); - assertThat(targetJuror.getReasonableAdjustmentMessage()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJuror.getReasonableAdjustmentMessage()); - assertThat(targetJuror.getSortCode()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJuror.getSortCode()); - assertThat(targetJuror.getBankAccountName()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJuror.getBankAccountName()); - assertThat(targetJuror.getBankAccountNumber()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJuror.getBankAccountNumber()); - assertThat(targetJuror.getBuildingSocietyRollNumber()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJuror.getBuildingSocietyRollNumber()); - assertThat(targetJurorPool.getWasDeferred()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJurorPool.getWasDeferred()); - assertThat(targetJurorPool.getIdChecked()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJurorPool.getIdChecked()); - assertThat(targetJurorPool.getPostpone()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJurorPool.getPostpone()); - assertThat(targetJuror.getWelsh()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJuror.getWelsh()); - assertThat(targetJuror.getPoliceCheck()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJuror.getPoliceCheck()); - assertThat(targetJuror.getEmail()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJuror.getEmail()); - assertThat(targetJuror.getContactPreference()) - .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) - .isEqualTo(sourceJuror.getContactPreference()); - - assertThat(targetJuror.getOpticRef()) - .as("Expect optic reference to be copied from source juror") - .isEqualTo(sourceJuror.getOpticRef()); - - // default/not copied properties - assertThat(targetJurorPool.getTimesSelected()) - .as(EXPECT_PROPERTY_TO_BE_USE_A_DEFAULT_VALUE) - .isNull(); - assertThat(targetJurorPool.getLocation()) - .as(EXPECT_PROPERTY_TO_BE_USE_A_DEFAULT_VALUE) - .isNull(); - assertThat(targetJurorPool.getStatus().getStatus()) - .as(EXPECT_PROPERTY_TO_BE_USE_A_DEFAULT_VALUE) - .isEqualTo(2L); - assertThat(targetJurorPool.getNoAttended()) - .as(EXPECT_PROPERTY_TO_BE_USE_A_DEFAULT_VALUE) - .isNull(); - assertThat(targetJurorPool.getFailedToAttendCount()) - .as(EXPECT_PROPERTY_TO_BE_USE_A_DEFAULT_VALUE) - .isNull(); - assertThat(targetJurorPool.getUnauthorisedAbsenceCount()) - .as(EXPECT_PROPERTY_TO_BE_USE_A_DEFAULT_VALUE) - .isNull(); - assertThat(targetJurorPool.getEditTag()) - .as(EXPECT_PROPERTY_TO_BE_USE_A_DEFAULT_VALUE) - .isNull(); - assertThat(targetJurorPool.getOnCall()) - .as(EXPECT_PROPERTY_TO_BE_USE_A_DEFAULT_VALUE) - .isFalse(); - assertThat(targetJurorPool.getSmartCard()) - .as(EXPECT_PROPERTY_TO_BE_USE_A_DEFAULT_VALUE) - .isNull(); - assertThat(targetJurorPool.getPaidCash()) - .as(EXPECT_PROPERTY_TO_BE_USE_A_DEFAULT_VALUE) - .isNull(); - assertThat(targetJurorPool.getScanCode()) - .as(EXPECT_PROPERTY_TO_BE_USE_A_DEFAULT_VALUE) - .isNull(); - assertThat(targetJuror.getSummonsFile()) - .as(EXPECT_PROPERTY_TO_BE_USE_A_DEFAULT_VALUE) - .isNull(); - assertThat(targetJurorPool.getReminderSent()) - .as(EXPECT_PROPERTY_TO_BE_USE_A_DEFAULT_VALUE) - .isNull(); - assertThat(targetJuror.getNotifications()) - .as(EXPECT_PROPERTY_TO_BE_USE_A_DEFAULT_VALUE) - .isEqualTo(0); - assertThat(targetJurorPool.getTransferDate()) - .as(EXPECT_PROPERTY_TO_BE_USE_A_DEFAULT_VALUE) - .isNull(); + executeInTransaction(() -> { + JurorPool sourceJurorPool = + jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumberAndIsActive(jurorNumber, + sourcePoolNumber, true).get(); + JurorPool targetJurorPool = + jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumberAndIsActive(jurorNumber, + targetPoolNumber, true).get(); + + // derived properties + assertThat(targetJurorPool.getOwner()) + .as("Expect property to be derived for new juror record") + .isEqualTo(targetLocCode); + assertThat(targetJurorPool.getPoolNumber()) + .as("Expect property to be derived for new juror record") + .isEqualTo(targetPoolNumber); + assertThat(targetJurorPool.getNextDate()) + .as("Expect property to be derived for new juror record") + .isEqualTo(targetStartDate); + assertThat(targetJurorPool.getUserEdtq()) + .as("Expect property to be derived for new juror record") + .isEqualTo(currentUser); + assertThat(targetJurorPool.getCourt().getLocCode()) + .as("Expect property to be derived for new juror record") + .isEqualTo(targetLocCode); + + // copied properties + Juror targetJuror = targetJurorPool.getJuror(); + Juror sourceJuror = sourceJurorPool.getJuror(); + assertThat(targetJuror.getJurorNumber()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJurorPool.getJurorNumber()); + assertThat(targetJuror.getPollNumber()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJuror.getPollNumber()); + assertThat(targetJuror.getTitle()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJuror.getTitle()); + assertThat(targetJuror.getFirstName()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJuror.getFirstName()); + assertThat(targetJuror.getLastName()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJuror.getLastName()); + assertThat(targetJuror.getDateOfBirth().compareTo(sourceJuror.getDateOfBirth())) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(0); + assertThat(targetJuror.getAddressLine1()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJuror.getAddressLine1()); + assertThat(targetJuror.getAddressLine2()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJuror.getAddressLine2()); + assertThat(targetJuror.getAddressLine3()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJuror.getAddressLine3()); + assertThat(targetJuror.getAddressLine4()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJuror.getAddressLine4()); + assertThat(targetJuror.getAddressLine5()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJuror.getAddressLine5()); + assertThat(targetJuror.getPostcode()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJuror.getPostcode()); + assertThat(targetJuror.getPhoneNumber()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJuror.getPhoneNumber()); + assertThat(targetJuror.getAltPhoneNumber()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJuror.getAltPhoneNumber()); + assertThat(targetJuror.getWorkPhone()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJuror.getWorkPhone()); + assertThat(targetJuror.getWorkPhoneExtension()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJuror.getWorkPhoneExtension()); + assertThat(targetJurorPool.getDeferralDate()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(targetJurorPool.getDeferralDate()); + assertThat(targetJuror.isResponded()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJuror.isResponded()); + assertThat(targetJuror.getExcusalDate()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJuror.getExcusalDate()); + assertThat(targetJuror.getExcusalCode()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJuror.getExcusalCode()); + assertThat(targetJuror.getExcusalRejected()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJuror.getExcusalRejected()); + assertThat(targetJuror.getDisqualifyDate()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJuror.getDisqualifyDate()); + assertThat(targetJuror.getDisqualifyCode()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJuror.getDisqualifyCode()); + assertThat(targetJuror.getNotes()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJuror.getNotes()); + assertThat(targetJurorPool.getNoAttendances()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJurorPool.getNoAttendances()); + assertThat(targetJurorPool.getIsActive()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJurorPool.getIsActive()); + assertThat(targetJuror.getNoDefPos()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJuror.getNoDefPos()); + assertThat(targetJuror.getPermanentlyDisqualify()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJuror.getPermanentlyDisqualify()); + assertThat(targetJuror.getReasonableAdjustmentCode()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJuror.getReasonableAdjustmentCode()); + assertThat(targetJuror.getReasonableAdjustmentMessage()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJuror.getReasonableAdjustmentMessage()); + assertThat(targetJuror.getSortCode()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJuror.getSortCode()); + assertThat(targetJuror.getBankAccountName()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJuror.getBankAccountName()); + assertThat(targetJuror.getBankAccountNumber()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJuror.getBankAccountNumber()); + assertThat(targetJuror.getBuildingSocietyRollNumber()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJuror.getBuildingSocietyRollNumber()); + assertThat(targetJurorPool.getWasDeferred()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJurorPool.getWasDeferred()); + assertThat(targetJurorPool.getIdChecked()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJurorPool.getIdChecked()); + assertThat(targetJurorPool.getPostpone()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJurorPool.getPostpone()); + assertThat(targetJuror.getWelsh()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJuror.getWelsh()); + assertThat(targetJuror.getPoliceCheck()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJuror.getPoliceCheck()); + assertThat(targetJuror.getEmail()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJuror.getEmail()); + assertThat(targetJuror.getContactPreference()) + .as(EXPECT_PROPERTY_TO_BE_COPIED_FROM_SOURCE_JUROR) + .isEqualTo(sourceJuror.getContactPreference()); + + assertThat(targetJuror.getOpticRef()) + .as("Expect optic reference to be copied from source juror") + .isEqualTo(sourceJuror.getOpticRef()); + + // default/not copied properties + assertThat(targetJurorPool.getTimesSelected()) + .as(EXPECT_PROPERTY_TO_BE_USE_A_DEFAULT_VALUE) + .isNull(); + assertThat(targetJurorPool.getLocation()) + .as(EXPECT_PROPERTY_TO_BE_USE_A_DEFAULT_VALUE) + .isNull(); + assertThat(targetJurorPool.getStatus().getStatus()) + .as(EXPECT_PROPERTY_TO_BE_USE_A_DEFAULT_VALUE) + .isEqualTo(2L); + assertThat(targetJurorPool.getNoAttended()) + .as(EXPECT_PROPERTY_TO_BE_USE_A_DEFAULT_VALUE) + .isNull(); + assertThat(targetJurorPool.getFailedToAttendCount()) + .as(EXPECT_PROPERTY_TO_BE_USE_A_DEFAULT_VALUE) + .isNull(); + assertThat(targetJurorPool.getUnauthorisedAbsenceCount()) + .as(EXPECT_PROPERTY_TO_BE_USE_A_DEFAULT_VALUE) + .isNull(); + assertThat(targetJurorPool.getEditTag()) + .as(EXPECT_PROPERTY_TO_BE_USE_A_DEFAULT_VALUE) + .isNull(); + assertThat(targetJurorPool.getOnCall()) + .as(EXPECT_PROPERTY_TO_BE_USE_A_DEFAULT_VALUE) + .isFalse(); + assertThat(targetJurorPool.getSmartCard()) + .as(EXPECT_PROPERTY_TO_BE_USE_A_DEFAULT_VALUE) + .isNull(); + assertThat(targetJurorPool.getPaidCash()) + .as(EXPECT_PROPERTY_TO_BE_USE_A_DEFAULT_VALUE) + .isNull(); + assertThat(targetJurorPool.getScanCode()) + .as(EXPECT_PROPERTY_TO_BE_USE_A_DEFAULT_VALUE) + .isNull(); + assertThat(targetJuror.getSummonsFile()) + .as(EXPECT_PROPERTY_TO_BE_USE_A_DEFAULT_VALUE) + .isNull(); + assertThat(targetJurorPool.getReminderSent()) + .as(EXPECT_PROPERTY_TO_BE_USE_A_DEFAULT_VALUE) + .isNull(); + assertThat(targetJuror.getNotifications()) + .as(EXPECT_PROPERTY_TO_BE_USE_A_DEFAULT_VALUE) + .isEqualTo(0); + assertThat(targetJurorPool.getTransferDate()) + .as(EXPECT_PROPERTY_TO_BE_USE_A_DEFAULT_VALUE) + .isNull(); + }); } private void transferJurorPoolValidateExistingTransferredJurorPool(String jurorNumber, String poolNumber) { - JurorPool jurorPool = - jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumberAndIsActive(jurorNumber, - poolNumber, false).get(); - - assertThat(jurorPool) - .as("A juror record should exist in a now inactive and read only state") - .isNotNull(); - assertThat(jurorPool.getStatus().getStatus()) - .as("Old juror should be set to Transferred (10)") - .isEqualTo(10L); + executeInTransaction(() -> { + JurorPool jurorPool = + jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumberAndIsActive(jurorNumber, + poolNumber, false).get(); + + assertThat(jurorPool) + .as("A juror record should exist in a now inactive and read only state") + .isNotNull(); + assertThat(jurorPool.getStatus().getStatus()) + .as("Old juror should be set to Transferred (10)") + .isEqualTo(10L); + }); } - } diff --git a/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/PanelControllerITest.java b/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/PanelControllerITest.java index 5415f204e..0c92423d0 100644 --- a/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/PanelControllerITest.java +++ b/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/PanelControllerITest.java @@ -317,55 +317,56 @@ void empanelJurorsCourtUserHappyPath() { assertThat(responseEntity.getStatusCode()) .as("Expected status code to be ok") .isEqualTo(HttpStatus.OK); + executeInTransaction(() -> { + assert responseEntity.getBody() != null; + assertThat(responseEntity.getBody().length).as("Expected length to be 4").isEqualTo(4); + for (PanelListDto panelListDto : responseEntity.getBody()) { + assertThat(panelListDto.getJurorStatus()) + .as("Expect the status to be Juror") + .isEqualTo("Juror"); + } - assert responseEntity.getBody() != null; - assertThat(responseEntity.getBody().length).as("Expected length to be 4").isEqualTo(4); - for (PanelListDto panelListDto : responseEntity.getBody()) { - assertThat(panelListDto.getJurorStatus()) - .as("Expect the status to be Juror") - .isEqualTo("Juror"); - } - - List panel = panelRepository.findByTrialTrialNumberAndTrialCourtLocationLocCode(dto.getTrialNumber(), - dto.getCourtLocationCode()); - - panel = panel.stream().filter(p -> p.getResult() != null).collect(Collectors.toList()); - - int jurorCount = 0; - int notUsedCount = 0; - int challengedCount = 0; - - for (Panel panelMember : panel) { - assertThat(panelMember.getResult()).as("Result should not be null").isNotNull(); - switch (panelMember.getResult()) { - case NOT_USED -> { - assertThat(panelMember.getEmpanelledDate()).as("date should be null").isNull(); - validateNotUsedChallengedHistory(panelMember); - notUsedCount++; - } - case CHALLENGED -> { - assertThat(panelMember.getEmpanelledDate()).as("date should be null").isNull(); - validateNotUsedChallengedHistory(panelMember); - challengedCount++; - } - case JUROR -> { - assertThat(panelMember.getEmpanelledDate()).as("date should be today").isEqualTo(LocalDate.now()); - List jurorHistories = - jurorHistoryRepository.findByJurorNumberOrderById(panelMember.getJurorNumber()); - assertThat(jurorHistories.size()).as("Expected history items to be one").isEqualTo(1); - assertThat(jurorHistories.get(0).getHistoryCode().getCode()).as( - "Expected history code to be TADD") - .isEqualTo("TADD"); - jurorCount++; + List panel = panelRepository.findByTrialTrialNumberAndTrialCourtLocationLocCode(dto.getTrialNumber(), + dto.getCourtLocationCode()); + + panel = panel.stream().filter(p -> p.getResult() != null).collect(Collectors.toList()); + + int jurorCount = 0; + int notUsedCount = 0; + int challengedCount = 0; + + for (Panel panelMember : panel) { + assertThat(panelMember.getResult()).as("Result should not be null").isNotNull(); + switch (panelMember.getResult()) { + case NOT_USED -> { + assertThat(panelMember.getEmpanelledDate()).as("date should be null").isNull(); + validateNotUsedChallengedHistory(panelMember); + notUsedCount++; + } + case CHALLENGED -> { + assertThat(panelMember.getEmpanelledDate()).as("date should be null").isNull(); + validateNotUsedChallengedHistory(panelMember); + challengedCount++; + } + case JUROR -> { + assertThat(panelMember.getEmpanelledDate()).as("date should be today") + .isEqualTo(LocalDate.now()); + List jurorHistories = + jurorHistoryRepository.findByJurorNumberOrderById(panelMember.getJurorNumber()); + assertThat(jurorHistories.size()).as("Expected history items to be one").isEqualTo(1); + assertThat(jurorHistories.get(0).getHistoryCode().getCode()).as( + "Expected history code to be TADD") + .isEqualTo("TADD"); + jurorCount++; + } + default -> throw new IllegalStateException(); } - default -> throw new IllegalStateException(); } - } - - assertThat(jurorCount).as("Expected total jurors on a jury to be 4").isEqualTo(4); - assertThat(notUsedCount).as("Expected total not used jurors to be 4").isEqualTo(4); - assertThat(challengedCount).as("Expected total challenged jurors to be 4").isEqualTo(4); + assertThat(jurorCount).as("Expected total jurors on a jury to be 4").isEqualTo(4); + assertThat(notUsedCount).as("Expected total not used jurors to be 4").isEqualTo(4); + assertThat(challengedCount).as("Expected total challenged jurors to be 4").isEqualTo(4); + }); } @Test diff --git a/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/RequestPoolControllerITest.java b/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/RequestPoolControllerITest.java index 67e4077d3..2a581c88b 100644 --- a/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/RequestPoolControllerITest.java +++ b/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/RequestPoolControllerITest.java @@ -704,71 +704,80 @@ private void assertJurorPoolsInactive(Map jurorPoolIdMap) { } private void assertNewJurorPoolCreated(PoolRequest newPool, Map jurorPoolIdMap) { - for (String jurorNumber : jurorPoolIdMap.keySet()) { - JurorPool newJurorPool = jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumberAndIsActive(jurorNumber, - jurorPoolIdMap.get(jurorNumber), true).get(); - Juror newJurorRecord = newJurorPool.getJuror(); - assertThat(newJurorPool.getWasDeferred()) - .as("Expect the new juror record to be created as was_deferred") - .isTrue(); - assertThat(newJurorPool.getIsActive()) - .as("Expect the new juror record to be created as active") - .isTrue(); - assertThat(newJurorPool.getStatus().getStatus()) - .as("Expect the new juror record to be created with a status of Responded") - .isEqualTo(2L); - assertThat(newJurorPool.getDeferralDate()) - .as("Expect the new juror record to be created with a null deferral date") - .isNull(); - assertThat(newJurorRecord.getExcusalDate()) - .as("Expect the new juror record to be created with a null excusal date") - .isNull(); - assertThat(newJurorRecord.getExcusalCode()) - .as("Expect the new juror record to be created with a null excusal code") - .isNull(); - assertThat(newJurorPool.getUserEdtq()) - .as("Expect the new juror record to be created with the current user login recorded") - .isEqualTo("COURT_USER"); - LocalDate returnDate = newPool.getReturnDate(); - assertThat(newJurorPool.getNextDate()) - .as("Expect the new juror record to be created with a next date matching the new pool's return date") - .hasYear(returnDate.getYear()).hasMonth(returnDate.getMonth()) - .hasDayOfMonth(returnDate.getDayOfMonth()); - assertThat(newJurorRecord.getExcusalRejected()) - .as("Expect the new juror record to be created with a null excusal rejected value") - .isNull(); - assertThat(newJurorRecord.getDisqualifyDate()) - .as("Expect the new juror record to be created with a null disqualify date value") - .isNull(); - assertThat(newJurorRecord.getDisqualifyCode()) - .as("Expect the new juror record to be created with a null disqualify date value") - .isNull(); - assertThat(newJurorPool.getPoolSequence()) - .as("Expect the new juror record to be created with a valid pool member sequence number") - .isNotNull(); - } + executeInTransaction(() -> { + for (String jurorNumber : jurorPoolIdMap.keySet()) { + JurorPool newJurorPool = + jurorPoolRepository.findByJurorJurorNumberAndPoolPoolNumberAndIsActive(jurorNumber, + jurorPoolIdMap.get(jurorNumber), true).get(); + Juror newJurorRecord = newJurorPool.getJuror(); + assertThat(newJurorPool.getWasDeferred()) + .as("Expect the new juror record to be created as was_deferred") + .isTrue(); + assertThat(newJurorPool.getIsActive()) + .as("Expect the new juror record to be created as active") + .isTrue(); + assertThat(newJurorPool.getStatus().getStatus()) + .as("Expect the new juror record to be created with a status of Responded") + .isEqualTo(2L); + assertThat(newJurorPool.getDeferralDate()) + .as("Expect the new juror record to be created with a null deferral date") + .isNull(); + assertThat(newJurorRecord.getExcusalDate()) + .as("Expect the new juror record to be created with a null excusal date") + .isNull(); + assertThat(newJurorRecord.getExcusalCode()) + .as("Expect the new juror record to be created with a null excusal code") + .isNull(); + assertThat(newJurorPool.getUserEdtq()) + .as("Expect the new juror record to be created with the current user login recorded") + .isEqualTo("COURT_USER"); + LocalDate returnDate = newPool.getReturnDate(); + assertThat(newJurorPool.getNextDate()) + .as("Expect the new juror record to be created with a next date matching the new pool's return " + + "date") + .hasYear(returnDate.getYear()).hasMonth(returnDate.getMonth()) + .hasDayOfMonth(returnDate.getDayOfMonth()); + assertThat(newJurorRecord.getExcusalRejected()) + .as("Expect the new juror record to be created with a null excusal rejected value") + .isNull(); + assertThat(newJurorRecord.getDisqualifyDate()) + .as("Expect the new juror record to be created with a null disqualify date value") + .isNull(); + assertThat(newJurorRecord.getDisqualifyCode()) + .as("Expect the new juror record to be created with a null disqualify date value") + .isNull(); + assertThat(newJurorPool.getPoolSequence()) + .as("Expect the new juror record to be created with a valid pool member sequence number") + .isNotNull(); + } + }); } private void assertJurorHistoryCreated(Iterable jurorHistRecords, Map jurorHistMap, List jurorNumbers) { - for (JurorHistory record : jurorHistRecords) { - assertThat(jurorNumbers) - .as("Expect a juror_history record to be created for each court deferral used in this newly requested" + executeInTransaction(() -> { + for (JurorHistory record : jurorHistRecords) { + assertThat(jurorNumbers) + .as("Expect a juror_history record to be created for each court deferral used in this newly " + + "requested" + + " pool") + .contains(record.getJurorNumber()); + assertThat(record.getPoolNumber()) + .as("Expect a juror_history record to be created with the same Pool Number as the newly requested" + " pool") - .contains(record.getJurorNumber()); - assertThat(record.getPoolNumber()) - .as("Expect a juror_history record to be created with the same Pool Number as the newly requested pool") - .isEqualTo(jurorHistMap.get("PoolNumber")); - assertThat(record.getHistoryCode().getCode()) - .as("Expect a juror_history record to be created with History Code of 'PDEF'") - .isEqualTo(jurorHistMap.get("HistoryCode")); - assertThat(record.getOtherInformation()) - .as("Expect a juror_history record to be created with the hard coded description 'Added to New Pool'") - .isEqualTo(jurorHistMap.get("Info")); - assertThat(record.getCreatedBy()) - .as("Expect a juror_history record to be created with the current user's login as the User ID") - .isEqualTo(jurorHistMap.get("UserId")); - } + .isEqualTo(jurorHistMap.get("PoolNumber")); + assertThat(record.getHistoryCode().getCode()) + .as("Expect a juror_history record to be created with History Code of 'PDEF'") + .isEqualTo(jurorHistMap.get("HistoryCode")); + assertThat(record.getOtherInformation()) + .as("Expect a juror_history record to be created with the hard coded description 'Added to New " + + "Pool'") + .isEqualTo(jurorHistMap.get("Info")); + assertThat(record.getCreatedBy()) + .as("Expect a juror_history record to be created with the current user's login as the User ID") + .isEqualTo(jurorHistMap.get("UserId")); + } + }); } @Test diff --git a/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/TrialControllerITest.java b/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/TrialControllerITest.java index f5a0ced4c..be3ee9a23 100644 --- a/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/TrialControllerITest.java +++ b/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/TrialControllerITest.java @@ -431,8 +431,7 @@ private void verifyResponseBody(PaginatedList responseBody, int li private ResponseEntity> invokeService() { ResponseEntity> responseEntity = restTemplate.exchange( new RequestEntity<>(getValidPayload(), httpHeaders, POST, URI.create(URL)), - new ParameterizedTypeReference<>() { - }); + new ParameterizedTypeReference<>() {}); assertThat(responseEntity.getStatusCode()) .as("Expect the HTTP GET request to be successful.") @@ -682,21 +681,22 @@ void testReturnPanel() { URI.create(url)), Void.class); assertThat(responseEntity.getStatusCode()).as(ASSERT_POST_IS_SUCCESSFUL).isEqualTo(OK); - - List panelList = panelRepository.findByTrialTrialNumberAndTrialCourtLocationLocCode( - "T10000000", "415"); - - for (Panel panel : panelList) { - assertThat(panel.getResult()).as("Expect result to be Returned") - .isEqualTo(PanelResult.RETURNED); - JurorPool jurorPool = PanelUtils.getAssociatedJurorPool(jurorPoolRepository, panel); - assertThat(jurorPool.getStatus().getStatus()).as( - "Expect status to be Responded (Juror in waiting)").isEqualTo(IJurorStatus.RESPONDED); - assertThat( - jurorHistoryRepository.findByJurorNumberOrderById(panel.getJurorNumber()).size()) - .as("Expect one history item for juror " + panel.getJurorNumber()) - .isEqualTo(1); - } + executeInTransaction(() -> { + List panelList = panelRepository.findByTrialTrialNumberAndTrialCourtLocationLocCode( + "T10000000", "415"); + + for (Panel panel : panelList) { + assertThat(panel.getResult()).as("Expect result to be Returned") + .isEqualTo(PanelResult.RETURNED); + JurorPool jurorPool = PanelUtils.getAssociatedJurorPool(jurorPoolRepository, panel); + assertThat(jurorPool.getStatus().getStatus()).as( + "Expect status to be Responded (Juror in waiting)").isEqualTo(IJurorStatus.RESPONDED); + assertThat( + jurorHistoryRepository.findByJurorNumberOrderById(panel.getJurorNumber()).size()) + .as("Expect one history item for juror " + panel.getJurorNumber()) + .isEqualTo(1); + } + }); } @Test @@ -715,57 +715,58 @@ void testReturnJuryConfirmAttendance() { URI.create(url)), Void.class); assertThat(responseEntity.getStatusCode()).as(ASSERT_POST_IS_SUCCESSFUL).isEqualTo(OK); - - List panelList = panelRepository.findByTrialTrialNumberAndTrialCourtLocationLocCode( - "T10000001", "415"); - - Map auditNumberMap = new ConcurrentHashMap<>(); - - for (Panel panel : panelList) { - assertThat(panel.getResult()).as("Expect result to be Returned") - .isEqualTo(PanelResult.RETURNED); - assertThat(panel.getReturnDate()).as("Expect result to be today's date") - .isEqualTo(LocalDate.now()); - - JurorPool jurorPool = PanelUtils.getAssociatedJurorPool(jurorPoolRepository, panel); - assertThat(jurorPool.getStatus().getStatus()).as( - "Expect status to be Responded (Juror in waiting)").isEqualTo(IJurorStatus.RESPONDED); - assertThat( - jurorHistoryRepository.findByJurorNumberOrderById(panel.getJurorNumber()).size()) - .as("Expect two history items for juror " + panel.getJurorNumber()) - .isEqualTo(2); - assertThat(panel.isCompleted()).as("Expected panel completed status to be true").isTrue(); - - Appearance appearance = - appearanceRepository.findByLocCodeAndJurorNumberAndAttendanceDate("415", panel.getJurorNumber(), - LocalDate.now()).orElseThrow(() -> - new MojException.NotFound("No appearance record found", null)); - - assertThat(appearance.getAttendanceAuditNumber()).isNotNull(); - - auditNumberMap.putIfAbsent(appearance.getAttendanceAuditNumber(), 0); - auditNumberMap.computeIfPresent(appearance.getAttendanceAuditNumber(), (k, v) -> v + 1); - - assertThat(appearance.getTimeIn()).as("Expect time in to not be null").isNotNull(); - assertThat(appearance.getTimeIn()).as("Expect time in to be 09:00").isEqualTo(LocalTime.parse( - "09:00")); - - assertThat(appearance.getTimeOut()).as("Expect time out to not be null").isNotNull(); - assertThat(appearance.getTimeOut()).as("Expect time out to be 10:00").isEqualTo(LocalTime.parse( - "10:00")); - - assertThat(appearance.getSatOnJury()).isTrue(); - assertThat(appearance.getAppearanceStage()) - .as("Expect appearance stage to be EXPENSE_ENTERED") - .isEqualTo(AppearanceStage.EXPENSE_ENTERED); - - assertThat(appearance.getAttendanceType()) - .as("Expect attendance type to be HALF_DAY") - .isEqualTo(AttendanceType.HALF_DAY); - } - - // check we have the same audit number for all the jurors - assertThat(auditNumberMap.values().stream().findFirst().orElse(0)).isEqualTo(4); + executeInTransaction(() -> { + List panelList = panelRepository.findByTrialTrialNumberAndTrialCourtLocationLocCode( + "T10000001", "415"); + + Map auditNumberMap = new ConcurrentHashMap<>(); + + for (Panel panel : panelList) { + assertThat(panel.getResult()).as("Expect result to be Returned") + .isEqualTo(PanelResult.RETURNED); + assertThat(panel.getReturnDate()).as("Expect result to be today's date") + .isEqualTo(LocalDate.now()); + + JurorPool jurorPool = PanelUtils.getAssociatedJurorPool(jurorPoolRepository, panel); + assertThat(jurorPool.getStatus().getStatus()).as( + "Expect status to be Responded (Juror in waiting)").isEqualTo(IJurorStatus.RESPONDED); + assertThat( + jurorHistoryRepository.findByJurorNumberOrderById(panel.getJurorNumber()).size()) + .as("Expect two history items for juror " + panel.getJurorNumber()) + .isEqualTo(2); + assertThat(panel.isCompleted()).as("Expected panel completed status to be true").isTrue(); + + Appearance appearance = + appearanceRepository.findByLocCodeAndJurorNumberAndAttendanceDate("415", panel.getJurorNumber(), + LocalDate.now()).orElseThrow(() -> + new MojException.NotFound("No appearance record found", null)); + + assertThat(appearance.getAttendanceAuditNumber()).isNotNull(); + + auditNumberMap.putIfAbsent(appearance.getAttendanceAuditNumber(), 0); + auditNumberMap.computeIfPresent(appearance.getAttendanceAuditNumber(), (k, v) -> v + 1); + + assertThat(appearance.getTimeIn()).as("Expect time in to not be null").isNotNull(); + assertThat(appearance.getTimeIn()).as("Expect time in to be 09:00").isEqualTo(LocalTime.parse( + "09:00")); + + assertThat(appearance.getTimeOut()).as("Expect time out to not be null").isNotNull(); + assertThat(appearance.getTimeOut()).as("Expect time out to be 10:00").isEqualTo(LocalTime.parse( + "10:00")); + + assertThat(appearance.getSatOnJury()).isTrue(); + assertThat(appearance.getAppearanceStage()) + .as("Expect appearance stage to be EXPENSE_ENTERED") + .isEqualTo(AppearanceStage.EXPENSE_ENTERED); + + assertThat(appearance.getAttendanceType()) + .as("Expect attendance type to be HALF_DAY") + .isEqualTo(AttendanceType.HALF_DAY); + } + + // check we have the same audit number for all the jurors + assertThat(auditNumberMap.values().stream().findFirst().orElse(0)).isEqualTo(4); + }); } @Test @@ -784,41 +785,45 @@ void testReturnJuryNoConfirmAttendance() { URI.create(url)), Void.class); assertThat(responseEntity.getStatusCode()).as(ASSERT_POST_IS_SUCCESSFUL).isEqualTo(OK); - - List panelList = panelRepository.findByTrialTrialNumberAndTrialCourtLocationLocCode( - "T10000001", "415"); - - for (Panel panel : panelList) { - assertThat(panel.getResult()).as("Expect result to be Returned") - .isEqualTo(PanelResult.RETURNED); - assertThat(panel.getReturnDate()).as("Expect result to be today's date") - .isEqualTo(LocalDate.now()); - - JurorPool jurorPool = PanelUtils.getAssociatedJurorPool(jurorPoolRepository, panel); - assertThat(jurorPool.getStatus().getStatus()).as( - "Expect status to be Responded").isEqualTo(IJurorStatus.RESPONDED); - assertThat( - jurorHistoryRepository.findByJurorNumberOrderById(panel.getJurorNumber()).size()) - .as("Expect two history item for juror " + panel.getJurorNumber()) - .isEqualTo(2); - - Appearance appearance = - appearanceRepository.findByLocCodeAndJurorNumberAndAttendanceDate("415", panel.getJurorNumber(), - LocalDate.now()).orElseThrow(() -> - new MojException.NotFound("No appearance record found", null)); - assertThat(appearance.getTimeIn()).as("Expect time in to be null").isEqualTo(LocalTime.of(9, 30)); - assertThat(appearance.getTimeOut()).as("Expect time out to be null").isNull(); - assertThat(panel.isCompleted()).as("Expected panel completed status to be true").isTrue(); - assertThat(appearance.getAppearanceStage()) - .as("Expect appearance stage to be CHECKED_IN") - .isEqualTo(AppearanceStage.CHECKED_IN); - assertThat(appearance.getSatOnJury()).isTrue(); - } + executeInTransaction(() -> { + List panelList = panelRepository.findByTrialTrialNumberAndTrialCourtLocationLocCode( + "T10000001", "415"); + + for (Panel panel : panelList) { + assertThat(panel.getResult()).as("Expect result to be Returned") + .isEqualTo(PanelResult.RETURNED); + assertThat(panel.getReturnDate()).as("Expect result to be today's date") + .isEqualTo(LocalDate.now()); + + JurorPool jurorPool = PanelUtils.getAssociatedJurorPool(jurorPoolRepository, panel); + assertThat(jurorPool.getStatus().getStatus()).as( + "Expect status to be Responded").isEqualTo(IJurorStatus.RESPONDED); + assertThat( + jurorHistoryRepository.findByJurorNumberOrderById(panel.getJurorNumber()).size()) + .as("Expect two history item for juror " + panel.getJurorNumber()) + .isEqualTo(2); + + Appearance appearance = + appearanceRepository.findByLocCodeAndJurorNumberAndAttendanceDate("415", panel.getJurorNumber(), + LocalDate.now()).orElseThrow(() -> + new MojException.NotFound("No appearance record found", null)); + assertThat(appearance.getTimeIn()).as("Expect time in to be null").isEqualTo(LocalTime.of(9, 30)); + assertThat(appearance.getTimeOut()).as("Expect time out to be null").isNull(); + assertThat(panel.isCompleted()).as("Expected panel completed status to be true").isTrue(); + assertThat(appearance.getAppearanceStage()) + .as("Expect appearance stage to be CHECKED_IN") + .isEqualTo(AppearanceStage.CHECKED_IN); + assertThat(appearance.getSatOnJury()).isTrue(); + } + }); } @Test @Sql({"/db/mod/truncate.sql", "/db/trial/ReturnJuryPanel.sql"}) - @SuppressWarnings("PMD.AvoidInstantiatingObjectsInLoops") + @SuppressWarnings({ + "PMD.AvoidInstantiatingObjectsInLoops", + "PMD.JUnitTestsShouldIncludeAssert"//False positive + }) void testReturnJuryConfirmAttendanceAndCompleteService() { final String url = "/api/v1/moj/trial/return-jury?" + "trial_number=T10000001&" @@ -830,50 +835,51 @@ void testReturnJuryConfirmAttendanceAndCompleteService() { ResponseEntity responseEntity = restTemplate.exchange(new RequestEntity<>(dto, httpHeaders, POST, URI.create(url)), Void.class); - - assertThat(responseEntity.getStatusCode()).as(ASSERT_POST_IS_SUCCESSFUL).isEqualTo(OK); - - List panelList = panelRepository.findByTrialTrialNumberAndTrialCourtLocationLocCode( - "T10000001", "415"); - - for (Panel panel : panelList) { - assertThat(panel.getResult()).as("Expect result to be Returned") - .isEqualTo(PanelResult.RETURNED); - assertThat( - jurorHistoryRepository.findByJurorNumberOrderById(panel.getJurorNumber()).size()) - .as("Expect three history item for juror " + panel.getJurorNumber()) - .isEqualTo(3); - assertThat(panel.isCompleted()).as("Expect completed status to be true").isTrue(); - assertThat(panel.getReturnDate()).as("Expect result to be today's date") - .isEqualTo(LocalDate.now()); - - JurorPool jurorPool = PanelUtils.getAssociatedJurorPool(jurorPoolRepository, panel); - assertThat(jurorPool.getStatus().getStatus()).as("Expect status to be COMPLETED") - .isEqualTo(IJurorStatus.COMPLETED); - assertThat(panel.getJuror().getCompletionDate()).as( - "Expect completion date to be " + LocalDate.now()).isEqualTo(LocalDate.now()); - - Appearance appearance = - appearanceRepository.findByLocCodeAndJurorNumberAndAttendanceDate("415", panel.getJurorNumber(), - LocalDate.now()).orElseThrow(() -> - new MojException.NotFound("No appearance record found", null)); - - assertThat(appearance.getTimeIn()).as("Expect time in to not be null").isNotNull(); - assertThat(appearance.getTimeIn()).as("Expect time in to be 09:00").isEqualTo(LocalTime.parse( - "09:00")); - - assertThat(appearance.getTimeOut()).as("Expect time out to not be null").isNotNull(); - assertThat(appearance.getTimeOut()).as("Expect time out to be 10:00").isEqualTo(LocalTime.parse( - "10:00")); - - assertThat(appearance.getSatOnJury()).isTrue(); - assertThat(appearance.getAppearanceStage()) - .as("Expect appearance stage to be EXPENSE_ENTERED") - .isEqualTo(AppearanceStage.EXPENSE_ENTERED); - - assertThat(panel.getJuror().getCompletionDate()).as("Expect completion date to not be " - + "null").isNotNull(); - } + executeInTransaction(() -> { + assertThat(responseEntity.getStatusCode()).as(ASSERT_POST_IS_SUCCESSFUL).isEqualTo(OK); + + List panelList = panelRepository.findByTrialTrialNumberAndTrialCourtLocationLocCode( + "T10000001", "415"); + + for (Panel panel : panelList) { + assertThat(panel.getResult()).as("Expect result to be Returned") + .isEqualTo(PanelResult.RETURNED); + assertThat( + jurorHistoryRepository.findByJurorNumberOrderById(panel.getJurorNumber()).size()) + .as("Expect three history item for juror " + panel.getJurorNumber()) + .isEqualTo(3); + assertThat(panel.isCompleted()).as("Expect completed status to be true").isTrue(); + assertThat(panel.getReturnDate()).as("Expect result to be today's date") + .isEqualTo(LocalDate.now()); + + JurorPool jurorPool = PanelUtils.getAssociatedJurorPool(jurorPoolRepository, panel); + assertThat(jurorPool.getStatus().getStatus()).as("Expect status to be COMPLETED") + .isEqualTo(IJurorStatus.COMPLETED); + assertThat(panel.getJuror().getCompletionDate()).as( + "Expect completion date to be " + LocalDate.now()).isEqualTo(LocalDate.now()); + + Appearance appearance = + appearanceRepository.findByLocCodeAndJurorNumberAndAttendanceDate("415", panel.getJurorNumber(), + LocalDate.now()).orElseThrow(() -> + new MojException.NotFound("No appearance record found", null)); + + assertThat(appearance.getTimeIn()).as("Expect time in to not be null").isNotNull(); + assertThat(appearance.getTimeIn()).as("Expect time in to be 09:00").isEqualTo(LocalTime.parse( + "09:00")); + + assertThat(appearance.getTimeOut()).as("Expect time out to not be null").isNotNull(); + assertThat(appearance.getTimeOut()).as("Expect time out to be 10:00").isEqualTo(LocalTime.parse( + "10:00")); + + assertThat(appearance.getSatOnJury()).isTrue(); + assertThat(appearance.getAppearanceStage()) + .as("Expect appearance stage to be EXPENSE_ENTERED") + .isEqualTo(AppearanceStage.EXPENSE_ENTERED); + + assertThat(panel.getJuror().getCompletionDate()).as("Expect completion date to not be " + + "null").isNotNull(); + } + }); } @Test diff --git a/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/UndeliverableResponseControllerITest.java b/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/UndeliverableResponseControllerITest.java index 17120bba7..6510608e3 100644 --- a/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/UndeliverableResponseControllerITest.java +++ b/src/integration-test/java/uk/gov/hmcts/juror/api/moj/controller/UndeliverableResponseControllerITest.java @@ -94,18 +94,21 @@ public void markJurorAsUndeliverable_multiple_BureauUser() { } private void assertUpdated(String jurorNumber) { - JurorPool jurorPool = JurorPoolUtils.getSingleActiveJurorPool(jurorPoolRepository, jurorNumber); - Juror juror = jurorPool.getJuror(); - - assertThat(juror.isResponded()).isFalse(); - assertThat(jurorPool.getStatus().getStatus()).isEqualTo(9); - assertThat(jurorPool.getNextDate()).isNull(); // next date is null - - // verify the history record has been created - LocalDate today = LocalDate.now(); - List jurorHistoryList = - jurorHistoryRepository.findByJurorNumberAndDateCreatedGreaterThanEqual(jurorNumber, today); - assertThat(jurorHistoryList).isNotNull(); + executeInTransaction(() -> { + JurorPool jurorPool = + JurorPoolUtils.getSingleActiveJurorPool(jurorPoolRepository, jurorNumber); + Juror juror = jurorPool.getJuror(); + + assertThat(juror.isResponded()).isFalse(); + assertThat(jurorPool.getStatus().getStatus()).isEqualTo(9); + assertThat(jurorPool.getNextDate()).isNull(); // next date is null + + // verify the history record has been created + LocalDate today = LocalDate.now(); + List jurorHistoryList = + jurorHistoryRepository.findByJurorNumberAndDateCreatedGreaterThanEqual(jurorNumber, today); + assertThat(jurorHistoryList).isNotNull(); + }); } diff --git a/src/main/java/uk/gov/hmcts/juror/api/juror/domain/CourtLocation.java b/src/main/java/uk/gov/hmcts/juror/api/juror/domain/CourtLocation.java index a0197f879..12241c910 100644 --- a/src/main/java/uk/gov/hmcts/juror/api/juror/domain/CourtLocation.java +++ b/src/main/java/uk/gov/hmcts/juror/api/juror/domain/CourtLocation.java @@ -155,7 +155,7 @@ public class CourtLocation implements Serializable, ICourtLocation { private Integer votersLock; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "region_id") @NotAudited private CourtRegionMod courtRegion; @@ -177,7 +177,7 @@ public class CourtLocation implements Serializable, ICourtLocation { @NotAudited private Courtroom assemblyRoom; - @OneToMany(mappedBy = "courtLocation") + @OneToMany(mappedBy = "courtLocation", fetch = FetchType.LAZY) @NotAudited private List poolRequests; diff --git a/src/main/java/uk/gov/hmcts/juror/api/juror/domain/Holidays.java b/src/main/java/uk/gov/hmcts/juror/api/juror/domain/Holidays.java index f5e9b768a..e2af8bd5a 100644 --- a/src/main/java/uk/gov/hmcts/juror/api/juror/domain/Holidays.java +++ b/src/main/java/uk/gov/hmcts/juror/api/juror/domain/Holidays.java @@ -2,6 +2,7 @@ import jakarta.persistence.Column; import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; @@ -53,7 +54,7 @@ public class Holidays implements Serializable { @NotEmpty private String description; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "loc_code", updatable = false) private CourtLocation courtLocation; diff --git a/src/main/java/uk/gov/hmcts/juror/api/juror/domain/JurorResponse.java b/src/main/java/uk/gov/hmcts/juror/api/juror/domain/JurorResponse.java index aace700e9..ee3b77202 100644 --- a/src/main/java/uk/gov/hmcts/juror/api/juror/domain/JurorResponse.java +++ b/src/main/java/uk/gov/hmcts/juror/api/juror/domain/JurorResponse.java @@ -5,6 +5,7 @@ import jakarta.persistence.Entity; import jakarta.persistence.EnumType; import jakarta.persistence.Enumerated; +import jakarta.persistence.FetchType; import jakarta.persistence.Id; import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; @@ -369,7 +370,7 @@ public class JurorResponse implements Serializable { * * @since Sprint 12 */ - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "STAFF_LOGIN") private User staff; diff --git a/src/main/java/uk/gov/hmcts/juror/api/moj/audit/dto/JurorAudit.java b/src/main/java/uk/gov/hmcts/juror/api/moj/audit/dto/JurorAudit.java index 8861d7561..c31bd6d79 100644 --- a/src/main/java/uk/gov/hmcts/juror/api/moj/audit/dto/JurorAudit.java +++ b/src/main/java/uk/gov/hmcts/juror/api/moj/audit/dto/JurorAudit.java @@ -32,7 +32,7 @@ @ToString public class JurorAudit extends Address { - @OneToOne(fetch = FetchType.EAGER) + @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "revision", referencedColumnName = "revision_number", insertable = false, updatable = false, nullable = false) @Id diff --git a/src/main/java/uk/gov/hmcts/juror/api/moj/controller/response/JurorStatusDto.java b/src/main/java/uk/gov/hmcts/juror/api/moj/controller/response/JurorStatusDto.java new file mode 100644 index 000000000..c1ea0cb42 --- /dev/null +++ b/src/main/java/uk/gov/hmcts/juror/api/moj/controller/response/JurorStatusDto.java @@ -0,0 +1,38 @@ +package uk.gov.hmcts.juror.api.moj.controller.response; + +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; +import uk.gov.hmcts.juror.api.moj.domain.JurorStatus; + +@Getter +@Setter +@Builder +@EqualsAndHashCode +public class JurorStatusDto { + + private int status; + private String statusDesc; + private boolean active; + + public static JurorStatusDto of(JurorStatus status) { + return JurorStatusDto.builder() + .status(status.getStatus()) + .statusDesc(status.getStatusDesc()) + .active(status.getActive()) + .build(); + } + + public Integer getCode() { + return this.status; + } + + public String getDescription() { + return this.statusDesc; + } + + public Boolean getActive() { + return this.active; + } +} diff --git a/src/main/java/uk/gov/hmcts/juror/api/moj/controller/response/ReissueLetterReponseDto.java b/src/main/java/uk/gov/hmcts/juror/api/moj/controller/response/ReissueLetterReponseDto.java index b3d4b565e..19f5335ab 100644 --- a/src/main/java/uk/gov/hmcts/juror/api/moj/controller/response/ReissueLetterReponseDto.java +++ b/src/main/java/uk/gov/hmcts/juror/api/moj/controller/response/ReissueLetterReponseDto.java @@ -10,7 +10,6 @@ import lombok.NoArgsConstructor; import lombok.Setter; import org.hibernate.validator.constraints.Length; -import uk.gov.hmcts.juror.api.moj.domain.JurorStatus; import uk.gov.hmcts.juror.api.validation.JurorNumber; import java.io.Serializable; @@ -50,7 +49,8 @@ public static class ReissueLetterResponseData { @JsonProperty("juror_status") @Schema(description = "Juror status") - private JurorStatus jurorStatus; + private JurorStatusDto jurorStatus; + } diff --git a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/Appearance.java b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/Appearance.java index 8657426c2..0d9d172bf 100644 --- a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/Appearance.java +++ b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/Appearance.java @@ -4,6 +4,7 @@ import jakarta.persistence.Entity; import jakarta.persistence.EnumType; import jakarta.persistence.Enumerated; +import jakarta.persistence.FetchType; import jakarta.persistence.Id; import jakarta.persistence.IdClass; import jakarta.persistence.JoinColumn; @@ -27,6 +28,8 @@ import org.hibernate.envers.NotAudited; import org.hibernate.envers.RelationTargetAuditMode; import org.hibernate.validator.constraints.Length; +import org.springframework.data.annotation.CreatedBy; +import org.springframework.data.annotation.LastModifiedBy; import uk.gov.hmcts.juror.api.juror.domain.CourtLocation; import uk.gov.hmcts.juror.api.moj.enumeration.AppearanceStage; import uk.gov.hmcts.juror.api.moj.enumeration.AttendanceType; @@ -128,9 +131,11 @@ public class Appearance implements Serializable { private boolean payCash = false; @Column(name = "last_updated_by") + @LastModifiedBy private String lastUpdatedBy; @Column(name = "created_by") + @CreatedBy private String createdBy; // transport expenses @@ -250,7 +255,7 @@ public class Appearance implements Serializable { private Boolean noShow; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "expense_rates_id", referencedColumnName = "id") @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED) private ExpenseRates expenseRates; @@ -334,7 +339,6 @@ public Boolean isLongTrialDay() { return this.attendanceType.getIsLongTrial(); } - //TODO add travel time and court time together public LocalTime getEffectiveTime() { return this.getTimeSpentAtCourt().plusNanos(this.getTravelTime().toNanoOfDay()); } diff --git a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/BulkPrintData.java b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/BulkPrintData.java index 200eaa3b1..0e69cac53 100644 --- a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/BulkPrintData.java +++ b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/BulkPrintData.java @@ -3,6 +3,7 @@ import jakarta.persistence.Column; import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; @@ -50,7 +51,7 @@ public class BulkPrintData { private LocalDate creationDate; @NotNull - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "form_type") private FormAttribute formAttribute; diff --git a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/BulkPrintDataNotifyComms.java b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/BulkPrintDataNotifyComms.java index 7e1c04005..511f38aa8 100644 --- a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/BulkPrintDataNotifyComms.java +++ b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/BulkPrintDataNotifyComms.java @@ -2,6 +2,7 @@ import jakarta.persistence.Column; import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; @@ -44,7 +45,7 @@ public class BulkPrintDataNotifyComms { private LocalDate creationDate; @NotNull - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "form_type") private FormAttribute formAttribute; diff --git a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/ContactLog.java b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/ContactLog.java index 3dfb70d70..61aaa3237 100644 --- a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/ContactLog.java +++ b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/ContactLog.java @@ -68,7 +68,7 @@ public class ContactLog implements Serializable { private LocalDateTime endCall; @NotNull - @ManyToOne(fetch = FetchType.EAGER) + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "enquiry_type", referencedColumnName = "enquiry_code") @Enumerated(EnumType.STRING) private ContactCode enquiryType; diff --git a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/CoronerPool.java b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/CoronerPool.java index 87d6716d6..ae15d205f 100644 --- a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/CoronerPool.java +++ b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/CoronerPool.java @@ -2,6 +2,7 @@ import jakarta.persistence.Column; import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; import jakarta.persistence.Id; import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; @@ -50,7 +51,7 @@ public class CoronerPool implements Serializable { /** * Location code for the specific court the pool is being requested for. */ - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "cor_court_loc") private CourtLocation courtLocation; diff --git a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/FinancialAuditDetails.java b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/FinancialAuditDetails.java index 504f88660..a86df8384 100644 --- a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/FinancialAuditDetails.java +++ b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/FinancialAuditDetails.java @@ -4,6 +4,7 @@ import jakarta.persistence.Entity; import jakarta.persistence.EnumType; import jakarta.persistence.Enumerated; +import jakarta.persistence.FetchType; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; @@ -54,7 +55,7 @@ public class FinancialAuditDetails implements Serializable { @Column(name = "created_on") private LocalDateTime createdOn; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "created_by", referencedColumnName = "username") private User createdBy; @@ -73,7 +74,7 @@ public class FinancialAuditDetails implements Serializable { private Type type; - @OneToMany + @OneToMany(fetch = FetchType.LAZY) @JoinColumns({ @JoinColumn(name = "financial_audit_id", referencedColumnName = "id"), @JoinColumn(name = "loc_code", referencedColumnName = "loc_code") diff --git a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/Juror.java b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/Juror.java index 964db6860..b1fc1500f 100644 --- a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/Juror.java +++ b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/Juror.java @@ -289,7 +289,7 @@ public class Juror extends Address implements Serializable { private boolean responseEntered; @NotAudited - @OneToMany(mappedBy = "juror", cascade = CascadeType.REMOVE, fetch = FetchType.EAGER) + @OneToMany(mappedBy = "juror", cascade = CascadeType.REMOVE, fetch = FetchType.LAZY) private Set associatedPools; diff --git a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/JurorPool.java b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/JurorPool.java index 9b7fc137a..f2b7be85b 100644 --- a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/JurorPool.java +++ b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/JurorPool.java @@ -40,12 +40,12 @@ public class JurorPool implements Serializable { @Id - @ManyToOne(fetch = FetchType.EAGER) + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "juror_number", nullable = false) private Juror juror; @Id - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "pool_number", nullable = false) private PoolRequest pool; @@ -61,7 +61,7 @@ public class JurorPool implements Serializable { @Column(name = "is_active") private Boolean isActive; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "status") private JurorStatus status; diff --git a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/ModJurorDetail.java b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/ModJurorDetail.java index 7c2ac4e70..3b08590a1 100644 --- a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/ModJurorDetail.java +++ b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/ModJurorDetail.java @@ -2,6 +2,7 @@ import jakarta.persistence.Column; import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; import jakarta.persistence.Id; import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; @@ -275,7 +276,7 @@ public class ModJurorDetail implements Serializable { @NotNull private Boolean useJurorPhoneDetails = Boolean.TRUE; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "staff_login") private User assignedStaffMember; diff --git a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/NotifyTemplateMappingMod.java b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/NotifyTemplateMappingMod.java index 50f344732..6f4a2281f 100644 --- a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/NotifyTemplateMappingMod.java +++ b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/NotifyTemplateMappingMod.java @@ -2,6 +2,7 @@ import jakarta.persistence.Column; import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; import jakarta.persistence.Id; import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; @@ -44,7 +45,7 @@ public class NotifyTemplateMappingMod implements Serializable { private String notifyName; @JoinColumn(name = "form_type") - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) private FormAttribute formType; @Size(max = 2) diff --git a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/PaymentData.java b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/PaymentData.java index da3e18b78..f9f881a83 100644 --- a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/PaymentData.java +++ b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/PaymentData.java @@ -2,6 +2,7 @@ import jakarta.persistence.Column; import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; @@ -41,7 +42,7 @@ public class PaymentData { allocationSize = 1) private long uniqueId; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "loc_code", nullable = false) @NotNull private CourtLocation courtLocation; diff --git a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/PendingJuror.java b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/PendingJuror.java index 938284d79..908a75ef2 100644 --- a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/PendingJuror.java +++ b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/PendingJuror.java @@ -100,7 +100,7 @@ public class PendingJuror extends Address implements Serializable { @Column(name = "next_date") private LocalDate nextDate; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "added_by") private User addedBy; @@ -118,7 +118,7 @@ public class PendingJuror extends Address implements Serializable { @Column(name = "pool_seq") private String poolSequence; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @NotNull @JoinColumn(name = "status") private PendingJurorStatus status; diff --git a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/PoolComment.java b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/PoolComment.java index 2e95c001a..c93d9349d 100644 --- a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/PoolComment.java +++ b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/PoolComment.java @@ -2,6 +2,7 @@ import jakarta.persistence.Column; import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; @@ -36,7 +37,7 @@ public class PoolComment implements Serializable { public long id; @NotNull - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "pool_no") private PoolRequest pool; diff --git a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/PoolRequest.java b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/PoolRequest.java index 184ccd534..7d7202e70 100644 --- a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/PoolRequest.java +++ b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/PoolRequest.java @@ -3,6 +3,7 @@ import jakarta.persistence.CascadeType; import jakarta.persistence.Column; import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; import jakarta.persistence.Id; import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; @@ -57,7 +58,7 @@ public class PoolRequest implements Serializable { /** * Location code for the specific court the pool is being requested for. */ - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "loc_code", nullable = false) private CourtLocation courtLocation; @@ -74,7 +75,7 @@ public class PoolRequest implements Serializable { @Column(name = "no_requested") private Integer numberRequested; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "pool_type") private PoolType poolType; @@ -103,10 +104,10 @@ public class PoolRequest implements Serializable { @Column(name = "date_created", updatable = false) private LocalDateTime dateCreated; - @OneToMany(mappedBy = "pool", cascade = CascadeType.REMOVE) + @OneToMany(mappedBy = "pool", cascade = CascadeType.REMOVE, fetch = FetchType.LAZY) private Set poolComments; - @OneToMany(mappedBy = "pool") + @OneToMany(mappedBy = "pool", fetch = FetchType.LAZY) private List jurorPools; @PrePersist diff --git a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/User.java b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/User.java index d9ee0ef02..ead4acfe2 100644 --- a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/User.java +++ b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/User.java @@ -76,7 +76,7 @@ public class User implements Serializable { @Enumerated(EnumType.STRING) private UserType userType; - @ElementCollection(fetch = FetchType.EAGER) + @ElementCollection(fetch = FetchType.LAZY) @CollectionTable(schema = "juror_mod", name = "user_roles", joinColumns = @JoinColumn(name = "username", referencedColumnName = "username")) @Enumerated(EnumType.STRING) @@ -89,7 +89,7 @@ public class User implements Serializable { joinColumns = @JoinColumn(name = "username", referencedColumnName = "username"), inverseJoinColumns = @JoinColumn(name = "loc_code", referencedColumnName = "loc_code") ) - @ManyToMany + @ManyToMany(fetch = FetchType.LAZY) private Set courts; @Column(name = "created_by", updatable = false) diff --git a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/jurorresponse/AbstractJurorResponse.java b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/jurorresponse/AbstractJurorResponse.java index 8f647abc0..bd224617c 100644 --- a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/jurorresponse/AbstractJurorResponse.java +++ b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/jurorresponse/AbstractJurorResponse.java @@ -148,7 +148,7 @@ public class AbstractJurorResponse extends Address implements Serializable { @Pattern(regexp = NO_PIPES_REGEX) private String relationship; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "staff_login") private User staff; @@ -190,7 +190,7 @@ public class AbstractJurorResponse extends Address implements Serializable { @Column(name = "staff_assignment_date") private LocalDate staffAssignmentDate; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @NotNull @JoinColumn(name = "reply_type") @Getter diff --git a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/jurorresponse/JurorReasonableAdjustment.java b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/jurorresponse/JurorReasonableAdjustment.java index 49add63f3..95204878b 100644 --- a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/jurorresponse/JurorReasonableAdjustment.java +++ b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/jurorresponse/JurorReasonableAdjustment.java @@ -2,6 +2,7 @@ import jakarta.persistence.Column; import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; @@ -29,7 +30,7 @@ public class JurorReasonableAdjustment implements Serializable { @Length(max = 9) private String jurorNumber; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @NotNull @JoinColumn(name = "reasonable_adjustment") private ReasonableAdjustments reasonableAdjustment; diff --git a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/messages/Message.java b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/messages/Message.java index f0877bfdd..067926418 100644 --- a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/messages/Message.java +++ b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/messages/Message.java @@ -3,6 +3,7 @@ import jakarta.persistence.Column; import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; import jakarta.persistence.Id; import jakarta.persistence.IdClass; import jakarta.persistence.JoinColumn; @@ -53,7 +54,7 @@ public class Message implements Serializable { private String userName; @Id - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "loc_code") private CourtLocation locationCode; diff --git a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/trial/Panel.java b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/trial/Panel.java index 852130805..3513a7fde 100644 --- a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/trial/Panel.java +++ b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/trial/Panel.java @@ -3,6 +3,7 @@ import jakarta.persistence.Column; import jakarta.persistence.Convert; import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; import jakarta.persistence.Id; import jakarta.persistence.IdClass; import jakarta.persistence.JoinColumn; @@ -35,13 +36,13 @@ public class Panel implements Serializable { @JoinColumn(name = "loc_code") @JoinColumn(name = "trial_number") - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @Id private Trial trial; @JoinColumn(name = "juror_number") @NotNull - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @Id private Juror juror; diff --git a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/trial/Trial.java b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/trial/Trial.java index 093888128..ab99dfc6a 100644 --- a/src/main/java/uk/gov/hmcts/juror/api/moj/domain/trial/Trial.java +++ b/src/main/java/uk/gov/hmcts/juror/api/moj/domain/trial/Trial.java @@ -54,7 +54,7 @@ public class Trial implements Serializable { @Id @NotNull - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "loc_code", nullable = false) private CourtLocation courtLocation; @@ -64,12 +64,12 @@ public class Trial implements Serializable { private String description; @NotNull - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "courtroom", nullable = false) private Courtroom courtroom; @NotNull - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "judge", nullable = false) private Judge judge; diff --git a/src/main/java/uk/gov/hmcts/juror/api/moj/repository/IAppearanceRepositoryImpl.java b/src/main/java/uk/gov/hmcts/juror/api/moj/repository/IAppearanceRepositoryImpl.java index 050160502..e97749033 100644 --- a/src/main/java/uk/gov/hmcts/juror/api/moj/repository/IAppearanceRepositoryImpl.java +++ b/src/main/java/uk/gov/hmcts/juror/api/moj/repository/IAppearanceRepositoryImpl.java @@ -292,7 +292,8 @@ public Optional findByJurorNumberAndLocCodeAndAttendanceDateAndVersi LocalDate attendanceDate, long appearanceVersion) { try { - return Optional.ofNullable((Appearance) AuditReaderFactory.get(entityManager) + return + Optional.ofNullable((Appearance) AuditReaderFactory.get(entityManager) .createQuery() .forRevisionsOfEntity(Appearance.class, true, false) .add(AuditEntity.property("jurorNumber").eq(jurorNumber)) diff --git a/src/main/java/uk/gov/hmcts/juror/api/moj/service/AppearanceCreationServiceImpl.java b/src/main/java/uk/gov/hmcts/juror/api/moj/service/AppearanceCreationServiceImpl.java index 551aa161d..8fab468d2 100644 --- a/src/main/java/uk/gov/hmcts/juror/api/moj/service/AppearanceCreationServiceImpl.java +++ b/src/main/java/uk/gov/hmcts/juror/api/moj/service/AppearanceCreationServiceImpl.java @@ -19,6 +19,7 @@ @RequiredArgsConstructor(onConstructor_ = {@Autowired}) public class AppearanceCreationServiceImpl implements AppearanceCreationService { private final AppearanceRepository appearanceRepository; + private final UserService userService; @Override @Transactional diff --git a/src/main/java/uk/gov/hmcts/juror/api/moj/service/FinancialAuditServiceImpl.java b/src/main/java/uk/gov/hmcts/juror/api/moj/service/FinancialAuditServiceImpl.java index cbb345749..5a4e17333 100644 --- a/src/main/java/uk/gov/hmcts/juror/api/moj/service/FinancialAuditServiceImpl.java +++ b/src/main/java/uk/gov/hmcts/juror/api/moj/service/FinancialAuditServiceImpl.java @@ -4,6 +4,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import uk.gov.hmcts.juror.api.moj.domain.Appearance; import uk.gov.hmcts.juror.api.moj.domain.FinancialAuditDetails; import uk.gov.hmcts.juror.api.moj.domain.FinancialAuditDetailsAppearances; @@ -35,6 +36,7 @@ public class FinancialAuditServiceImpl implements FinancialAuditService { private final Clock clock; @Override + @Transactional public FinancialAuditDetails createFinancialAuditDetail(String jurorNumber, String courtLocationCode, FinancialAuditDetails.Type type, @@ -81,11 +83,13 @@ public FinancialAuditDetails createFinancialAuditDetail(String jurorNumber, } @Override + @Transactional public List getFinancialAuditDetails(Appearance appearance) { return financialAuditDetailsRepository.findAllByAppearance(appearance); } @Override + @Transactional public FinancialAuditDetails getFinancialAuditDetails(long financialAuditNumber, String locCode) { return financialAuditDetailsRepository.findById(new FinancialAuditDetails.IdClass( financialAuditNumber, @@ -95,6 +99,7 @@ public FinancialAuditDetails getFinancialAuditDetails(long financialAuditNumber, } @Override + @Transactional public List getAppearances(FinancialAuditDetails financialAuditDetails) { List financialAuditDetailsAppearances = financialAuditDetails.getFinancialAuditDetailsAppearances(); @@ -110,6 +115,7 @@ public List getAppearances(FinancialAuditDetails financialAuditDetai @Override + @Transactional public FinancialAuditDetails getLastFinancialAuditDetailsFromTypes(FinancialAuditDetails financialAuditDetails, Set types) { return financialAuditDetailsRepository.findLastFinancialAuditDetailsWithAnyTypeWithin( @@ -133,6 +139,7 @@ public Optional getLastFinancialAuditDetailsFromAppearanc @Override + @Transactional public Appearance getPreviousAppearance(FinancialAuditDetails financialAuditDetails, Appearance appearance) { return getAppearanceFromFinancialAuditDetailsAppearances( financialAuditDetails.getLocCode(), @@ -141,6 +148,7 @@ public Appearance getPreviousAppearance(FinancialAuditDetails financialAuditDeta } @Override + @Transactional public Appearance getPreviousApprovedValue(FinancialAuditDetails financialAuditDetails, Appearance appearance) { return getAppearanceFromFinancialAuditDetailsAppearances( financialAuditDetails.getLocCode(), @@ -150,6 +158,7 @@ public Appearance getPreviousApprovedValue(FinancialAuditDetails financialAuditD } @Override + @Transactional public FinancialAuditDetails findFromAppearance(Appearance appearance) { return getFinancialAuditDetails(appearance.getFinancialAudit(), appearance.getLocCode()); } diff --git a/src/main/java/uk/gov/hmcts/juror/api/moj/service/PoolCreateServiceImpl.java b/src/main/java/uk/gov/hmcts/juror/api/moj/service/PoolCreateServiceImpl.java index 1e2e64935..72be0f189 100644 --- a/src/main/java/uk/gov/hmcts/juror/api/moj/service/PoolCreateServiceImpl.java +++ b/src/main/java/uk/gov/hmcts/juror/api/moj/service/PoolCreateServiceImpl.java @@ -52,7 +52,6 @@ import uk.gov.hmcts.juror.api.moj.repository.PoolHistoryRepository; import uk.gov.hmcts.juror.api.moj.repository.PoolRequestRepository; import uk.gov.hmcts.juror.api.moj.repository.PoolTypeRepository; -import uk.gov.hmcts.juror.api.moj.repository.VotersRepository; import uk.gov.hmcts.juror.api.moj.service.deferralmaintenance.ManageDeferralsService; import uk.gov.hmcts.juror.api.moj.utils.PaginationUtil; import uk.gov.hmcts.juror.api.moj.utils.RepositoryUtils; @@ -89,7 +88,6 @@ public class PoolCreateServiceImpl implements PoolCreateService { private final ManageDeferralsService manageDeferralsService; private final JurorPoolRepository jurorPoolRepository; private final JurorRepository jurorRepository; - private final VotersRepository votersRepository; private final CourtLocationService courtLocationService; private final PrintDataService printDataService; private final VotersService votersService; @@ -105,6 +103,7 @@ public class PoolCreateServiceImpl implements PoolCreateService { private final CoronerPoolRepository coronerPoolRepository; @Override + @Transactional public PoolRequestItemDto getPoolRequest(String poolNumber, String owner) { @@ -138,6 +137,7 @@ public PoolRequestItemDto getPoolRequest(String poolNumber, String owner) { } @Override + @Transactional public SummonsFormResponseDto summonsForm(SummonsFormRequestDto summonsFormRequestDto) { // the number of bureau deferrals from the currently deferred view @@ -164,6 +164,7 @@ public SummonsFormResponseDto summonsForm(SummonsFormRequestDto summonsFormReque * @return a count of deferral records matching the predicate criteria */ @Override + @Transactional public int getBureauDeferrals(String locationCode, LocalDate deferredTo) { return (int) manageDeferralsService.getDeferralsCount(SecurityUtil.BUREAU_OWNER, locationCode, deferredTo); } @@ -235,6 +236,7 @@ private void unlockVoters(String locCode) { * - Update the Bulk Print Data table for summons letters for selected voters */ @Override + @Transactional public void lockVotersAndSummonAdditionalCitizens(BureauJwtPayload payload, PoolAdditionalSummonsDto poolAdditionalSummonsDto) { @@ -541,6 +543,7 @@ private void checkYield(String catchmentArea, int noRequested, int citizensToSum } @Override + @Transactional public PaginatedList getJurorPoolsList(BureauJwtPayload payload, PoolMemberFilterRequestQuery search) { return PaginationUtil.toPaginatedList( @@ -571,11 +574,13 @@ public PaginatedList getJurorPoolsList(BureauJwtPayload payloa } @Override + @Transactional public List getThinJurorPoolsList(String poolNumber, String owner) { return jurorPoolRepository.fetchThinPoolMembers(poolNumber, owner); } @Override + @Transactional public List getAvailableVotersByLocation(String areaCode, boolean isCoronerPool) { @@ -610,6 +615,7 @@ private void processCourtDeferrals(PoolRequest poolRequest, int courtDeferrals, } @Override + @Transactional public NilPoolResponseDto checkForDeferrals(String owner, NilPoolRequestDto nilPoolRequestDto) { // validate court location @@ -662,6 +668,7 @@ private CourtLocation getLocation(NilPoolRequestDto nilPoolRequestDto) { } @Override + @Transactional public void createNilPool(String owner, NilPoolRequestDto nilPoolRequestDto) { // validate court location CourtLocation courtLocation = getLocation(nilPoolRequestDto); diff --git a/src/main/java/uk/gov/hmcts/juror/api/moj/service/ReissueLetterServiceImpl.java b/src/main/java/uk/gov/hmcts/juror/api/moj/service/ReissueLetterServiceImpl.java index f3e27b9b5..8be37c36e 100644 --- a/src/main/java/uk/gov/hmcts/juror/api/moj/service/ReissueLetterServiceImpl.java +++ b/src/main/java/uk/gov/hmcts/juror/api/moj/service/ReissueLetterServiceImpl.java @@ -8,6 +8,7 @@ import org.springframework.transaction.annotation.Transactional; import uk.gov.hmcts.juror.api.moj.controller.request.ReissueLetterListRequestDto; import uk.gov.hmcts.juror.api.moj.controller.request.ReissueLetterRequestDto; +import uk.gov.hmcts.juror.api.moj.controller.response.JurorStatusDto; import uk.gov.hmcts.juror.api.moj.controller.response.ReissueLetterListResponseDto; import uk.gov.hmcts.juror.api.moj.controller.response.ReissueLetterReponseDto; import uk.gov.hmcts.juror.api.moj.domain.BulkPrintData; @@ -154,7 +155,7 @@ private void validateReissueRequest(ReissueLetterRequestDto request, ReissueLett .jurorNumber(letter.getJurorNumber()) .firstName(jurorPool.getJuror().getFirstName()) .lastName(jurorPool.getJuror().getLastName()) - .jurorStatus(jurorPool.getStatus()) + .jurorStatus(JurorStatusDto.of(jurorPool.getStatus())) .build(); response.getJurors().add(jurorData); } diff --git a/src/main/java/uk/gov/hmcts/juror/api/moj/service/VotersService.java b/src/main/java/uk/gov/hmcts/juror/api/moj/service/VotersService.java index 005cf3fa3..6cf6bb0e9 100644 --- a/src/main/java/uk/gov/hmcts/juror/api/moj/service/VotersService.java +++ b/src/main/java/uk/gov/hmcts/juror/api/moj/service/VotersService.java @@ -8,9 +8,6 @@ import java.util.List; public interface VotersService { - - List getVotersForCoronerPool(String postcode, int number, String locCode); - List getVoters(PoolCreateRequestDto poolCreateRequestDto); List getVoters(List postcodes, @@ -19,5 +16,7 @@ List getVoters(List postcodes, String locCode, boolean isCoroners); + List getVotersForCoronerPool(String postcode, int number, String locCode); + void markVotersAsSelected(List voters, Date attendanceDate); } diff --git a/src/test/java/uk/gov/hmcts/juror/api/moj/service/PoolCreateServiceTest.java b/src/test/java/uk/gov/hmcts/juror/api/moj/service/PoolCreateServiceTest.java index 8b46d9303..5e2719990 100644 --- a/src/test/java/uk/gov/hmcts/juror/api/moj/service/PoolCreateServiceTest.java +++ b/src/test/java/uk/gov/hmcts/juror/api/moj/service/PoolCreateServiceTest.java @@ -210,7 +210,6 @@ void createPool() throws SQLException { poolCreateRequestDto.setNoRequested(noRequested); poolCreateRequestDto.setCitizensToSummon(citizensToSummon); poolCreateRequestDto.setPreviousJurorCount(0); - List voters = List.of(createValidVoter()); //GET POOL MEMBER Mockito.when(votersServiceImpl.getVoters(Mockito.any())).thenReturn(voters); diff --git a/src/test/java/uk/gov/hmcts/juror/api/moj/service/letter/ReissueLetterServiceTest.java b/src/test/java/uk/gov/hmcts/juror/api/moj/service/letter/ReissueLetterServiceTest.java index c53574000..24addf439 100644 --- a/src/test/java/uk/gov/hmcts/juror/api/moj/service/letter/ReissueLetterServiceTest.java +++ b/src/test/java/uk/gov/hmcts/juror/api/moj/service/letter/ReissueLetterServiceTest.java @@ -14,6 +14,7 @@ import uk.gov.hmcts.juror.api.TestUtils; import uk.gov.hmcts.juror.api.moj.controller.request.ReissueLetterListRequestDto; import uk.gov.hmcts.juror.api.moj.controller.request.ReissueLetterRequestDto; +import uk.gov.hmcts.juror.api.moj.controller.response.JurorStatusDto; import uk.gov.hmcts.juror.api.moj.controller.response.ReissueLetterListResponseDto; import uk.gov.hmcts.juror.api.moj.controller.response.ReissueLetterReponseDto; import uk.gov.hmcts.juror.api.moj.domain.BulkPrintData; @@ -615,7 +616,8 @@ void reissueLetterUnhappyStatusChanged(String formCode) { reissueLetterRequestData.getJurorNumber()); assertThat(responseDto.getJurors().get(0).getFirstName()).isEqualTo("John"); assertThat(responseDto.getJurors().get(0).getLastName()).isEqualTo("Doe"); - assertThat(responseDto.getJurors().get(0).getJurorStatus()).isEqualTo(disqualifiedStatus); + assertThat(responseDto.getJurors().get(0).getJurorStatus()).isEqualTo( + JurorStatusDto.of(disqualifiedStatus)); verify(bulkPrintDataRepository, times(0)) .findByJurorNumberFormCodeDatePrinted(reissueLetterRequestData.getJurorNumber(),