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

Merge pull request 'OZG-4391-smart-document-service-kiel' (#314) from...

Merge pull request 'OZG-4391-smart-document-service-kiel' (#314) from OZG-4391-smart-document-service-kiel into master

Reviewed-on: https://git.ozg-sh.de/mgm/goofy/pulls/314


Reviewed-by: default avatarOZGCloud <ozgcloud@mgm-tp.com>
parents c1aa43a6 3a01a6d3
No related branches found
No related tags found
No related merge requests found
Showing with 326 additions and 50 deletions
...@@ -20,7 +20,7 @@ public class FeatureToggleProperties { ...@@ -20,7 +20,7 @@ public class FeatureToggleProperties {
private boolean vorgangExport = false; private boolean vorgangExport = false;
/** /**
* Enable/Disable Bescheid creation feature * Enable/Disable Bescheid creation feature.
*/ */
private boolean createBescheid = false; private boolean createBescheid = false;
} }
package de.ozgcloud.alfa.vorgang;
import java.util.Collections;
import java.util.List;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@Configuration
@ConfigurationProperties(prefix = VorgangProperties.PREFIX)
class VorgangProperties {
public static final String PREFIX = "ozgcloud.vorgang";
/**
* Konfiguriert für welche Art von Anträgen der Button zur Erstellung von Bescheiden angezeigt wird. Der Art eines Antrags wird basierend auf form
* id und form engine name bestimmt.
*/
private List<VorgangProperty> vorgangProperties = Collections.emptyList();
@Builder
@Setter
@Getter
static class VorgangProperty {
private String formId;
private String formEngineName;
}
}
...@@ -23,12 +23,14 @@ ...@@ -23,12 +23,14 @@
*/ */
package de.ozgcloud.alfa.vorgang; package de.ozgcloud.alfa.vorgang;
import static java.util.Optional.*;
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*; import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
import java.util.Objects; import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import java.util.function.Predicate; import java.util.function.Predicate;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.hateoas.EntityModel; import org.springframework.hateoas.EntityModel;
import org.springframework.hateoas.Link; import org.springframework.hateoas.Link;
...@@ -37,7 +39,9 @@ import org.springframework.hateoas.server.RepresentationModelProcessor; ...@@ -37,7 +39,9 @@ import org.springframework.hateoas.server.RepresentationModelProcessor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import de.ozgcloud.alfa.attachment.AttachmentController; import de.ozgcloud.alfa.attachment.AttachmentController;
import de.ozgcloud.alfa.common.FeatureToggleProperties;
import de.ozgcloud.alfa.common.ModelBuilder; import de.ozgcloud.alfa.common.ModelBuilder;
import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController;
import de.ozgcloud.alfa.common.user.CurrentUserService; import de.ozgcloud.alfa.common.user.CurrentUserService;
import de.ozgcloud.alfa.common.user.UserManagerUrlProvider; import de.ozgcloud.alfa.common.user.UserManagerUrlProvider;
import de.ozgcloud.alfa.common.user.UserRole; import de.ozgcloud.alfa.common.user.UserRole;
...@@ -45,6 +49,7 @@ import de.ozgcloud.alfa.historie.HistorieController; ...@@ -45,6 +49,7 @@ import de.ozgcloud.alfa.historie.HistorieController;
import de.ozgcloud.alfa.kommentar.KommentarController.KommentarByVorgangController; import de.ozgcloud.alfa.kommentar.KommentarController.KommentarByVorgangController;
import de.ozgcloud.alfa.postfach.PostfachMailController; import de.ozgcloud.alfa.postfach.PostfachMailController;
import de.ozgcloud.alfa.representation.RepresentationController; import de.ozgcloud.alfa.representation.RepresentationController;
import de.ozgcloud.alfa.vorgang.VorgangProperties.VorgangProperty;
import de.ozgcloud.alfa.vorgang.forwarding.ForwardingController; import de.ozgcloud.alfa.vorgang.forwarding.ForwardingController;
@Component @Component
...@@ -56,11 +61,15 @@ class VorgangWithEingangProzessor implements RepresentationModelProcessor<Entity ...@@ -56,11 +61,15 @@ class VorgangWithEingangProzessor implements RepresentationModelProcessor<Entity
static final LinkRelation REL_POSTFACH_MAILS = LinkRelation.of("postfachMails"); static final LinkRelation REL_POSTFACH_MAILS = LinkRelation.of("postfachMails");
static final LinkRelation REL_VORGANG_FORWARDING = LinkRelation.of("forwarding"); static final LinkRelation REL_VORGANG_FORWARDING = LinkRelation.of("forwarding");
static final LinkRelation REL_HISTORIE = LinkRelation.of("historie"); static final LinkRelation REL_HISTORIE = LinkRelation.of("historie");
static final LinkRelation REL_BESCHEID = LinkRelation.of("createBescheid");
static final String REL_SEARCH_USER = "search-user-profiles"; static final String REL_SEARCH_USER = "search-user-profiles";
static final String USER_PROFILE_SEARCH_DELETED_PARAM = "deleted"; static final String USER_PROFILE_SEARCH_DELETED_PARAM = "deleted";
static final String USER_PROFILE_SEARCH_ORGANISATIONS_EINHEIT_ID_PARAM = "organisationsEinheitId"; static final String USER_PROFILE_SEARCH_ORGANISATIONS_EINHEIT_ID_PARAM = "organisationsEinheitId";
private static final Predicate<EingangHeader> HAS_FORM_ID_WITH_ENGINE_NAME =
eingangHeader -> ObjectUtils.allNotNull(eingangHeader.getFormEngineName(), eingangHeader.getFormId());
@Autowired @Autowired
private PostfachMailController postfachMailController; private PostfachMailController postfachMailController;
@Autowired @Autowired
...@@ -68,6 +77,11 @@ class VorgangWithEingangProzessor implements RepresentationModelProcessor<Entity ...@@ -68,6 +77,11 @@ class VorgangWithEingangProzessor implements RepresentationModelProcessor<Entity
@Autowired @Autowired
private UserManagerUrlProvider userManagerUrlProvider; private UserManagerUrlProvider userManagerUrlProvider;
@Autowired
private FeatureToggleProperties featureToggleProperties;
@Autowired
private VorgangProperties vorgangProperties;
private static final Predicate<VorgangWithEingang> HAS_ATTACHMENTS = vorgangWithEingang -> vorgangWithEingang.getEingang() private static final Predicate<VorgangWithEingang> HAS_ATTACHMENTS = vorgangWithEingang -> vorgangWithEingang.getEingang()
.getNumberOfAttachments() > 0; .getNumberOfAttachments() > 0;
...@@ -98,6 +112,9 @@ class VorgangWithEingangProzessor implements RepresentationModelProcessor<Entity ...@@ -98,6 +112,9 @@ class VorgangWithEingangProzessor implements RepresentationModelProcessor<Entity
.addLink(linkTo(methodOn(HistorieController.class).getAll(vorgang.getId())).withRel(REL_HISTORIE)) .addLink(linkTo(methodOn(HistorieController.class).getAll(vorgang.getId())).withRel(REL_HISTORIE))
.ifMatch(() -> userManagerUrlProvider.isConfiguredForSearchUserProfile() && hasOrganisationsEinheitId(vorgang)) .ifMatch(() -> userManagerUrlProvider.isConfiguredForSearchUserProfile() && hasOrganisationsEinheitId(vorgang))
.addLink(() -> buildSearchUserProfilesLink(vorgang)) .addLink(() -> buildSearchUserProfilesLink(vorgang))
.ifMatch(() -> isCreateBescheidEnabled(vorgang))
.addLink(linkTo(methodOn(CommandByRelationController.class).createCommand(vorgang.getId(), vorgang.getId(), vorgang.getVersion(),
null)).withRel(REL_BESCHEID))
.buildModel(); .buildModel();
} }
...@@ -123,4 +140,24 @@ class VorgangWithEingangProzessor implements RepresentationModelProcessor<Entity ...@@ -123,4 +140,24 @@ class VorgangWithEingangProzessor implements RepresentationModelProcessor<Entity
private String getOrganisationsEinheitId(VorgangWithEingang vorgang) { private String getOrganisationsEinheitId(VorgangWithEingang vorgang) {
return vorgang.getEingang().getZustaendigeStelle().getOrganisationseinheitenId(); return vorgang.getEingang().getZustaendigeStelle().getOrganisationseinheitenId();
} }
boolean isCreateBescheidEnabled(VorgangWithEingang vorgang) {
return featureToggleProperties.isCreateBescheid() && hasVorgangCreateBescheidEnabled(vorgang);
}
boolean hasVorgangCreateBescheidEnabled(VorgangWithEingang vorgang) {
return ofNullable(vorgang.getEingang())
.map(Eingang::getHeader)
.filter(HAS_FORM_ID_WITH_ENGINE_NAME)
.map(this::isCreateBescheidEnabled)
.orElse(false);
}
private boolean isCreateBescheidEnabled(EingangHeader eingangHeader) {
return vorgangProperties.getVorgangProperties().stream().filter(prop -> isFormIdAndFormEngineNameMatching(eingangHeader, prop)).count() > 0;
}
private boolean isFormIdAndFormEngineNameMatching(EingangHeader eingangHeader, VorgangProperty prop) {
return prop.getFormId().equals(eingangHeader.getFormId()) && prop.getFormEngineName().equals(eingangHeader.getFormEngineName());
}
} }
\ No newline at end of file
...@@ -33,7 +33,6 @@ import org.springframework.hateoas.LinkRelation; ...@@ -33,7 +33,6 @@ import org.springframework.hateoas.LinkRelation;
import org.springframework.hateoas.server.RepresentationModelProcessor; import org.springframework.hateoas.server.RepresentationModelProcessor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import de.ozgcloud.alfa.common.FeatureToggleProperties;
import de.ozgcloud.alfa.common.ModelBuilder; import de.ozgcloud.alfa.common.ModelBuilder;
import de.ozgcloud.alfa.common.command.CommandController; import de.ozgcloud.alfa.common.command.CommandController;
import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController; import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController;
...@@ -48,7 +47,6 @@ public class VorgangWithEingangCommandProzessor implements RepresentationModelPr ...@@ -48,7 +47,6 @@ public class VorgangWithEingangCommandProzessor implements RepresentationModelPr
static final LinkRelation REL_VORGANG_FORWARD = LinkRelation.of("forward"); static final LinkRelation REL_VORGANG_FORWARD = LinkRelation.of("forward");
static final LinkRelation REL_PENDING_COMMANDS = LinkRelation.of("pending-commands"); static final LinkRelation REL_PENDING_COMMANDS = LinkRelation.of("pending-commands");
static final LinkRelation REL_BESCHEID = LinkRelation.of("createBescheid");
@Autowired @Autowired
private CurrentUserService userService; private CurrentUserService userService;
...@@ -57,9 +55,6 @@ public class VorgangWithEingangCommandProzessor implements RepresentationModelPr ...@@ -57,9 +55,6 @@ public class VorgangWithEingangCommandProzessor implements RepresentationModelPr
@Autowired @Autowired
private CommandController commandController; private CommandController commandController;
@Autowired
private FeatureToggleProperties featureToggle;
@Override @Override
public EntityModel<VorgangWithEingang> process(EntityModel<VorgangWithEingang> model) { public EntityModel<VorgangWithEingang> process(EntityModel<VorgangWithEingang> model) {
var vorgang = model.getContent(); var vorgang = model.getContent();
...@@ -73,9 +68,6 @@ public class VorgangWithEingangCommandProzessor implements RepresentationModelPr ...@@ -73,9 +68,6 @@ public class VorgangWithEingangCommandProzessor implements RepresentationModelPr
null)).withRel(REL_VORGANG_FORWARD)) null)).withRel(REL_VORGANG_FORWARD))
.ifMatch(this::existsPendingCommands) .ifMatch(this::existsPendingCommands)
.addLink(linkTo(methodOn(CommandController.class).getPendingCommands(true, vorgang.getId())).withRel(REL_PENDING_COMMANDS)) .addLink(linkTo(methodOn(CommandController.class).getPendingCommands(true, vorgang.getId())).withRel(REL_PENDING_COMMANDS))
.ifMatch(() -> featureToggle.isCreateBescheid())
.addLink(linkTo(methodOn(CommandByRelationController.class).createCommand(vorgang.getId(), vorgang.getId(), vorgang.getVersion(),
null)).withRel(REL_BESCHEID))
.buildModel(); .buildModel();
} }
......
...@@ -30,12 +30,13 @@ public class EingangHeaderTestFactory { ...@@ -30,12 +30,13 @@ public class EingangHeaderTestFactory {
public static final String CREATED_AT_STR = "2020-01-10T10:30:00Z"; public static final String CREATED_AT_STR = "2020-01-10T10:30:00Z";
public static final ZonedDateTime CREATED_AT = ZonedDateTime.parse(CREATED_AT_STR); public static final ZonedDateTime CREATED_AT = ZonedDateTime.parse(CREATED_AT_STR);
public static final String FORM_ENGINE_NAME = "AFM"; public static final String FORM_ENGINE_NAME = "AFM";
public static final String FORM_ID = "test-form-id";
public static EingangHeader create() { public static EingangHeader create() {
return createBuilder().build(); return createBuilder().build();
} }
public static EingangHeader.EingangHeaderBuilder createBuilder() { public static EingangHeader.EingangHeaderBuilder createBuilder() {
return EingangHeader.builder().createdAt(CREATED_AT).formEngineName(FORM_ENGINE_NAME); return EingangHeader.builder().createdAt(CREATED_AT).formEngineName(FORM_ENGINE_NAME).formId(FORM_ID);
} }
} }
\ No newline at end of file
package de.ozgcloud.alfa.vorgang;
import de.ozgcloud.alfa.vorgang.VorgangProperties.VorgangProperty;
public class VorgangPropertyTestFactory {
public static VorgangProperty create() {
return createBuilder().build();
}
public static VorgangProperty.VorgangPropertyBuilder createBuilder() {
return VorgangProperty.builder()
.formEngineName(EingangHeaderTestFactory.FORM_ENGINE_NAME)
.formId(EingangHeaderTestFactory.FORM_ID);
}
}
...@@ -27,6 +27,9 @@ import static de.ozgcloud.alfa.common.UserProfileUrlProviderTestFactory.*; ...@@ -27,6 +27,9 @@ import static de.ozgcloud.alfa.common.UserProfileUrlProviderTestFactory.*;
import static org.assertj.core.api.Assertions.*; import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*; import static org.mockito.Mockito.*;
import java.util.Collections;
import java.util.List;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Nested;
...@@ -35,11 +38,13 @@ import org.junit.jupiter.params.ParameterizedTest; ...@@ -35,11 +38,13 @@ import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.EnumSource; import org.junit.jupiter.params.provider.EnumSource;
import org.mockito.InjectMocks; import org.mockito.InjectMocks;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.Spy;
import org.springframework.hateoas.EntityModel; import org.springframework.hateoas.EntityModel;
import org.springframework.hateoas.Link; import org.springframework.hateoas.Link;
import org.springframework.hateoas.LinkRelation; import org.springframework.hateoas.LinkRelation;
import org.springframework.web.util.UriComponentsBuilder; import org.springframework.web.util.UriComponentsBuilder;
import de.ozgcloud.alfa.common.FeatureToggleProperties;
import de.ozgcloud.alfa.common.UserProfileUrlProvider; import de.ozgcloud.alfa.common.UserProfileUrlProvider;
import de.ozgcloud.alfa.common.user.CurrentUserService; import de.ozgcloud.alfa.common.user.CurrentUserService;
import de.ozgcloud.alfa.common.user.UserManagerUrlProvider; import de.ozgcloud.alfa.common.user.UserManagerUrlProvider;
...@@ -49,6 +54,7 @@ import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus; ...@@ -49,6 +54,7 @@ import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
class VorgangWithEingangProzessorTest { class VorgangWithEingangProzessorTest {
@Spy
@InjectMocks @InjectMocks
private VorgangWithEingangProzessor processor; private VorgangWithEingangProzessor processor;
@Mock @Mock
...@@ -58,12 +64,13 @@ class VorgangWithEingangProzessorTest { ...@@ -58,12 +64,13 @@ class VorgangWithEingangProzessorTest {
@Mock @Mock
private UserManagerUrlProvider userManagerUrlProvider; private UserManagerUrlProvider userManagerUrlProvider;
private UserProfileUrlProvider urlProvider = new UserProfileUrlProvider(); @Mock
private FeatureToggleProperties featureToggleProperties;
@BeforeEach @Mock
void init() { private VorgangProperties vorgangProperties;
initUserProfileUrlProvider(urlProvider);
} private UserProfileUrlProvider urlProvider = new UserProfileUrlProvider();
@Nested @Nested
class TestAttachmentsLink { class TestAttachmentsLink {
...@@ -213,6 +220,11 @@ class VorgangWithEingangProzessorTest { ...@@ -213,6 +220,11 @@ class VorgangWithEingangProzessorTest {
@Nested @Nested
class TestSearchUserProfileLink { class TestSearchUserProfileLink {
@BeforeEach
void init() {
initUserProfileUrlProvider(urlProvider);
}
@DisplayName("on configured for search user profile") @DisplayName("on configured for search user profile")
@Nested @Nested
class TestIsConfigured { class TestIsConfigured {
...@@ -273,4 +285,218 @@ class VorgangWithEingangProzessorTest { ...@@ -273,4 +285,218 @@ class VorgangWithEingangProzessorTest {
return VorgangWithEingangTestFactory.createBuilder().eingang(eingang).build(); return VorgangWithEingangTestFactory.createBuilder().eingang(eingang).build();
} }
} }
@Nested
class TestHasVorgangCreateBescheidEnabled {
@Nested
class TestOnEmptyBescheidProperties {
@BeforeEach
void setUp() {
when(vorgangProperties.getVorgangProperties()).thenReturn(Collections.emptyList());
}
@Test
void shouldReturnFalse() {
var hasEnabled = callProcessor(VorgangWithEingangTestFactory.create());
assertThat(hasEnabled).isFalse();
}
}
@Nested
class TestOnBescheidPropertiesSet {
@BeforeEach
void setUp() {
when(vorgangProperties.getVorgangProperties()).thenReturn(List.of(VorgangPropertyTestFactory.create()));
}
@Test
void shouldReturnFalseIfFormEngineNameNotEquals() {
var vorgang = createVorgang(EingangTestFactory.createBuilder()
.header(EingangHeaderTestFactory.createBuilder()
.formEngineName("different").build())
.build());
var hasEnabled = callProcessor(vorgang);
assertThat(hasEnabled).isFalse();
}
@Test
void shouldReturnTrue() {
var hasEnabled = callProcessor(VorgangWithEingangTestFactory.create());
assertThat(hasEnabled).isTrue();
}
}
@Test
void shouldReturnFalseOnEmptyEingang() {
var vorgangWithEmptyEingang = createVorgang(null);
var hasEnabled = callProcessor(vorgangWithEmptyEingang);
assertThat(hasEnabled).isFalse();
}
@Test
void shouldReturnFalseOnEmptyEingangHeader() {
var vorgangWithEmptyEingangHeader = EingangTestFactory.createBuilder().header(null).build();
var hasEnabled = callProcessor(createVorgang(vorgangWithEmptyEingangHeader));
assertThat(hasEnabled).isFalse();
}
@Test
void shouldReturnFalseOnEmptyFormEngineName() {
var vorgangWithEmptyFormEngineName = createVorgang(
EingangTestFactory.createBuilder().header(EingangHeaderTestFactory.createBuilder().formEngineName(null).build()).build());
var hasEnabled = callProcessor(vorgangWithEmptyFormEngineName);
assertThat(hasEnabled).isFalse();
}
@Test
void shouldReturnFalseOnEmptyFormId() {
var vorgangWithEmptyFormId = createVorgang(
EingangTestFactory.createBuilder().header(EingangHeaderTestFactory.createBuilder().formId(null).build()).build());
var hasEnabled = callProcessor(vorgangWithEmptyFormId);
assertThat(hasEnabled).isFalse();
}
private boolean callProcessor(VorgangWithEingang vorgang) {
return processor.hasVorgangCreateBescheidEnabled(vorgang);
}
private VorgangWithEingang createVorgang(Eingang eingang) {
return VorgangWithEingangTestFactory.createBuilder().eingang(eingang).build();
}
}
@Nested
class TestIsCreateBescheidEnabled {
@Nested
class TestFeatureToggleDisabled {
@BeforeEach
void setUp() {
when(featureToggleProperties.isCreateBescheid()).thenReturn(false);
}
@Test
void shouldCallFeatureToggleProperties() {
callProcessor(VorgangWithEingangTestFactory.create());
verify(featureToggleProperties).isCreateBescheid();
}
@Test
void shouldNotCallHasVorgangCreateBescheidEnabled() {
var vorgang = VorgangWithEingangTestFactory.create();
callProcessor(vorgang);
verify(processor, never()).hasVorgangCreateBescheidEnabled(vorgang);
}
@Test
void shouldReturnFalse() {
var isEnabled = callProcessor(VorgangWithEingangTestFactory.create());
assertThat(isEnabled).isFalse();
}
}
@Nested
class TestFeatureToggleEnabled {
private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
@BeforeEach
void setUp() {
when(featureToggleProperties.isCreateBescheid()).thenReturn(true);
}
@Test
void shouldCallFeatureToggleProperties() {
callProcessor(vorgang);
verify(featureToggleProperties).isCreateBescheid();
}
@Test
void shouldCallHasVorgangCreateBescheidEnabled() {
callProcessor(vorgang);
verify(processor).hasVorgangCreateBescheidEnabled(vorgang);
}
@Test
void shouldReturnTrue() {
doReturn(true).when(processor).hasVorgangCreateBescheidEnabled(vorgang);
var isEnabled = callProcessor(vorgang);
assertThat(isEnabled).isTrue();
}
@Test
void shouldReturnFalse() {
doReturn(false).when(processor).hasVorgangCreateBescheidEnabled(vorgang);
var isEnabled = callProcessor(vorgang);
assertThat(isEnabled).isFalse();
}
}
private boolean callProcessor(VorgangWithEingang vorgang) {
return processor.isCreateBescheidEnabled(vorgang);
}
}
@Nested
class TestCreateBescheidLink {
private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
private final EntityModel<VorgangWithEingang> vorgangEntityModel = EntityModel.of(vorgang);
@BeforeEach
void activateFeature() {
initUserProfileUrlProvider(urlProvider);
}
@Test
void shouldHaveCreateBescheidLink() {
doReturn(true).when(processor).isCreateBescheidEnabled(vorgang);
var processed = processor.process(vorgangEntityModel);
assertThat(processed.getLink(VorgangWithEingangProzessor.REL_BESCHEID)).isPresent().get()
.extracting(Link::getHref)
.isEqualTo("/api/vorgangs/" + VorgangHeaderTestFactory.ID + "/relations/" + VorgangHeaderTestFactory.ID + "/"
+ VorgangHeaderTestFactory.VERSION + "/commands");
}
@Test
void shouldHaveNoLinkIfDisabled() {
doReturn(false).when(processor).isCreateBescheidEnabled(vorgang);
var processed = processor.process(vorgangEntityModel);
assertThat(processed.getLink(VorgangWithEingangProzessor.REL_BESCHEID)).isEmpty();
}
}
} }
\ No newline at end of file
...@@ -44,7 +44,6 @@ import org.springframework.hateoas.EntityModel; ...@@ -44,7 +44,6 @@ import org.springframework.hateoas.EntityModel;
import org.springframework.hateoas.Link; import org.springframework.hateoas.Link;
import org.springframework.hateoas.LinkRelation; import org.springframework.hateoas.LinkRelation;
import de.ozgcloud.alfa.common.FeatureToggleProperties;
import de.ozgcloud.alfa.common.UserProfileUrlProvider; import de.ozgcloud.alfa.common.UserProfileUrlProvider;
import de.ozgcloud.alfa.common.command.CommandController; import de.ozgcloud.alfa.common.command.CommandController;
import de.ozgcloud.alfa.common.user.CurrentUserService; import de.ozgcloud.alfa.common.user.CurrentUserService;
...@@ -68,9 +67,6 @@ class VorgangWithEingangCommandProzessorTest { ...@@ -68,9 +67,6 @@ class VorgangWithEingangCommandProzessorTest {
@Mock @Mock
private ForwardingController forwardingController; private ForwardingController forwardingController;
@Mock
private FeatureToggleProperties featureToggle;
private VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create(); private VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
private EntityModel<VorgangWithEingang> vorgangEntityModel = EntityModel.of(vorgang); private EntityModel<VorgangWithEingang> vorgangEntityModel = EntityModel.of(vorgang);
...@@ -227,33 +223,4 @@ class VorgangWithEingangCommandProzessorTest { ...@@ -227,33 +223,4 @@ class VorgangWithEingangCommandProzessorTest {
.isEqualTo("/api/commands?pending=true&vorgangId=" + VorgangHeaderTestFactory.ID); .isEqualTo("/api/commands?pending=true&vorgangId=" + VorgangHeaderTestFactory.ID);
} }
} }
@Nested
class TestCreateBescheidLink {
@BeforeEach
void activateFeature() {
when(featureToggle.isCreateBescheid()).thenReturn(true);
initUserProfileUrlProvider(urlProvider);
}
@Test
void shouldHaveCreateBescheidLink() {
var processed = processor.process(vorgangEntityModel);
assertThat(processed.getLink(VorgangWithEingangCommandProzessor.REL_BESCHEID)).isPresent().get()
.extracting(Link::getHref)
.isEqualTo("/api/vorgangs/" + VorgangHeaderTestFactory.ID + "/relations/" + VorgangHeaderTestFactory.ID + "/"
+ VorgangHeaderTestFactory.VERSION + "/commands");
}
@Test
void shouldHaveNoLinkIfDisabled() {
when(featureToggle.isCreateBescheid()).thenReturn(false);
var processed = processor.process(vorgangEntityModel);
assertThat(processed.getLink(VorgangWithEingangCommandProzessor.REL_BESCHEID)).isEmpty();
}
}
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment