1414import uk .gov .hmcts .darts .arm .mapper .MediaArchiveRecordMapper ;
1515import uk .gov .hmcts .darts .arm .service .UnstructuredToArmBatchProcessor ;
1616import uk .gov .hmcts .darts .authorisation .component .UserIdentity ;
17+ import uk .gov .hmcts .darts .common .entity .AnnotationDocumentEntity ;
18+ import uk .gov .hmcts .darts .common .entity .AnnotationEntity ;
1719import uk .gov .hmcts .darts .common .entity .ExternalObjectDirectoryEntity ;
1820import uk .gov .hmcts .darts .common .entity .MediaEntity ;
1921import uk .gov .hmcts .darts .common .entity .UserAccountEntity ;
2022import uk .gov .hmcts .darts .common .exception .DartsException ;
2123import uk .gov .hmcts .darts .common .repository .ExternalObjectDirectoryRepository ;
2224import uk .gov .hmcts .darts .common .util .EodHelper ;
2325import uk .gov .hmcts .darts .log .api .LogApi ;
26+ import uk .gov .hmcts .darts .retention .enums .RetentionConfidenceScoreEnum ;
27+ import uk .gov .hmcts .darts .test .common .data .PersistableFactory ;
28+ import uk .gov .hmcts .darts .test .common .data .builder .TestAnnotationEntity ;
2429import uk .gov .hmcts .darts .testutils .IntegrationBase ;
2530import uk .gov .hmcts .darts .testutils .stubs .ExternalObjectDirectoryStub ;
2631
2732import java .time .Duration ;
33+ import java .time .OffsetDateTime ;
2834import java .util .ArrayList ;
2935import java .util .List ;
36+ import java .util .UUID ;
3037
3138import static java .lang .String .format ;
3239import static java .time .temporal .ChronoUnit .SECONDS ;
4754import static org .mockito .Mockito .when ;
4855import static uk .gov .hmcts .darts .common .enums .ExternalLocationTypeEnum .ARM ;
4956import static uk .gov .hmcts .darts .common .enums .ExternalLocationTypeEnum .UNSTRUCTURED ;
57+ import static uk .gov .hmcts .darts .common .enums .ObjectRecordStatusEnum .ARM_DROP_ZONE ;
5058import static uk .gov .hmcts .darts .common .enums .ObjectRecordStatusEnum .ARM_INGESTION ;
5159import static uk .gov .hmcts .darts .common .enums .ObjectRecordStatusEnum .ARM_MANIFEST_FAILED ;
5260import static uk .gov .hmcts .darts .common .enums .ObjectRecordStatusEnum .ARM_RAW_DATA_FAILED ;
5361import static uk .gov .hmcts .darts .common .enums .ObjectRecordStatusEnum .ARM_RAW_DATA_PUSHED ;
5462import static uk .gov .hmcts .darts .common .enums .ObjectRecordStatusEnum .ARM_RESPONSE_MANIFEST_FAILED ;
5563import static uk .gov .hmcts .darts .common .enums .ObjectRecordStatusEnum .STORED ;
64+ import static uk .gov .hmcts .darts .retention .enums .RetentionConfidenceScoreEnum .CASE_PERFECTLY_CLOSED ;
5665
5766@ Slf4j
5867class UnstructuredToArmBatchProcessorIntTest extends IntegrationBase {
5968
60- ArgumentCaptor <String > manifestFileNameCaptor = ArgumentCaptor .forClass (String .class );
69+ private final ArgumentCaptor <String > manifestFileNameCaptor = ArgumentCaptor .forClass (String .class );
6170
6271 @ MockitoSpyBean
6372 private ArmDataManagementApi armDataManagementApi ;
@@ -95,7 +104,7 @@ void setupData() {
95104 }
96105
97106 @ Test
98- void testBatchedQueryEqualsBatchSizeSuccess () {
107+ void processUnstructuredToArm_shouldReturnBatchedQueryEqualsBatchSizeSuccess () {
99108
100109 //given
101110 //batch size is 5
@@ -136,7 +145,7 @@ void testBatchedQueryEqualsBatchSizeSuccess() {
136145 }
137146
138147 @ Test
139- void testBatchedQueryWithBatchSizeGreaterThanManifestConfigSuccess () {
148+ void processUnstructuredToArm_ShouldBatchQueryWithBatchSizeGreaterThanManifestConfigSuccess () {
140149
141150 //given
142151 //batch size is 5 but manifest size is 3
@@ -181,7 +190,7 @@ void testBatchedQueryWithBatchSizeGreaterThanManifestConfigSuccess() {
181190 }
182191
183192 @ Test
184- void testBatchedQueryWithBatchSizeLessThanManifestConfigSuccess () {
193+ void processUnstructuredToArm_ShouldBatchQueryWithBatchSizeLessThanManifestConfigSuccess () {
185194
186195 //given
187196 //batch size is 3 but manifest size is 5
@@ -226,7 +235,7 @@ void testBatchedQueryWithBatchSizeLessThanManifestConfigSuccess() {
226235 }
227236
228237 @ Test
229- void testBatchedQueryWhereSomeFailedToPush () {
238+ void processUnstructuredToArm_ShouldBatchQueryWhereSomeFailedToPush () {
230239
231240 //given
232241 //batch size is 5
@@ -312,7 +321,7 @@ void testBatchedQueryWhereSomeFailedToPush() {
312321 }
313322
314323 @ Test
315- void movePendingMediaDataFromUnstructuredToArmStorage () {
324+ void processUnstructuredToArm_ShouldMovePendingMediaDataFromUnstructuredToArmStorage () {
316325
317326 //given
318327 List <MediaEntity > medias = dartsDatabase .getMediaStub ().createAndSaveSomeMedias ();
@@ -358,7 +367,7 @@ void movePendingMediaDataFromUnstructuredToArmStorage() {
358367 }
359368
360369 @ Test
361- void movePreviousArmFailedFromUnstructuredToArmStorage () {
370+ void processUnstructuredToArm_ShouldMovePreviousArmFailedFromUnstructuredToArmStorage () {
362371
363372 //given
364373 when (unstructuredToArmProcessorConfiguration .getMaxArmManifestItems ()).thenReturn (5 );
@@ -415,7 +424,7 @@ void movePreviousArmFailedFromUnstructuredToArmStorage() {
415424 }
416425
417426 @ Test
418- void movePreviousArmFailedWithNoCorrespondingUnstructuredFailsAndProcessingContinues () {
427+ void processUnstructuredToArm_ShouldMovePreviousArmFailedWithNoCorrespondingUnstructuredFailsAndProcessingContinues () {
419428
420429 //given
421430 List <MediaEntity > medias = dartsDatabase .getMediaStub ().createAndSaveSomeMedias ();
@@ -446,7 +455,7 @@ void movePreviousArmFailedWithNoCorrespondingUnstructuredFailsAndProcessingConti
446455 }
447456
448457 @ Test
449- void pushRawDataFails () {
458+ void processUnstructuredToArm_ShouldPushRawDataFails () {
450459
451460 //given
452461 List <MediaEntity > medias = dartsDatabase .getMediaStub ().createAndSaveSomeMedias ();
@@ -476,7 +485,7 @@ void pushRawDataFails() {
476485 }
477486
478487 @ Test
479- void generationOfManifestFileEntryFails () {
488+ void processUnstructuredToArm_ShouldGenerationOfManifestFileEntryFails () {
480489 testUser = dartsDatabase .getUserAccountStub ().getIntegrationTestUserAccountEntity ();
481490 when (userIdentity .getUserAccount ()).thenReturn (testUser );
482491 when (unstructuredToArmProcessorConfiguration .getMaxArmManifestItems ()).thenReturn (5 );
@@ -508,7 +517,7 @@ void generationOfManifestFileEntryFails() {
508517 }
509518
510519 @ Test
511- void writingManifestFileFails () {
520+ void processUnstructuredToArm_ShouldWriteManifestFileFails () {
512521
513522 //given
514523 List <MediaEntity > medias = dartsDatabase .getMediaStub ().createAndSaveSomeMedias ();
@@ -537,7 +546,7 @@ void writingManifestFileFails() {
537546 }
538547
539548 @ Test
540- void pushingManifestFileFails () {
549+ void processUnstructuredToArm_ShouldPushManifestFileFails () {
541550
542551 //given
543552 List <MediaEntity > medias = dartsDatabase .getMediaStub ().createAndSaveSomeMedias ();
@@ -564,7 +573,7 @@ void pushingManifestFileFails() {
564573 }
565574
566575 @ Test
567- void movePendingMediaDataFromUnstructuredToArmStorage_WithSpecialCharacters () {
576+ void processUnstructuredToArm_ShouldMovePendingMediaDataFromUnstructuredToArmStorage_WithSpecialCharacters () {
568577
569578 //given
570579 List <MediaEntity > medias = dartsDatabase .getMediaStub ().createAndSaveSomeMedias ();
@@ -610,4 +619,58 @@ void movePendingMediaDataFromUnstructuredToArmStorage_WithSpecialCharacters() {
610619 assertThat (armDropZoneEodsMedia0 .getFirst ().getLastModifiedDateTime ()).isCloseToUtcNow (within (1 , SECONDS ));
611620 assertThat (armDropZoneEodsMedia1 .getFirst ().getManifestFile ()).isEqualTo (manifestFileName );
612621 }
622+
623+ @ Test
624+ void processUnstructuredToArm_ShouldMoveAnnotationDocumentFromUnstructuredToArmStorage () {
625+ TestAnnotationEntity .TestAnnotationEntityRetrieve annotationEntityRetrieve
626+ = PersistableFactory .getAnnotationTestData ().someMinimalBuilderHolder ();
627+
628+ AnnotationEntity annotation = annotationEntityRetrieve .getBuilder ().text ("TestAnnotation" ).build ().getEntity ();
629+
630+ when (userIdentity .getUserAccount ()).thenReturn (testUser );
631+ final String fileName = "judges-notes.txt" ;
632+ final String fileType = "text/plain" ;
633+ final int fileSize = 123 ;
634+ final OffsetDateTime uploadedDateTime = OffsetDateTime .now ();
635+ final String checksum = "123" ;
636+ final String confidenceReason = "reason" ;
637+ final RetentionConfidenceScoreEnum confidenceScore = CASE_PERFECTLY_CLOSED ;
638+ final String externalRecordId = "recordId" ;
639+
640+ AnnotationDocumentEntity annotationDocument = PersistableFactory
641+ .getAnnotationDocumentTestData ().someMinimalBuilder ().annotation (annotation )
642+ .fileName (fileName )
643+ .fileType (fileType )
644+ .fileSize (fileSize )
645+ .lastModifiedById (testUser .getId ())
646+ .lastModifiedTimestamp (uploadedDateTime )
647+ .checksum (checksum )
648+ .retConfScore (confidenceScore )
649+ .retConfReason (confidenceReason ).build ().getEntity ();
650+
651+ dartsPersistence .save (annotationDocument );
652+
653+ ExternalObjectDirectoryEntity unstructuredEod = PersistableFactory .getExternalObjectDirectoryTestData ()
654+ .someMinimalBuilder ().annotationDocumentEntity (annotationDocument ).media (null )
655+ .status (dartsDatabase .getObjectRecordStatusEntity (STORED ))
656+ .externalLocationType (dartsDatabase .getExternalLocationTypeEntity (UNSTRUCTURED ))
657+ .externalLocation (UUID .randomUUID ().toString ()).build ().getEntity ();
658+
659+ unstructuredEod .setExternalRecordId (externalRecordId );
660+ unstructuredEod .setUpdateRetention (true );
661+ dartsPersistence .save (unstructuredEod );
662+
663+ //when
664+ unstructuredToArmProcessor .processUnstructuredToArm (5 );
665+
666+ //then
667+ List <ExternalObjectDirectoryEntity > armEods = eodRepository .findByAnnotationDocumentEntityAndExternalLocationType (
668+ annotationDocument , EodHelper .armLocation ());
669+
670+ assertThat (armEods ).hasSize (1 );
671+ ExternalObjectDirectoryEntity armEod = armEods .get (0 );
672+ assertThat (armEod .getStatus ().getId ()).isEqualTo (ARM_DROP_ZONE .getId ());
673+
674+ }
675+
613676}
0 commit comments