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 8e4a9538eed7ec49fb441a886c74e980735eb865..2d663d603bd703c2cad6b1a5f5f604711ad17fd0 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 14bef27d4f07cc4bdada05cb85c409d14a71d01d..e4daf69633fd66f8588772d1c95897d7804dda92 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);