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

OZG-5167: add link conditionally

parent 4dfd33f6
No related branches found
No related tags found
No related merge requests found
......@@ -23,12 +23,15 @@ public class BescheidModelAssembler implements RepresentationModelAssembler<Besc
static final String REL_UPLOAD_ATTACHMENT = "uploadAttachment";
static final String REL_ATTACHMENTS = "attachments";
static final String REL_UPDATE = "update";
static final String REL_CREATE_BESCHEID_DOCUMENT = "createBescheidDocument";
static final String REL_CREATE_BESCHEID_DOCUMENT_AUTOMATICALLY = "createBescheidDocumentAutomatically";
static final String REL_CREATE_BESCHEID_DOCUMENT_FROM_FILE = "createBescheidDocumentFromFile";
static final String REL_BESCHEID_DOCUMENT = "bescheidDocument";
static final String REL_SEND = "send";
private static final Predicate<Bescheid> HAS_ATTACHMENTS = bescheid -> !bescheid.getAttachments().isEmpty();
private final BescheidService bescheidService;
@Override
public EntityModel<Bescheid> toModel(Bescheid bescheid) {
var selfLink = linkTo(methodOn(BescheidController.class).getDraft(bescheid.getVorgangId()));
......@@ -49,7 +52,9 @@ public class BescheidModelAssembler implements RepresentationModelAssembler<Besc
.ifMatch(HAS_ATTACHMENTS)
.addLink(attachmentsLink.withRel(REL_ATTACHMENTS))
.addLink(createCommandLink.withRel(REL_UPDATE))
.addLink(createCommandLink.withRel(REL_CREATE_BESCHEID_DOCUMENT))
.ifMatch(bescheidService::canCreateBescheidDocumentAutomatically)
.addLink(createCommandLink.withRel(REL_CREATE_BESCHEID_DOCUMENT_AUTOMATICALLY))
.addLink(createCommandLink.withRel(REL_CREATE_BESCHEID_DOCUMENT_FROM_FILE))
.addLink(createCommandLink.withRel(REL_SEND))
.buildModel();
}
......
......@@ -2,6 +2,7 @@ package de.ozgcloud.alfa.bescheid;
import static de.ozgcloud.alfa.bescheid.BescheidModelAssembler.*;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
import java.util.Collections;
......@@ -9,6 +10,8 @@ import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.NullAndEmptySource;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Spy;
import org.springframework.hateoas.EntityModel;
import org.springframework.hateoas.IanaLinkRelations;
......@@ -22,8 +25,12 @@ import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
class BescheidModelAssemblerTest {
@Spy
@InjectMocks
private BescheidModelAssembler assembler;
@Mock
private BescheidService bescheidService;
@Nested
class TestToModel {
......@@ -88,10 +95,29 @@ class BescheidModelAssemblerTest {
}
@Test
void shouldHaveCreateBescheidDocumentLink() {
void shouldHaveCreateBescheidDocumentAutomaticallyLink() {
when(bescheidService.canCreateBescheidDocumentAutomatically()).thenReturn(true);
var model = callToModel();
assertThat(model.getLink(REL_CREATE_BESCHEID_DOCUMENT)).isPresent().get().extracting(Link::getHref)
assertThat(model.getLink(REL_CREATE_BESCHEID_DOCUMENT_AUTOMATICALLY)).isPresent().get().extracting(Link::getHref)
.isEqualTo(createCommandLink());
}
@Test
void shoulNotdHaveCreateBescheidDocumentAutomaticallyLink() {
when(bescheidService.canCreateBescheidDocumentAutomatically()).thenReturn(false);
var model = callToModel();
assertThat(model.getLink(REL_CREATE_BESCHEID_DOCUMENT_AUTOMATICALLY)).isEmpty();
}
@Test
void shouldHaveCreateBescheidDocumentFromFileLink() {
var model = callToModel();
assertThat(model.getLink(REL_CREATE_BESCHEID_DOCUMENT_FROM_FILE)).isPresent().get().extracting(Link::getHref)
.isEqualTo(createCommandLink());
}
......@@ -113,12 +139,21 @@ class BescheidModelAssemblerTest {
@Test
void shouldHaveOnlyExpectedLinks() {
when(bescheidService.canCreateBescheidDocumentAutomatically()).thenReturn(true);
var model = callToModel();
assertThat(model.getLinks()).extracting(Link::getRel).containsExactlyInAnyOrder(
IanaLinkRelations.SELF, LinkRelation.of(REL_DELETE), LinkRelation.of(REL_UPLOAD_BESCHEID_FILE),
LinkRelation.of(REL_UPLOAD_ATTACHMENT), LinkRelation.of(REL_ATTACHMENTS), LinkRelation.of(REL_UPDATE),
LinkRelation.of(REL_CREATE_BESCHEID_DOCUMENT), LinkRelation.of(REL_BESCHEID_DOCUMENT), LinkRelation.of(REL_SEND));
IanaLinkRelations.SELF,
LinkRelation.of(REL_DELETE),
LinkRelation.of(REL_UPLOAD_BESCHEID_FILE),
LinkRelation.of(REL_UPLOAD_ATTACHMENT),
LinkRelation.of(REL_ATTACHMENTS),
LinkRelation.of(REL_UPDATE),
LinkRelation.of(REL_CREATE_BESCHEID_DOCUMENT_AUTOMATICALLY),
LinkRelation.of(REL_CREATE_BESCHEID_DOCUMENT_FROM_FILE),
LinkRelation.of(REL_BESCHEID_DOCUMENT),
LinkRelation.of(REL_SEND));
}
@Test
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment