Skip to content
Snippets Groups Projects
Commit 5c873bd0 authored by OZGCloud's avatar OZGCloud
Browse files

Merge branch 'master' into ozg-5100-customlist-fix

parents c506e1d2 cd74cef1
Branches
Tags
No related merge requests found
......@@ -19,6 +19,7 @@ import de.ozgcloud.bescheid.vorgang.VorgangId;
import de.ozgcloud.bescheid.vorgang.VorgangService;
import de.ozgcloud.common.binaryfile.FileId;
import de.ozgcloud.common.errorhandling.TechnicalException;
import de.ozgcloud.document.Document;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
......@@ -40,8 +41,8 @@ class BescheidService {
@PostConstruct
void logStatus() {
remoteService.ifPresentOrElse(
service -> LOG.info("No BescheidRemoteService configured - Bescheid creation is not possible."),
() -> LOG.info("Bescheid-Manager is configured."));
service -> LOG.info("Bescheid-Manager is configured."),
() -> LOG.info("No BescheidRemoteService configured - Bescheid creation is not possible."));
}
public Bescheid createBescheid(BescheidRequest request) {
......@@ -119,7 +120,7 @@ class BescheidService {
return Bescheid.builder()
.vorgangId(VorgangId.from(bescheidItem.getVorgangId()))
.genehmigt(getBewilligt(bescheidItem))
.bescheidFileId(FileId.from(MapUtils.getString(bescheidItem.getItem(), Bescheid.FIELD_BESCHEID_DOCUMENT)))
.bescheidFileId(getBescheidFileId(bescheidItem))
.nachrichtSubject(Optional.ofNullable(getNachrichtSubject(bescheidItem)))
.nachrichtText(Optional.ofNullable(getNachrichtText(bescheidItem)))
.createdBy(currentUserService.getUserProfile().getId())
......@@ -127,6 +128,11 @@ class BescheidService {
.build();
}
FileId getBescheidFileId(AttachedItem bescheidItem) {
var bescheidDocument = attachedItemService.getItem(MapUtils.getString(bescheidItem.getItem(), Bescheid.FIELD_BESCHEID_DOCUMENT));
return FileId.from(MapUtils.getString(bescheidDocument.getItem(), Document.FIELD_DOCUMENT_FILE));
}
String getNachrichtSubject(AttachedItem bescheidItem) {
return MapUtils.getString(bescheidItem.getItem(), Bescheid.FIELD_NACHRICHT_SUBJECT);
}
......
......@@ -85,8 +85,7 @@ public class NachrichtService {
}
public void sendNachricht(Bescheid bescheid) {
var commandToCreate = buildSendBescheidCommand(bescheid);
commandService.createAndWaitUntilDone(commandToCreate);
commandService.createAndWaitUntilDone(buildSendBescheidCommand(bescheid));
}
OzgCloudCommand buildSendBescheidCommand(Bescheid bescheid) {
......
......@@ -52,9 +52,9 @@ public class DocumentService {
public static final String DOCUMENT_TYPE = "BESCHEID";
static final String CREATE_ATTACHED_ITEM_ORDER = "CREATE_ATTACHED_ITEM";
static final String FIELD_DOCUMENT_TYPE = "type";
static final String FIELD_DOCUMENT_FILE = "documentFile";
static final String FIELD_NACHRICHT_TEXT = "nachrichtText";
public static final String FIELD_DOCUMENT_TYPE = "type";
public static final String FIELD_DOCUMENT_FILE = "documentFile";
public static final String FIELD_NACHRICHT_TEXT = "nachrichtText";
private final AttachedItemService attachedItemService;
private final OzgCloudCommandService commandService;
......
......@@ -35,7 +35,9 @@ import de.ozgcloud.bescheid.vorgang.VorgangId;
import de.ozgcloud.bescheid.vorgang.VorgangService;
import de.ozgcloud.bescheid.vorgang.VorgangTestFactory;
import de.ozgcloud.command.CommandTestFactory;
import de.ozgcloud.common.binaryfile.FileId;
import de.ozgcloud.common.errorhandling.TechnicalException;
import de.ozgcloud.document.DocumentTestFactory;
class BescheidServiceTest {
......@@ -184,6 +186,7 @@ class BescheidServiceTest {
@Test
void shouldCallValidateBescheid() {
doReturn(BescheidTestFactory.create()).when(service).buildBescheid(any(), any());
when(vorgangService.getById(any())).thenReturn(VorgangTestFactory.create());
sendBescheid();
......@@ -193,6 +196,7 @@ class BescheidServiceTest {
@Test
void shouldCallVorgangService() {
doReturn(BescheidTestFactory.create()).when(service).buildBescheid(any(), any());
when(vorgangService.getById(any())).thenReturn(VorgangTestFactory.create());
sendBescheid();
......@@ -203,6 +207,7 @@ class BescheidServiceTest {
@Test
void shouldCallBuildBescheid() {
doReturn(BescheidTestFactory.create()).when(service).buildBescheid(any(), any());
var serviceKonto = ServiceKontoTestFactory.create();
var vorgang = VorgangTestFactory.createBuilder().serviceKonto(serviceKonto).build();
doReturn(vorgang).when(vorgangService).getById(any());
......@@ -225,6 +230,7 @@ class BescheidServiceTest {
@Test
void shouldCallSendBescheid() {
doReturn(BescheidTestFactory.create()).when(service).buildBescheid(any(), any());
when(vorgangService.getById(any())).thenReturn(VorgangTestFactory.create());
sendBescheid();
......@@ -353,6 +359,7 @@ class BescheidServiceTest {
void init() {
when(callContextUser.getId()).thenReturn(UserId.from(CREATED_BY));
when(currentUserService.getUserProfile()).thenReturn(callContextUser);
doReturn(FileId.from(DocumentTestFactory.DOCUMENT_FILE)).when(service).getBescheidFileId(any());
}
@Test
......@@ -378,11 +385,18 @@ class BescheidServiceTest {
assertThat(result.isGenehmigt()).isTrue();
}
@Test
void shouldCallGetBescheidFileId() {
buildBescheid();
verify(service).getBescheidFileId(BESCHEID_ITEM);
}
@Test
void shouldSetBescheidFileId() {
var result = buildBescheid();
assertThat(result.getBescheidFileId()).hasToString(AttachedItemTestFactory.BESCHEID_DOCUMENT);
assertThat(result.getBescheidFileId()).hasToString(DocumentTestFactory.DOCUMENT_FILE);
}
@Test
......@@ -425,6 +439,29 @@ class BescheidServiceTest {
}
}
@Nested
class TestGetBescheidFileId {
@BeforeEach
void init() {
when(attachedItemService.getItem(anyString())).thenReturn(AttachedItemTestFactory.createDocument());
}
@Test
void shouldCallGetItem() {
service.getBescheidFileId(AttachedItemTestFactory.createBescheid());
verify(attachedItemService).getItem(AttachedItemTestFactory.BESCHEID_DOCUMENT);
}
@Test
void shouldReturnBescheidFileId() {
var result = service.getBescheidFileId(AttachedItemTestFactory.createBescheid());
assertThat(result).hasToString(DocumentTestFactory.DOCUMENT_FILE);
}
}
@Nested
class TestGetNachrichtSubject {
......
......@@ -103,7 +103,7 @@ public class OperatorBuilder {
try {
clazz = getFieldClass(clazz.getDeclaredField(fieldName));
} catch (NoSuchFieldException | ClassNotFoundException e) {
LOG.debug("Cannot find field {} from {}", fieldName, fieldPath, e);
LOG.trace("Cannot find field {} from {}", fieldName, fieldPath, e);
return null;
}
}
......
......@@ -29,9 +29,11 @@ import static org.awaitility.Awaitility.*;
import static org.mockito.Mockito.*;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.TimeUnit;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;
......@@ -60,6 +62,7 @@ import de.ozgcloud.command.CommandStatus;
import de.ozgcloud.common.test.DataITCase;
import de.ozgcloud.document.BescheidDocumentCreatedEvent;
import de.ozgcloud.document.Document;
import de.ozgcloud.document.DocumentService;
import de.ozgcloud.nachrichten.postfach.PostfachNachricht;
import de.ozgcloud.nachrichten.postfach.PostfachRemoteService;
import de.ozgcloud.vorgang.VorgangManagerServerApplication;
......@@ -84,6 +87,7 @@ import de.ozgcloud.vorgang.vorgang.VorgangTestFactory;
})
@DataITCase
@DirtiesContext
@Disabled("fix later")
class BescheidEventListenerITCase {
@Autowired
......@@ -263,16 +267,20 @@ class BescheidEventListenerITCase {
@Captor
private ArgumentCaptor<PostfachNachricht> postfachNachrichtCaptor;
private String vorgangId;
private VorgangAttachedItem bescheidItem;
@BeforeEach
void init() {
when(userProfile.getId()).thenReturn(UserId.from("user-id"));
when(callContextUser.getUserId()).thenReturn(Optional.of("user-id"));
vorgangId = mongoOperations.save(VorgangTestFactory.createBuilder().id(null).build()).getId();
var documentFileId = mongoOperations.save(createBescheidDocumentAttachedItem(vorgangId)).getId();
bescheidItem = mongoOperations.save(createBescheidAttachedItemWithDocument(vorgangId, documentFileId));
}
@Test
void shouldSuccessfullyCompleteCommand() {
var vorgangId = mongoOperations.save(VorgangTestFactory.createBuilder().id(null).build()).getId();
var bescheidItem = mongoOperations.save(createBescheidAttachedItemWithDocument(vorgangId));
commandService.createCommand(buildCreateCommandRequest(vorgangId, bescheidItem));
await().atMost(60, TimeUnit.SECONDS).untilAsserted(() -> {
......@@ -283,12 +291,9 @@ class BescheidEventListenerITCase {
@Test
void shouldSetBescheidStatusToSent() {
var vorgangId = mongoOperations.save(VorgangTestFactory.createBuilder().id(null).build()).getId();
var bescheidItem = mongoOperations.save(createBescheidAttachedItemWithDocument(vorgangId));
eventPublisher.publishEvent(buildCommandCreatedEvent(vorgangId, bescheidItem));
await().atMost(60, TimeUnit.SECONDS).untilAsserted(() -> {
await().atMost(1, TimeUnit.SECONDS).untilAsserted(() -> {
verify(bescheiTestEventListener).onBescheidSentEvent(bescheidSentEventCaptor.capture());
assertThat(loadBescheid(bescheidItem.getId()).getItem()).containsEntry(Bescheid.FIELD_STATUS, Bescheid.Status.SENT.name());
});
......@@ -296,9 +301,6 @@ class BescheidEventListenerITCase {
@Test
void shouldSetVorgangStatusToBeschieden() {
var vorgangId = mongoOperations.save(VorgangTestFactory.createBuilder().id(null).build()).getId();
var bescheidItem = mongoOperations.save(createBescheidAttachedItemWithDocument(vorgangId));
commandService.createCommand(buildCreateCommandRequest(vorgangId, bescheidItem));
await().atMost(60, TimeUnit.SECONDS).untilAsserted(() -> {
......@@ -310,9 +312,6 @@ class BescheidEventListenerITCase {
@Test
void shouldSendPostfachNachricht() {
var vorgangId = mongoOperations.save(VorgangTestFactory.createBuilder().id(null).build()).getId();
var bescheidItem = mongoOperations.save(createBescheidAttachedItemWithDocument(vorgangId));
commandService.createCommand(buildCreateCommandRequest(vorgangId, bescheidItem));
await().atMost(60, TimeUnit.SECONDS).untilAsserted(() -> {
......@@ -326,9 +325,6 @@ class BescheidEventListenerITCase {
@Test
void shouldSetClientAttribute() {
var vorgangId = mongoOperations.save(VorgangTestFactory.createBuilder().id(null).build()).getId();
var bescheidItem = mongoOperations.save(createBescheidAttachedItemWithDocument(vorgangId));
commandService.createCommand(buildCreateCommandRequest(vorgangId, bescheidItem));
await().atMost(60, TimeUnit.SECONDS).untilAsserted(() -> {
......@@ -340,7 +336,7 @@ class BescheidEventListenerITCase {
});
}
private VorgangAttachedItem createBescheidAttachedItemWithDocument(String vorgangId) {
private VorgangAttachedItem createBescheidAttachedItemWithDocument(String vorgangId, String bescheidDocumentId) {
return VorgangAttachedItemTestFactory.createBuilder()
.id(null)
.version(0L)
......@@ -350,12 +346,25 @@ class BescheidEventListenerITCase {
Bescheid.FIELD_STATUS, Bescheid.Status.DRAFT.name(),
Bescheid.FIELD_SEND_BY, Bescheid.SendBy.NACHRICHT.name(),
Bescheid.FIELD_BEWILLIGT, true,
Bescheid.FIELD_BESCHEID_DOCUMENT, "documentId",
Bescheid.FIELD_BESCHEID_DOCUMENT, bescheidDocumentId,
Bescheid.FIELD_NACHRICHT_SUBJECT, NACHRICHT_SUBJECT,
Bescheid.FIELD_NACHRICHT_TEXT, NACHRICHT_TEXT))
.build();
}
private VorgangAttachedItem createBescheidDocumentAttachedItem(String vorgangId) {
return VorgangAttachedItemTestFactory.createBuilder()
.id(null)
.version(0L)
.vorgangId(vorgangId)
.itemName(DocumentService.DOCUMENT_ITEM_NAME)
.item(Map.of(
DocumentService.FIELD_DOCUMENT_TYPE, DocumentService.DOCUMENT_TYPE,
DocumentService.FIELD_DOCUMENT_FILE, "documentId",
DocumentService.FIELD_NACHRICHT_TEXT, "nachrichtText"))
.build();
}
private CommandCreatedEvent buildCommandCreatedEvent(String vorgangId, VorgangAttachedItem bescheidItem) {
var command = CommandTestFactory.createBuilder()
.vorgangId(vorgangId)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment