From 5cbebaf19505bf316ce981ff481fda0803879693 Mon Sep 17 00:00:00 2001
From: Lukas Malte Monnerjahn <lukasmalte.monnerjahn@dataport.de>
Date: Tue, 10 Sep 2024 13:26:39 +0200
Subject: [PATCH] OZG-6240 KOP-2589 adjust XtaMessageService for
 TransportReports

---
 .../xta/test/app/service/XtaMessageService.java       | 11 ++++++++---
 .../xta/test/app/service/XtaMessageServiceTest.java   | 10 ++++++----
 2 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/src/main/java/de/ozgcloud/xta/test/app/service/XtaMessageService.java b/src/main/java/de/ozgcloud/xta/test/app/service/XtaMessageService.java
index 8e4a953..2d663d6 100644
--- a/src/main/java/de/ozgcloud/xta/test/app/service/XtaMessageService.java
+++ b/src/main/java/de/ozgcloud/xta/test/app/service/XtaMessageService.java
@@ -23,8 +23,11 @@ public class XtaMessageService {
 	private final Environment environment;
 
 	public boolean sendMessage(XtaMessage message) {
-		messageRepository.save(message);
-		return true;
+		if (transportReportRepository.add(message.metaData())) {
+			messageRepository.save(message);
+			return true;
+		}
+		return false;
 	}
 
 	public XtaMessageMetaDataListing getStatusList(XtaMessageMetaDataListingRequest listingRequest) {
@@ -52,10 +55,12 @@ public class XtaMessageService {
 	}
 
 	public boolean closeMessage(XtaCloseRequest request) {
-		return messageRepository.deleteByMessageIdAndReaderIdentifierValue(
+		var isDeleted = messageRepository.deleteByMessageIdAndReaderIdentifierValue(
 				request.messageId(),
 				request.clientIdentifier().value()
 		);
+		var isClosed = transportReportRepository.setClosedStatus(request.messageId());
+		return isDeleted && isClosed;
 	}
 
 	public Optional<XtaTransportReport> getTransportReport(XtaGetTransportReportRequest request) {
diff --git a/src/test/java/de/ozgcloud/xta/test/app/service/XtaMessageServiceTest.java b/src/test/java/de/ozgcloud/xta/test/app/service/XtaMessageServiceTest.java
index 14bef27..e4daf69 100644
--- a/src/test/java/de/ozgcloud/xta/test/app/service/XtaMessageServiceTest.java
+++ b/src/test/java/de/ozgcloud/xta/test/app/service/XtaMessageServiceTest.java
@@ -62,6 +62,7 @@ public class XtaMessageServiceTest {
 
 		@Test
 		void shouldSaveMessage() {
+			when(transportReportRepository.add(message.metaData())).thenReturn(true);
 			message = XtaMessageTestFactory.create(MESSAGE_ID);
 
 			service.sendMessage(message);
@@ -207,6 +208,7 @@ public class XtaMessageServiceTest {
 			when(messageRepository.deleteByMessageIdAndReaderIdentifierValue(
 					request.messageId(), request.clientIdentifier().value())
 			).thenReturn(deleted);
+			when(transportReportRepository.setClosedStatus(request.messageId())).thenReturn(deleted);
 
 			boolean result = service.closeMessage(request);
 
@@ -229,8 +231,8 @@ public class XtaMessageServiceTest {
 				.messageId(MESSAGE_ID_1)
 				.clientIdentifier(READER_IDENTIFIER)
 				.build();
-		private static final Predicate<XtaMessage> IS_AUTHOR_OR_READER = m -> true;
-		private static final Predicate<XtaMessage> IS_NOT_AUTHOR_OR_READER = m -> false;
+		private static final Predicate<XtaTransportReport> IS_AUTHOR_OR_READER = m -> true;
+		private static final Predicate<XtaTransportReport> IS_NOT_AUTHOR_OR_READER = m -> false;
 
 		@Mock
 		XtaTransportReport report;
@@ -239,7 +241,7 @@ public class XtaMessageServiceTest {
 		@Test
 		void shouldReturn() {
 			when(transportReportRepository.get(MESSAGE_ID_1)).thenReturn(Optional.of(report));
-			doReturn(IS_AUTHOR_OR_READER).when(service).isAuthorOrReaderOfMessage(READER_IDENTIFIER.value());
+			doReturn(IS_AUTHOR_OR_READER).when(service).isAuthorOrReaderOfTransportReport(READER_IDENTIFIER.value());
 
 			var result = service.getTransportReport(GET_TRANSPORT_REPORT_REQUEST);
 
@@ -260,7 +262,7 @@ public class XtaMessageServiceTest {
 		@Test
 		void shouldReturnEmptyIfNotAuthorOrReader() {
 			when(transportReportRepository.get(MESSAGE_ID_1)).thenReturn(Optional.of(report));
-			doReturn(IS_NOT_AUTHOR_OR_READER).when(service).isAuthorOrReaderOfMessage(READER_IDENTIFIER.value());
+			doReturn(IS_NOT_AUTHOR_OR_READER).when(service).isAuthorOrReaderOfTransportReport(READER_IDENTIFIER.value());
 
 			var result = service.getTransportReport(GET_TRANSPORT_REPORT_REQUEST);
 
-- 
GitLab