Skip to content

Commit

Permalink
CCD-5625: Case types on XUI AAT are not getting cleared after PR mer…
Browse files Browse the repository at this point in the history
…ge (#2468)

* CCD-5625: Case types on XUI AAT are not getting cleared after PR merge

* CCD-5625: Added logging

* empty commit to trigger build

* empty commit to trigger build

---------

Co-authored-by: patelila <[email protected]>
  • Loading branch information
SomeshRA and patelila authored Oct 7, 2024
1 parent 8cec88b commit a59a3bf
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import lombok.extern.slf4j.Slf4j;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.type.StringType;
Expand All @@ -27,6 +28,7 @@
@RestController
@RequestMapping(path = "/testing-support")
@ConditionalOnProperty(value = "testing.support.endpoint.enabled", havingValue = "true")
@Slf4j
public class TestingSupportController {

private final CaseLinkService caseLinkService;
Expand Down Expand Up @@ -62,12 +64,17 @@ public ResponseEntity<CaseLinksResource> getCaseLink(@PathVariable("caseReferenc
public void dataCaseTypeIdDelete(
@ApiParam(value = "Change ID", required = true) @PathVariable("changeId") BigInteger changeId,
@ApiParam(value = "Case Type ID", required = true) @RequestParam("caseTypeIds") String caseTypeIds) {
log.info("Invoked for changeId {} and caseTypeIds {} ", changeId, caseTypeIds);

var caseIdList = Arrays.stream(caseTypeIds.split(",")).toList();
var caseTypesWithChangeIds = caseIdList.stream().map(caseTypeId -> caseTypeId + "-" + changeId).toList();

Session session = sessionFactory.openSession();

executeSql(
session,
"DELETE FROM case_link WHERE case_type_id IN (:caseTypeReferences)",
caseTypesWithChangeIds);
executeSql(
session,
"DELETE FROM case_event WHERE case_type_id IN (:caseTypeReferences)",
Expand All @@ -78,6 +85,7 @@ public void dataCaseTypeIdDelete(
caseTypesWithChangeIds);

session.close();
log.info("Deleted records for changeId {} and caseTypeIds {} ", changeId, caseTypeIds);
}

private void executeSql(Session session, String sql, List<String> ids) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,23 @@
package uk.gov.hmcts.ccd.v2.external.controller;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.ArgumentMatchers.anyList;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.isA;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import java.math.BigInteger;
import java.util.List;
import java.util.Objects;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.query.NativeQuery;
import org.hibernate.type.StringType;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
Expand All @@ -10,16 +28,16 @@
import uk.gov.hmcts.ccd.domain.model.caselinking.CaseLinksResource;
import uk.gov.hmcts.ccd.domain.service.caselinking.CaseLinkService;

import java.util.List;
import java.util.Objects;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;

@ExtendWith(MockitoExtension.class)
class TestingSupportControllerTest {
@Mock
private SessionFactory sessionFactory;
@Mock
private Session session;
@Mock
private NativeQuery nativeQuery;
@Mock
private Transaction transaction;

@Mock
private CaseLinkService caseLinkService;
Expand All @@ -43,4 +61,18 @@ void getCaseLink_shouldCallFindCaseLinks() {
verify(caseLinkService, times(1)).findCaseLinks(caseReference);
}

@Test
void shouldDeleteCaseTypeIds() {
when(sessionFactory.openSession())
.thenReturn(session);
when(session.createNativeQuery(anyString()))
.thenReturn(nativeQuery);
when(nativeQuery.setParameterList(eq("caseTypeReferences"), anyList(), isA(StringType.class)))
.thenReturn(nativeQuery);
when(session.getTransaction())
.thenReturn(transaction);
testingSupportController.dataCaseTypeIdDelete(BigInteger.ONE, "Benefit");
verify(session, times(3))
.createNativeQuery(anyString());
}
}

0 comments on commit a59a3bf

Please sign in to comment.