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

OZG-5868 Removed createBescheid Feature in BE

parent 63aeed07
Branches
Tags
No related merge requests found
......@@ -17,11 +17,6 @@ public class FeatureToggleProperties {
*/
private boolean vorgangExport = false;
/**
* Enable/Disable bescheid creation feature.
*/
private boolean createBescheid = false;
/**
* Enable mail reply option regardless of other configuration.
*/
......
......@@ -23,7 +23,6 @@
*/
package de.ozgcloud.alfa.vorgang;
import static java.util.Optional.*;
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
import java.util.List;
......@@ -31,7 +30,6 @@ import java.util.Objects;
import java.util.Optional;
import java.util.function.Predicate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.hateoas.EntityModel;
import org.springframework.hateoas.Link;
import org.springframework.hateoas.LinkRelation;
......@@ -39,7 +37,6 @@ import org.springframework.hateoas.server.RepresentationModelProcessor;
import org.springframework.stereotype.Component;
import de.ozgcloud.alfa.attachment.AttachmentController;
import de.ozgcloud.alfa.common.FeatureToggleProperties;
import de.ozgcloud.alfa.common.ModelBuilder;
import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController;
import de.ozgcloud.alfa.common.user.CurrentUserService;
......@@ -51,8 +48,10 @@ import de.ozgcloud.alfa.postfach.PostfachMailController;
import de.ozgcloud.alfa.representation.RepresentationController;
import de.ozgcloud.alfa.vorgang.VorgangProperties.VorgangProperty;
import de.ozgcloud.alfa.vorgang.forwarding.ForwardingController;
import lombok.RequiredArgsConstructor;
@Component
@RequiredArgsConstructor
class VorgangWithEingangProcessor implements RepresentationModelProcessor<EntityModel<VorgangWithEingang>> {
static final LinkRelation REL_KOMMENTARE = LinkRelation.of("kommentare");
......@@ -61,26 +60,17 @@ class VorgangWithEingangProcessor implements RepresentationModelProcessor<Entity
static final LinkRelation REL_POSTFACH_MAILS = LinkRelation.of("postfachMails");
static final LinkRelation REL_VORGANG_FORWARDING = LinkRelation.of("forwarding");
static final LinkRelation REL_HISTORIE = LinkRelation.of("historie");
static final LinkRelation REL_BESCHEID = LinkRelation.of("createBescheid");
static final LinkRelation REL_PROCESS_VORGANG = LinkRelation.of("processVorgang");
static final String REL_SEARCH_USER = "search-user-profiles";
static final String USER_PROFILE_SEARCH_DELETED_PARAM = "deleted";
static final String USER_PROFILE_SEARCH_ORGANISATIONS_EINHEIT_ID_PARAM = "organisationsEinheitId";
@Autowired
private PostfachMailController postfachMailController;
@Autowired
private CurrentUserService userService;
@Autowired
private UserManagerUrlProvider userManagerUrlProvider;
private final PostfachMailController postfachMailController;
private final CurrentUserService userService;
private final UserManagerUrlProvider userManagerUrlProvider;
@Autowired
private FeatureToggleProperties featureToggleProperties;
@Autowired
private VorgangProperties vorgangProperties;
@Autowired
private VorgangProcessorProperties vorgangProcessorProperties;
private final VorgangProcessorProperties vorgangProcessorProperties;
private static final Predicate<VorgangWithEingang> HAS_ATTACHMENTS = vorgangWithEingang -> vorgangWithEingang.getEingang()
.getNumberOfAttachments() > 0;
......@@ -112,9 +102,6 @@ class VorgangWithEingangProcessor implements RepresentationModelProcessor<Entity
.addLink(linkTo(methodOn(HistorieController.class).getAll(vorgang.getId())).withRel(REL_HISTORIE))
.ifMatch(() -> userManagerUrlProvider.isConfiguredForSearchUserProfile() && hasOrganisationsEinheitId(vorgang))
.addLink(() -> buildSearchUserProfilesLink(vorgang))
.ifMatch(() -> isCreateBescheidEnabled(vorgang))
.addLink(linkTo(methodOn(CommandByRelationController.class).createCommand(vorgang.getId(), vorgang.getId(), vorgang.getVersion(),
null)).withRel(REL_BESCHEID))
.ifMatch(this::isProcessable)
.addLink(
() -> linkTo(methodOn(CommandByRelationController.class).createCommand(vorgang.getId(), vorgang.getId(), vorgang.getVersion(),
......@@ -145,21 +132,6 @@ class VorgangWithEingangProcessor implements RepresentationModelProcessor<Entity
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)
.map(this::isCreateBescheidEnabled)
.orElse(false);
}
private boolean isCreateBescheidEnabled(EingangHeader eingangHeader) {
return vorgangProperties.getBescheid().stream().anyMatch(prop -> isFormIdAndFormEngineNameMatching(eingangHeader, prop));
}
private boolean isProcessable(VorgangWithEingang vorgang) {
return isAnyFormIdAndFormEngineNameMatching(vorgang.getEingang().getHeader(), vorgangProcessorProperties.getProcessor());
}
......
......@@ -27,7 +27,6 @@ import static de.ozgcloud.alfa.common.UserProfileUrlProviderTestFactory.*;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
import java.util.Collections;
import java.util.List;
import org.junit.jupiter.api.BeforeEach;
......@@ -45,7 +44,6 @@ import org.springframework.hateoas.LinkRelation;
import org.springframework.web.util.UriComponentsBuilder;
import org.springframework.web.util.UriTemplate;
import de.ozgcloud.alfa.common.FeatureToggleProperties;
import de.ozgcloud.alfa.common.UserProfileUrlProvider;
import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController;
import de.ozgcloud.alfa.common.user.CurrentUserService;
......@@ -66,12 +64,6 @@ class VorgangWithEingangProcessorTest {
@Mock
private UserManagerUrlProvider userManagerUrlProvider;
@Mock
private FeatureToggleProperties featureToggleProperties;
@Mock
private VorgangProperties vorgangProperties;
@Mock
private VorgangProcessorProperties vorgangProcessorProperties;
......@@ -296,219 +288,6 @@ class VorgangWithEingangProcessorTest {
}
}
@Nested
class TestHasVorgangCreateBescheidEnabled {
@Nested
class TestOnEmptyBescheidProperties {
@BeforeEach
void setUp() {
when(vorgangProperties.getBescheid()).thenReturn(Collections.emptyList());
}
@Test
void shouldReturnFalse() {
var hasEnabled = callProcessor(VorgangWithEingangTestFactory.create());
assertThat(hasEnabled).isFalse();
}
}
@Nested
class TestOnBescheidPropertiesSet {
@BeforeEach
void setUp() {
when(vorgangProperties.getBescheid()).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 model = processor.process(vorgangEntityModel);
assertThat(model.getLink(VorgangWithEingangProcessor.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 model = processor.process(vorgangEntityModel);
assertThat(model.getLink(VorgangWithEingangProcessor.REL_BESCHEID)).isEmpty();
}
}
@DisplayName("Process vorgang")
@Nested
class TestProcessVorgang {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment