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

OZG-5167: add link conditionally

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