Skip to content

Commit

Permalink
Dmp 3821 - Test framework including reenablement for arm - Part 1 (#2021
Browse files Browse the repository at this point in the history
)
  • Loading branch information
mestebanez authored Sep 26, 2024
1 parent d021403 commit 8c0e575
Show file tree
Hide file tree
Showing 178 changed files with 4,054 additions and 1,903 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -627,4 +627,4 @@ task runAllStyleChecks {
// set flyway cleanDisabled to true above and uncomment if we require a fresh migration from scratch across all DBs
// migratePostgresDatabase.dependsOn cleanPostgresDatabase
processResources.dependsOn updateOpenSpecificationsWithVersion
assemble.dependsOn openapiJar
assemble.dependsOn openapiJar
42 changes: 42 additions & 0 deletions doc/test_data_pattern.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
@startuml
interface BuilderHolder {
Entity build()
Object getBuilder()
}

interface Persistable {
BuilderHolder someMaximal()
BuilderHolder someMinimal()
}

interface DbInsertable {
Entity getEntity()
}

class MediaEntityTestData implements Persistable {
BuilderHolder someMaximal()
someMinimal()
}

class MediaEntityBuilder extends MediaEntity implements DbInsertable {
Entity getEntity()
}

class MediaEntityBuilderHolder implements BuilderHolder<Builder, Entity> {
Entity build()
Builder getBuilder()
}

MediaEntityTestData -> MediaEntityBuilderHolder : create
MediaEntityBuilderHolder -> MediaEntityBuilder : create

class DartsPersistance {
save(MediaEntity media)
}

class PersistableFactory {
MediaTestData getMediaTestData()
}

PersistableFactory -> MediaEntityTestData : create
@enduml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import uk.gov.hmcts.darts.common.entity.HearingEntity;
import uk.gov.hmcts.darts.common.entity.UserAccountEntity;
import uk.gov.hmcts.darts.common.enums.SecurityRoleEnum;
import uk.gov.hmcts.darts.test.common.data.PersistableFactory;
import uk.gov.hmcts.darts.testutils.GivenBuilder;
import uk.gov.hmcts.darts.testutils.IntegrationBase;

Expand All @@ -21,9 +22,7 @@
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static uk.gov.hmcts.darts.common.enums.SecurityRoleEnum.JUDICIARY;
import static uk.gov.hmcts.darts.common.enums.SecurityRoleEnum.SUPER_ADMIN;
import static uk.gov.hmcts.darts.test.common.data.AnnotationTestData.minimalAnnotationEntity;
import static uk.gov.hmcts.darts.test.common.data.CourthouseTestData.someMinimalCourthouse;
import static uk.gov.hmcts.darts.test.common.data.HearingTestData.someMinimalHearing;
import static uk.gov.hmcts.darts.test.common.data.UserAccountTestData.minimalUserAccount;

@AutoConfigureMockMvc
Expand Down Expand Up @@ -55,7 +54,7 @@ void judgeWithGlobalAccessCanDeleteTheirOwnAnnotation() throws Exception {

@Test
void judgeWithCourthouseAccessCanDeleteTheirOwnAnnotation() throws Exception {
var hearing = dartsPersistence.save(someMinimalHearing());
var hearing = dartsPersistence.save(PersistableFactory.getHearingTestData().someMinimalHearing());
var judge = given.anAuthenticatedUserAuthorizedForCourthouse(JUDICIARY, hearing.getCourtroom().getCourthouse());
var annotation = someAnnotationForHearingNotMarkedForDeletionCreatedBy(judge, hearing);

Expand All @@ -67,7 +66,7 @@ void judgeWithCourthouseAccessCanDeleteTheirOwnAnnotation() throws Exception {

@Test
void preventsJudgeNotAuthorizedForCourthouseDeletingAnnotationAssociatedWithThatCourthouse() throws Exception {
var annotationHearing = dartsPersistence.save(someMinimalHearing());
var annotationHearing = dartsPersistence.save(PersistableFactory.getHearingTestData().someMinimalHearing());
var someOtherCourthouse = dartsPersistence.save(someMinimalCourthouse());
var judge = given.anAuthenticatedUserAuthorizedForCourthouse(JUDICIARY, someOtherCourthouse);
var annotation = someAnnotationForHearingNotMarkedForDeletionCreatedBy(judge, annotationHearing);
Expand Down Expand Up @@ -126,11 +125,11 @@ void returns404IfAnnotationDoesntExist() throws Exception {
}

private AnnotationEntity someAnnotationNotMarkedForDeletionCreatedBy(UserAccountEntity userAccount) {
return someAnnotationForHearingNotMarkedForDeletionCreatedBy(userAccount, someMinimalHearing());
return someAnnotationForHearingNotMarkedForDeletionCreatedBy(userAccount, PersistableFactory.getHearingTestData().someMinimalHearing());
}

private AnnotationEntity someAnnotationForHearingNotMarkedForDeletionCreatedBy(UserAccountEntity userAccount, HearingEntity hearing) {
var annotation = minimalAnnotationEntity();
var annotation = PersistableFactory.getAnnotationTestData().minimalAnnotationEntity();
annotation.setDeleted(false);
annotation.setCurrentOwner(userAccount);
annotation.setCreatedBy(userAccount);
Expand All @@ -140,4 +139,4 @@ private AnnotationEntity someAnnotationForHearingNotMarkedForDeletionCreatedBy(U
dartsPersistence.save(annotation);
return annotation;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,14 @@
import uk.gov.hmcts.darts.common.entity.AnnotationEntity;
import uk.gov.hmcts.darts.common.entity.UserAccountEntity;
import uk.gov.hmcts.darts.common.enums.ExternalLocationTypeEnum;
import uk.gov.hmcts.darts.test.common.data.PersistableFactory;
import uk.gov.hmcts.darts.testutils.GivenBuilder;
import uk.gov.hmcts.darts.testutils.IntegrationBase;

import java.io.InputStream;
import java.time.OffsetDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

import static org.mockito.ArgumentMatchers.anyList;
Expand All @@ -30,8 +33,6 @@
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static uk.gov.hmcts.darts.common.enums.ObjectRecordStatusEnum.STORED;
import static uk.gov.hmcts.darts.common.enums.SecurityRoleEnum.JUDICIARY;
import static uk.gov.hmcts.darts.test.common.data.AnnotationTestData.minimalAnnotationEntity;
import static uk.gov.hmcts.darts.test.common.data.HearingTestData.someMinimalHearing;

@AutoConfigureMockMvc
class AnnotationGetTest extends IntegrationBase {
Expand Down Expand Up @@ -131,14 +132,13 @@ private AnnotationDocumentEntity createValidAnnotationDocumentForDownload(UserAc
}

private AnnotationEntity someAnnotationCreatedBy(UserAccountEntity userAccount) {
var annotation = minimalAnnotationEntity();
annotation.setDeleted(false);
annotation.setCurrentOwner(userAccount);
annotation.setCreatedBy(userAccount);
annotation.setLastModifiedBy(userAccount);
annotation.addHearing(someMinimalHearing());
dartsPersistence.save(annotation);
return annotation;
var annotation = PersistableFactory.getAnnotationTestData().someMinimalBuilder()
.deleted(false).currentOwner(userAccount)
.createdBy(userAccount)
.lastModifiedBy(userAccount)
.hearingList(new ArrayList<>(List.of(PersistableFactory.getHearingTestData().someMinimalHearing())));

return dartsPersistence.save(annotation.build().getEntity());
}

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import uk.gov.hmcts.darts.annotations.model.Annotation;
import uk.gov.hmcts.darts.common.entity.AnnotationEntity;
import uk.gov.hmcts.darts.common.entity.HearingEntity;
import uk.gov.hmcts.darts.test.common.data.PersistableFactory;
import uk.gov.hmcts.darts.testutils.GivenBuilder;
import uk.gov.hmcts.darts.testutils.IntegrationBase;

Expand All @@ -25,7 +26,6 @@
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.multipart;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static uk.gov.hmcts.darts.common.enums.SecurityRoleEnum.JUDICIARY;
import static uk.gov.hmcts.darts.test.common.data.HearingTestData.someMinimalHearing;

@AutoConfigureMockMvc
class AnnotationPostTest extends IntegrationBase {
Expand All @@ -43,7 +43,7 @@ class AnnotationPostTest extends IntegrationBase {
@Test
void returnsAnnotationId() throws Exception {
given.anAuthenticatedUserWithGlobalAccessAndRole(JUDICIARY);
HearingEntity hearingEntity = someMinimalHearing();
HearingEntity hearingEntity = PersistableFactory.getHearingTestData().someMinimalHearing();
hearingEntity = dartsPersistence.save(hearingEntity);

var mvcResult = mockMvc.perform(
Expand Down Expand Up @@ -71,7 +71,7 @@ void returnsAnnotationId() throws Exception {
@Test
void allowsJudgeWithGlobalAccessToUploadAnnotations() throws Exception {
given.anAuthenticatedUserWithGlobalAccessAndRole(JUDICIARY);
HearingEntity hearingEntity = someMinimalHearing();
HearingEntity hearingEntity = PersistableFactory.getHearingTestData().someMinimalHearing();
hearingEntity = dartsPersistence.save(hearingEntity);
mockMvc.perform(
multipart(ENDPOINT)
Expand All @@ -83,7 +83,7 @@ void allowsJudgeWithGlobalAccessToUploadAnnotations() throws Exception {

@Test
void allowsJudgeAuthorisedForCourthouseAccessToUploadAnnotations() throws Exception {
var hearing = dartsPersistence.save(someMinimalHearing());
var hearing = dartsPersistence.save(PersistableFactory.getHearingTestData().someMinimalHearing());
given.anAuthenticatedUserAuthorizedForCourthouse(JUDICIARY, hearing.getCourtroom().getCourthouse());

mockMvc.perform(
Expand All @@ -100,7 +100,7 @@ void returns400IfAnnotationDocumentMissing() throws Exception {

mockMvc.perform(
multipart(ENDPOINT)
.file(someAnnotationPostBodyFor(someMinimalHearing())))
.file(someAnnotationPostBodyFor(PersistableFactory.getHearingTestData().someMinimalHearing())))
.andExpect(status().isBadRequest())
.andReturn();
}
Expand Down Expand Up @@ -159,4 +159,4 @@ private static MockMultipartFile someAnnotationPostDocument() {
);
}

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import uk.gov.hmcts.darts.common.entity.AnnotationDocumentEntity;
import uk.gov.hmcts.darts.common.entity.AnnotationEntity;
import uk.gov.hmcts.darts.common.entity.HearingEntity;
import uk.gov.hmcts.darts.test.common.data.PersistableFactory;
import uk.gov.hmcts.darts.testutils.IntegrationBase;

import java.util.List;
Expand All @@ -23,7 +24,6 @@
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static uk.gov.hmcts.darts.test.common.data.HearingTestData.someMinimalHearing;

@SuppressWarnings("VariableDeclarationUsageDistance")
@Slf4j
Expand All @@ -46,7 +46,7 @@ void setUp() {

@Test
void persistsAnnotationCorrectly() {
var hearing = dartsPersistence.save(someMinimalHearing());
var hearing = dartsPersistence.save(PersistableFactory.getHearingTestData().someMinimalHearing());
var annotation = someAnnotationFor(hearing);
var document = someMultipartFile();

Expand All @@ -57,7 +57,7 @@ void persistsAnnotationCorrectly() {

@Test
void addsAnnotationToCorrectHearing() {
var hearing = dartsPersistence.save(someMinimalHearing());
var hearing = dartsPersistence.save(PersistableFactory.getHearingTestData().someMinimalHearing());
var annotation = someAnnotationFor(hearing);
var document = someMultipartFile();

Expand All @@ -70,7 +70,7 @@ void addsAnnotationToCorrectHearing() {

@Test
void persistsAnnotationDocumentCorrectly() {
var hearing = dartsPersistence.save(someMinimalHearing());
var hearing = dartsPersistence.save(PersistableFactory.getHearingTestData().someMinimalHearing());
var annotation = someAnnotationFor(hearing);
var document = someMultipartFile();

Expand All @@ -81,7 +81,7 @@ void persistsAnnotationDocumentCorrectly() {

@Test
void persistExternalObjectDirectoryCorrectly() {
var hearing = dartsPersistence.save(someMinimalHearing());
var hearing = dartsPersistence.save(PersistableFactory.getHearingTestData().someMinimalHearing());
var annotation = someAnnotationFor(hearing);
var document = someMultipartFile();

Expand Down Expand Up @@ -110,4 +110,4 @@ private Annotation someAnnotationFor(HearingEntity hearing) {
return annotation;
}

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,13 @@
import uk.gov.hmcts.darts.common.entity.CourtCaseEntity;
import uk.gov.hmcts.darts.common.repository.AnnotationDocumentRepository;
import uk.gov.hmcts.darts.common.repository.AnnotationRepository;
import uk.gov.hmcts.darts.test.common.data.AnnotationDocumentTestData;
import uk.gov.hmcts.darts.test.common.data.HearingTestData;
import uk.gov.hmcts.darts.test.common.data.PersistableFactory;
import uk.gov.hmcts.darts.testutils.IntegrationBase;
import uk.gov.hmcts.darts.testutils.stubs.AnnotationStub;
import uk.gov.hmcts.darts.testutils.stubs.CourtCaseStub;

import static java.util.Arrays.stream;
import static org.assertj.core.api.Assertions.assertThat;
import static uk.gov.hmcts.darts.test.common.data.CaseTestData.createSomeMinimalCase;

class AnnotationDocumentRepositoryIntTest extends IntegrationBase {

Expand All @@ -43,8 +41,8 @@ void closeHibernateSession() {
@Test
void findsAnnotationDocumentsByCaseId() {
// given
var courtCaseA = createSomeMinimalCase();
var courtCaseB = createSomeMinimalCase();
var courtCaseA = PersistableFactory.getCourtCaseTestData().createSomeMinimalCase();
var courtCaseB = PersistableFactory.getCourtCaseTestData().createSomeMinimalCase();
var annotationDocument1 = createAnnotationDocumentForCases(courtCaseA);
var annotationDocument2 = createAnnotationDocumentForCases(courtCaseA);
var annotationDocument3 = createAnnotationDocumentForCases(courtCaseA);
Expand All @@ -65,17 +63,17 @@ void findsAnnotationDocumentsByCaseId() {

@Test
void canGetAssociatedCasesFromAnnotationDocument() {
var courtCaseA = createSomeMinimalCase();
var courtCaseB = createSomeMinimalCase();
var courtCaseA = PersistableFactory.getCourtCaseTestData().createSomeMinimalCase();
var courtCaseB = PersistableFactory.getCourtCaseTestData().createSomeMinimalCase();
var annotationDocument1 = createAnnotationDocumentForCases(courtCaseA, courtCaseB);

assertThat(annotationDocument1.associatedCourtCases()).containsExactlyInAnyOrder(courtCaseA, courtCaseB);
}

private AnnotationDocumentEntity createAnnotationDocumentForCases(CourtCaseEntity... courtCases) {
var hearingEntities = stream(courtCases).map(HearingTestData::createHearingFor).toList();
var annotationDocument = AnnotationDocumentTestData.createAnnotationDocumentForHearings(hearingEntities);
var hearingEntities = stream(courtCases).map(PersistableFactory.getHearingTestData()::createHearingFor).toList();
var annotationDocument = PersistableFactory.getAnnotationDocumentTestData().createAnnotationDocumentForHearings(hearingEntities);
return dartsPersistence.save(annotationDocument);
}

}
}
Loading

0 comments on commit 8c0e575

Please sign in to comment.