2424import java .time .temporal .ChronoUnit ;
2525import java .util .ArrayList ;
2626import java .util .List ;
27+ import java .util .Map ;
2728import java .util .UUID ;
2829import java .util .stream .Collectors ;
2930
31+ import org .jetbrains .annotations .NotNull ;
3032import org .junit .jupiter .api .BeforeEach ;
3133import org .junit .jupiter .api .Test ;
3234import org .junit .jupiter .api .extension .ExtendWith ;
@@ -48,6 +50,7 @@ public class EhrExtractStatusServiceTest {
4850
4951 public static final Instant NOW = Instant .now ();
5052 private static final Instant FIVE_DAYS_AGO = NOW .minus (Duration .ofDays (5 ));
53+ private static final int DEFAULT_CONTENT_LENGTH = 244 ;
5154
5255 @ Autowired
5356 private EhrExtractStatusService ehrExtractStatusService ;
@@ -63,6 +66,58 @@ public void emptyDatabase() {
6366 ehrExtractStatusRepository .deleteAll ();
6467 }
6568
69+ @ Test
70+ public void When_FetchDocumentObjectNameAndSize_With_OneMissingAttachment_Expect_Returned () {
71+ var inProgressConversationId = generateRandomUppercaseUUID ();
72+
73+ addInProgressTransfer (
74+ inProgressConversationId , List .of (
75+ EhrExtractStatus .GpcDocument .builder ()
76+ .fileName ("AbsentAttachment4E0C8345-A9AB-48EA-8882-DC9E9F3F5F60.rtx" )
77+ .documentId ("4E0C8345-A9AB-48EA-8882-DC9E9F3F5F60" )
78+ .contentLength (DEFAULT_CONTENT_LENGTH )
79+ .gpConnectErrorMessage ("404 Not Found" )
80+ .contentType ("application/msword" )
81+ .build ()
82+ )
83+ );
84+
85+ final var results = ehrExtractStatusService .fetchDocumentObjectNameAndSize (inProgressConversationId );
86+
87+ assertThat (results ).isEqualTo (Map .of (
88+ "FILENAME_PLACEHOLDER_ID=4E0C8345-A9AB-48EA-8882-DC9E9F3F5F60" , "AbsentAttachment4E0C8345-A9AB-48EA-8882-DC9E9F3F5F60.rtx" ,
89+ "LENGTH_PLACEHOLDER_ID=4E0C8345-A9AB-48EA-8882-DC9E9F3F5F60" , "244" ,
90+ "ERROR_MESSAGE_PLACEHOLDER_ID=4E0C8345-A9AB-48EA-8882-DC9E9F3F5F60" , "Absent Attachment: 404 Not Found " ,
91+ "CONTENT_TYPE_PLACEHOLDER_ID=4E0C8345-A9AB-48EA-8882-DC9E9F3F5F60" , "text/plain"
92+ ));
93+ }
94+
95+ @ Test
96+ public void When_FetchDocumentObjectNameAndSize_With_OnePresentAttachment_Expect_Returned () {
97+ var inProgressConversationId = generateRandomUppercaseUUID ();
98+
99+ addInProgressTransfer (
100+ inProgressConversationId , List .of (
101+ EhrExtractStatus .GpcDocument .builder ()
102+ .fileName ("4E0C8345-A9AB-48EA-8882-DC9E9F3F5F60.rtx" )
103+ .documentId ("4E0C8345-A9AB-48EA-8882-DC9E9F3F5F60" )
104+ .contentLength (DEFAULT_CONTENT_LENGTH )
105+ .gpConnectErrorMessage (null )
106+ .contentType ("application/msword" )
107+ .build ()
108+ )
109+ );
110+
111+ final var results = ehrExtractStatusService .fetchDocumentObjectNameAndSize (inProgressConversationId );
112+
113+ assertThat (results ).isEqualTo (Map .of (
114+ "FILENAME_PLACEHOLDER_ID=4E0C8345-A9AB-48EA-8882-DC9E9F3F5F60" , "4E0C8345-A9AB-48EA-8882-DC9E9F3F5F60.rtx" ,
115+ "LENGTH_PLACEHOLDER_ID=4E0C8345-A9AB-48EA-8882-DC9E9F3F5F60" , "244" ,
116+ "ERROR_MESSAGE_PLACEHOLDER_ID=4E0C8345-A9AB-48EA-8882-DC9E9F3F5F60" , "" ,
117+ "CONTENT_TYPE_PLACEHOLDER_ID=4E0C8345-A9AB-48EA-8882-DC9E9F3F5F60" , "application/msword"
118+ ));
119+ }
120+
66121 @ Test
67122 public void When_FindInProgressTransfers_With_OneInProgress_Expect_Returned () {
68123 var inProgressConversationId = generateRandomUppercaseUUID ();
@@ -132,7 +187,7 @@ public void When_FindInProgressTransfers_With_MultipleInProgress_Expect_AllRetur
132187 @ Test
133188 public void When_UpdateEhrExtractStatusAccessDocument_Expect_DocumentRecordUpdated () {
134189 when (timestampService .now ()).thenReturn (NOW );
135- var ehrStatus = addCompleteTransferWithDocuments ();
190+ var ehrStatus = addCompleteTransferWithDocument ();
136191
137192 updateEhrExtractStatusAccessDocument (ehrStatus .getConversationId (), DOCUMENT_ID );
138193
@@ -144,7 +199,8 @@ public void When_UpdateEhrExtractStatusAccessDocument_Expect_DocumentRecordUpdat
144199 () -> assertThat (actual .getObjectName ()).isEqualTo ("this is a storage path.path" ),
145200 () -> assertThat (actual .getMessageId ()).isEqualTo ("988290" ),
146201 () -> assertThat (actual .getContentLength ()).isEqualTo (1 ),
147- () -> assertThat (actual .getGpConnectErrorMessage ()).isEqualTo ("This is a fantastic error message" )
202+ () -> assertThat (actual .getGpConnectErrorMessage ()).isEqualTo ("This is a fantastic error message" ),
203+ () -> assertThat (actual .getFileName ()).isEqualTo ("NewUpdatedFileName.txt" )
148204 );
149205 }
150206
@@ -158,13 +214,14 @@ private EhrExtractStatus updateEhrExtractStatusAccessDocument(String conversatio
158214 .build (),
159215 "this is a storage path.path" ,
160216 1 ,
161- "This is a fantastic error message"
217+ "This is a fantastic error message" ,
218+ "NewUpdatedFileName.txt"
162219 );
163220 }
164221
165222 @ Test
166223 public void When_UpdateEhrExtractStatusAccessDocument_With_InvalidConversationId_Expect_ThrowsException () {
167- addCompleteTransferWithDocuments ();
224+ addCompleteTransferWithDocument ();
168225
169226 assertThrows (
170227 EhrExtractException .class ,
@@ -174,7 +231,7 @@ public void When_UpdateEhrExtractStatusAccessDocument_With_InvalidConversationId
174231
175232 @ Test
176233 public void When_UpdateEhrExtractStatusAccessDocument_With_InvalidDocumentId_Expect_ThrowsException () {
177- final var ehrStatus = addCompleteTransferWithDocuments ();
234+ final var ehrStatus = addCompleteTransferWithDocument ();
178235
179236 assertThrows (
180237 EhrExtractException .class ,
@@ -186,7 +243,7 @@ public void When_UpdateEhrExtractStatusAccessDocument_With_InvalidDocumentId_Exp
186243 @ Test
187244 public void When_UpdateEhrExtractStatusAccessDocument_Expect_ReturnsUpdatedEhrStatusRecord () {
188245 when (timestampService .now ()).thenReturn (NOW );
189- var ehrStatus = addCompleteTransferWithDocuments ();
246+ var ehrStatus = addCompleteTransferWithDocument ();
190247
191248 final var returnedRecord = updateEhrExtractStatusAccessDocument (ehrStatus .getConversationId (), DOCUMENT_ID );
192249
@@ -217,6 +274,10 @@ public void When_UpdateEhrExtractStatusAccessDocumentDocumentReferences_Expect_D
217274 }
218275
219276 private void addInProgressTransfer (String conversationId ) {
277+ addInProgressTransfer (conversationId , List .of ());
278+ }
279+
280+ private void addInProgressTransfer (String conversationId , List <EhrExtractStatus .GpcDocument > documents ) {
220281 EhrExtractStatus extractStatus = EhrExtractStatus .builder ()
221282 .ackPending (buildPositiveAckPending ())
222283 .ackToRequester (buildPositiveAckToRequester ())
@@ -232,7 +293,7 @@ private void addInProgressTransfer(String conversationId) {
232293 .ehrExtractMessageId (generateRandomUppercaseUUID ())
233294 .ehrRequest (buildEhrRequest ())
234295 .gpcAccessDocument (EhrExtractStatus .GpcAccessDocument .builder ()
235- .documents (new ArrayList <>() )
296+ .documents (documents )
236297 .build ())
237298 .gpcAccessStructured (EhrExtractStatus .GpcAccessStructured .builder ()
238299 .accessedAt (FIVE_DAYS_AGO )
@@ -334,59 +395,17 @@ private void addFailedIncumbentTransfer() {
334395 ehrExtractStatusRepository .save (extractStatus );
335396 }
336397
337- public EhrExtractStatus addCompleteTransfer () {
338- String ehrMessageRef = generateRandomUppercaseUUID ();
339-
340- EhrExtractStatus extractStatus = EhrExtractStatus .builder ()
341- .ackHistory (EhrExtractStatus .AckHistory .builder ()
342- .acks (List .of (
343- EhrExtractStatus .EhrReceivedAcknowledgement .builder ()
344- .rootId (generateRandomUppercaseUUID ())
345- .received (FIVE_DAYS_AGO )
346- .conversationClosed (FIVE_DAYS_AGO )
347- .messageRef (ehrMessageRef )
348- .build ()))
349- .build ())
350- .ackPending (EhrExtractStatus .AckPending .builder ()
351- .messageId (generateRandomUppercaseUUID ())
352- .taskId (generateRandomUppercaseUUID ())
353- .typeCode (ACK_TYPE )
354- .updatedAt (FIVE_DAYS_AGO .toString ())
355- .build ())
356- .ackToRequester (buildPositiveAckToRequester ())
357- .conversationId (generateRandomUppercaseUUID ())
358- .created (FIVE_DAYS_AGO )
359- .ehrExtractCore (EhrExtractStatus .EhrExtractCore .builder ()
360- .sentAt (FIVE_DAYS_AGO )
361- .build ())
362- .ehrExtractCorePending (EhrExtractStatus .EhrExtractCorePending .builder ()
363- .sentAt (FIVE_DAYS_AGO )
364- .taskId (generateRandomUppercaseUUID ())
365- .build ())
366- .ehrReceivedAcknowledgement (EhrExtractStatus .EhrReceivedAcknowledgement .builder ()
367- .conversationClosed (FIVE_DAYS_AGO )
368- .messageRef (ehrMessageRef )
369- .received (FIVE_DAYS_AGO )
370- .rootId (generateRandomUppercaseUUID ())
371- .build ())
372- .ehrRequest (buildEhrRequest ())
373- .gpcAccessDocument (EhrExtractStatus .GpcAccessDocument .builder ()
374- .documents (new ArrayList <>())
375- .build ())
376- .gpcAccessStructured (EhrExtractStatus .GpcAccessStructured .builder ()
377- .accessedAt (FIVE_DAYS_AGO )
378- .objectName (generateRandomUppercaseUUID () + ".json" )
379- .taskId (generateRandomUppercaseUUID ())
380- .build ())
381- .messageTimestamp (FIVE_DAYS_AGO )
382- .updatedAt (FIVE_DAYS_AGO )
383- .build ();
384-
385- return ehrExtractStatusRepository .save (extractStatus );
398+ private EhrExtractStatus addCompleteTransfer () {
399+ return addCompleteTransferWithDocuments (List .of ());
386400 }
387401
402+ private EhrExtractStatus addCompleteTransferWithDocument () {
403+ return addCompleteTransferWithDocuments (List .of (
404+ EhrExtractStatus .GpcDocument .builder ().documentId (DOCUMENT_ID ).build ()
405+ ));
406+ }
388407
389- public EhrExtractStatus addCompleteTransferWithDocuments () {
408+ private @ NotNull EhrExtractStatus addCompleteTransferWithDocuments (List < EhrExtractStatus . GpcDocument > documents ) {
390409 String ehrMessageRef = generateRandomUppercaseUUID ();
391410
392411 EhrExtractStatus extractStatus = EhrExtractStatus .builder ()
@@ -423,9 +442,7 @@ public EhrExtractStatus addCompleteTransferWithDocuments() {
423442 .build ())
424443 .ehrRequest (buildEhrRequest ())
425444 .gpcAccessDocument (EhrExtractStatus .GpcAccessDocument .builder ()
426- .documents (List .of (
427- EhrExtractStatus .GpcDocument .builder ().documentId (DOCUMENT_ID ).build ()
428- ))
445+ .documents (documents )
429446 .build ())
430447 .gpcAccessStructured (EhrExtractStatus .GpcAccessStructured .builder ()
431448 .accessedAt (FIVE_DAYS_AGO )
0 commit comments