Skip to content
Snippets Groups Projects
Commit a7870b09 authored by Lukas Malte Monnerjahn's avatar Lukas Malte Monnerjahn
Browse files

OZG-6240 XtaTransportReportRepository

parent 308edc89
No related branches found
No related tags found
No related merge requests found
package de.ozgcloud.xta.test.app.data;
import java.time.Clock;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Optional;
......@@ -13,20 +14,37 @@ import de.ozgcloud.xta.test.app.model.XtaTransportReport;
@Component
@RequiredArgsConstructor
public class XtaTransportReportRepository {
private final HashMap<String, XtaTransportReport> transportReports = new HashMap<>();
private final HashMap<String, XtaMessageMetaData> messageIdTomessageMetaData = new HashMap<>();
private final HashMap<String, XtaTransportReport.MessageStatus> messageIdToStatus = new HashMap<>();
private final Clock clock;
public void add(XtaMessageMetaData messageMetaData) {
// TODO Auto-generated method stub
public boolean add(XtaMessageMetaData messageMetaData) {
if (messageIdTomessageMetaData.containsKey(messageMetaData.messageId())) {
return false;
}
messageIdTomessageMetaData.put(messageMetaData.messageId(), messageMetaData);
messageIdToStatus.put(messageMetaData.messageId(), XtaTransportReport.MessageStatus.OFFEN);
return true;
}
public boolean setClosedStatus(String messageId) {
if (!messageIdToStatus.containsKey(messageId)) {
return false;
}
public void setClosedStatus(String messageId) {
// TODO Auto-generated method stub
messageIdToStatus.put(messageId, XtaTransportReport.MessageStatus.GRUEN);
return true;
}
public Optional<XtaTransportReport> get(String messageId) {
// TODO Auto-generated method stub
if (messageIdTomessageMetaData.containsKey(messageId)) {
return Optional.of(XtaTransportReport.builder()
.messageMetaData(messageIdTomessageMetaData.get(messageId))
.status(messageIdToStatus.get(messageId))
.reportTime(LocalDateTime.now(clock))
.build());
}
return Optional.empty();
}
}
package de.ozgcloud.xta.test.app.data;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.when;
import java.time.Clock;
import java.time.Instant;
......@@ -10,7 +9,6 @@ import java.time.LocalDateTime;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import de.ozgcloud.xta.test.app.factory.XtaMessageMetaDataTestFactory;
import de.ozgcloud.xta.test.app.model.XtaMessageMetaData;
......@@ -18,13 +16,13 @@ import de.ozgcloud.xta.test.app.model.XtaTransportReport;
public class XtaTransportReportRepositoryTest {
private XtaTransportReportRepository repository;
@Mock
private Clock clock;
private final XtaMessageMetaData messageMetaData = XtaMessageMetaDataTestFactory.create();
@BeforeEach
void beforeEach() {
clock = Clock.fixed(Instant.now(), Clock.systemDefaultZone().getZone());
repository = new XtaTransportReportRepository(clock);
}
......@@ -39,11 +37,26 @@ public class XtaTransportReportRepositoryTest {
assertThat(result).isPresent();
assertThat(result.get().messageMetaData()).isEqualTo(messageMetaData);
}
@Test
void shouldReturnTrue() {
var result = repository.add(messageMetaData);
assertThat(result).isTrue();
}
@Test
void shouldReturnFalseForDuplicateMessageId() {
repository.add(messageMetaData);
var result = repository.add(messageMetaData);
assertThat(result).isFalse();
}
}
@Nested
class Get {
private final Instant instant = Instant.now();
@Test
void shouldReturnEmpty() {
......@@ -64,13 +77,12 @@ public class XtaTransportReportRepositoryTest {
@Test
void shouldSetReportTimeNow() {
when(clock.instant()).thenReturn(instant);
repository.add(messageMetaData);
var result = repository.get(messageMetaData.messageId());
assertThat(result).isPresent();
assertThat(result.get().reportTime()).isEqualTo(LocalDateTime.from(instant));
assertThat(result.get().reportTime()).isEqualTo(LocalDateTime.now(clock));
}
}
......@@ -79,12 +91,28 @@ public class XtaTransportReportRepositoryTest {
@Test
void shouldSetClosedStatus() {
repository.add(messageMetaData);
repository.setClosedStatus(messageMetaData.messageId());
var report = repository.get(messageMetaData.messageId());
var result = repository.get(messageMetaData.messageId());
assertThat(report).isPresent();
assertThat(report.get().status()).isEqualTo(XtaTransportReport.MessageStatus.GRUEN);
}
assertThat(result).isPresent();
assertThat(result.get().status()).isEqualTo(XtaTransportReport.MessageStatus.GRUEN);
@Test
void shouldReturnTrueOnSuccess() {
repository.add(messageMetaData);
var result = repository.setClosedStatus(messageMetaData.messageId());
assertThat(result).isTrue();
}
@Test
void shouldReturnFalseOnMissingMessageId() {
var result = repository.setClosedStatus(messageMetaData.messageId());
assertThat(result).isFalse();
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment