Skip to content
Snippets Groups Projects
Commit a32aa1f8 authored by Felix Reichenbach's avatar Felix Reichenbach
Browse files

OZG-3936 move tests for linked resources to own test classes

parent 0b063d57
Branches
Tags
1 merge request!16Ozg 3936 refactor user profile url provider
Showing
with 224 additions and 149 deletions
package de.ozgcloud.alfa.bescheid;
import static org.assertj.core.api.Assertions.*;
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.springframework.hateoas.EntityModel;
import org.springframework.hateoas.Link;
import de.ozgcloud.alfa.common.LinkedResourceProcessor;
class BescheidLinkedResourceTest {
@InjectMocks
private LinkedResourceProcessor<Bescheid> processor;
@Nested
class TestEntityModelProcessing {
private static final String REL_BESCHEID_DOCUMENT = "bescheidDocument";
@Test
void shouldHaveBescheidDocumentLink() {
var model = processor.process(EntityModel.of(BescheidTestFactory.create()));
assertThat(model.getLink(REL_BESCHEID_DOCUMENT)).isPresent().get().extracting(Link::getHref)
.isEqualTo(String.format("%s/%s", DocumentController.PATH, BescheidTestFactory.BESCHEID_DOCUMENT));
}
@ParameterizedTest
@NullAndEmptySource
void shouldNotHaveBescheidDocumentLinkIfNoDocumentAvailable(String documentId) {
var model = processor.process(EntityModel.of(BescheidTestFactory.createBuilder().bescheidDocument(documentId).build()));
assertThat(model.getLink(REL_BESCHEID_DOCUMENT)).isEmpty();
}
}
}
......@@ -46,7 +46,6 @@ import org.springframework.hateoas.Link;
import org.springframework.web.util.UriTemplate;
import de.ozgcloud.alfa.bescheid.BescheidController.BescheidByVorgangController;
import de.ozgcloud.alfa.common.LinkedResourceTestUtils;
import de.ozgcloud.alfa.common.binaryfile.FileId;
import de.ozgcloud.alfa.common.command.CommandController;
import de.ozgcloud.alfa.postfach.PostfachMailController;
......@@ -175,22 +174,6 @@ class BescheidModelAssemblerTest {
.isEqualTo(createCommandLink());
}
@ParameterizedTest
@NullAndEmptySource
void shouldNotHaveBescheidDocumentLinkIfNoDocumentAvailable(String documentId) {
var model = callToModel(BescheidTestFactory.createBuilder().bescheidDocument(documentId).build());
assertThat(model.getLink(REL_BESCHEID_DOCUMENT)).isEmpty();
}
@Test
void shouldHaveBescheidDocumentLink() {
var model = callToModel();
assertThat(model.getLink(REL_BESCHEID_DOCUMENT)).isPresent().get().extracting(Link::getHref)
.isEqualTo(String.format("%s/%s", DocumentController.PATH, BescheidTestFactory.BESCHEID_DOCUMENT));
}
@Test
void shouldHaveBescheidenUndSendenLink() {
when(postfachMailController.isPostfachConfigured()).thenReturn(true);
......@@ -259,7 +242,7 @@ class BescheidModelAssemblerTest {
}
private EntityModel<Bescheid> callToModel(Bescheid bescheid) {
return LinkedResourceTestUtils.processLinkedResource(assembler.toModel(bescheid));
return assembler.toModel(bescheid);
}
}
......
package de.ozgcloud.alfa.bescheid;
import static org.assertj.core.api.Assertions.*;
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.springframework.hateoas.EntityModel;
import org.springframework.hateoas.Link;
import de.ozgcloud.alfa.common.LinkedResourceProcessor;
import de.ozgcloud.alfa.common.binaryfile.FileId;
class DocumentLinkedResourceTest {
@InjectMocks
private LinkedResourceProcessor<Document> processor;
@Nested
class TestEntityModelProcessing {
static final String REL_FILE = "file";
@Test
void shouldHaveFileIdLink() {
var model = processor.process(EntityModel.of(DocumentTestFactory.create()));
assertThat(model.getLink(REL_FILE)).isPresent().get().extracting(Link::getHref)
.isEqualTo("/api/binaryFiles/" + DocumentTestFactory.FILE_ID);
}
@ParameterizedTest
@NullAndEmptySource
void shouldNotHaveFileIdLinkIfNoFileAvailable(String fileId) {
var model = processor.process(EntityModel.of(DocumentTestFactory.createBuilder().fileId(FileId.from(fileId)).build()));
assertThat(model.getLink(REL_FILE)).isEmpty();
}
}
}
......@@ -23,7 +23,6 @@
*/
package de.ozgcloud.alfa.bescheid;
import static de.ozgcloud.alfa.bescheid.DocumentModelAssembler.*;
import static org.assertj.core.api.Assertions.*;
import org.junit.jupiter.api.Nested;
......@@ -33,8 +32,6 @@ import org.springframework.hateoas.EntityModel;
import org.springframework.hateoas.IanaLinkRelations;
import org.springframework.hateoas.Link;
import de.ozgcloud.alfa.common.LinkedResourceTestUtils;
class DocumentModelAssemblerTest {
@Spy
......@@ -53,16 +50,8 @@ class DocumentModelAssemblerTest {
.isEqualTo(DocumentController.PATH + "/" + DocumentTestFactory.ID);
}
@Test
void shouldHaveFileIdLink() {
var model = callToModel();
assertThat(model.getLink(REL_FILE)).isPresent().get().extracting(Link::getHref)
.isEqualTo("/api/binaryFiles/" + DocumentTestFactory.FILE_ID);
}
private EntityModel<Document> callToModel() {
return LinkedResourceTestUtils.processLinkedResource(assembler.toModel(document));
return assembler.toModel(document);
}
}
}
package de.ozgcloud.alfa.collaboration;
import static org.assertj.core.api.Assertions.*;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.springframework.hateoas.EntityModel;
import org.springframework.hateoas.Link;
import de.ozgcloud.alfa.common.LinkedResourceProcessor;
class CollaborationLinkedResourceTest {
@InjectMocks
private LinkedResourceProcessor<Collaboration> processor;
@Nested
class TestEntityModelProcessing {
private static final String REL_ZUSTAENDIGE_STELLE = "zustaendigeStelle";
@Test
void shouldHaveLinkToOrganisationsEinheit() {
var entityModel = processor.process(EntityModel.of(OrganisationsEinheitCollaborationTestFactory.create()));
assertThat(entityModel.getLink(REL_ZUSTAENDIGE_STELLE)).get().extracting(Link::getHref)
.isEqualTo(OrganisationsEinheitController.PATH + "/" + OrganisationsEinheitTestFactory.ID);
}
@Test
void shouldHaveLinkToFachstelle() {
var entityModel = processor.process(EntityModel.of(FachstelleCollaborationTestFactory.create()));
assertThat(entityModel.getLink(REL_ZUSTAENDIGE_STELLE)).get().extracting(Link::getHref)
.isEqualTo(FachstelleController.PATH + "/" + FachstelleTestFactory.ID);
}
}
}
......@@ -41,7 +41,6 @@ import org.springframework.hateoas.Link;
import org.springframework.hateoas.UriTemplate;
import de.ozgcloud.alfa.collaboration.CollaborationController.CollaborationByVorgangController;
import de.ozgcloud.alfa.common.LinkedResourceTestUtils;
import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController;
import de.ozgcloud.alfa.vorgang.VorgangController;
import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
......@@ -60,8 +59,6 @@ class CollaborationModelAssemblerTest {
@Nested
class TestToModel {
private static final String REL_ZUSTAENDIGE_STELLE = "zustaendigeStelle";
@Nested
class OnOrganisationsEinheitCollaboration {
......@@ -74,14 +71,6 @@ class CollaborationModelAssemblerTest {
assertThat(entityModel.getContent()).isEqualTo(collaboration);
}
@Test
void shouldHaveLinkToOrganisationsEinheit() {
var entityModel = LinkedResourceTestUtils.processLinkedResource(callAssembler());
assertThat(entityModel.getLink(REL_ZUSTAENDIGE_STELLE)).get().extracting(Link::getHref)
.isEqualTo(OrganisationsEinheitController.PATH + "/" + OrganisationsEinheitTestFactory.ID);
}
private EntityModel<Collaboration> callAssembler() {
return assembler.toModel(collaboration);
}
......@@ -99,14 +88,6 @@ class CollaborationModelAssemblerTest {
assertThat(entityModel.getContent()).isEqualTo(collaboration);
}
@Test
void shouldHaveLinkToFachstelle() {
var entityModel = LinkedResourceTestUtils.processLinkedResource(callAssembler());
assertThat(entityModel.getLink(REL_ZUSTAENDIGE_STELLE)).get().extracting(Link::getHref)
.isEqualTo(FachstelleController.PATH + "/" + FachstelleTestFactory.ID);
}
private EntityModel<Collaboration> callAssembler() {
return assembler.toModel(collaboration);
}
......
/*
* Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package de.ozgcloud.alfa.common;
import org.springframework.hateoas.EntityModel;
import de.ozgcloud.alfa.common.user.UserManagerUrlProvider;
public class LinkedResourceTestUtils {
public static <T> EntityModel<T> processLinkedResource(EntityModel<T> model) {
return new LinkedResourceProcessor<T>(null).process(model);
}
public static <T> EntityModel<T> processUserProfileResource(EntityModel<T> model, UserManagerUrlProvider userManagerUrlProvider) {
return new LinkedResourceProcessor<T>(userManagerUrlProvider).process(model);
}
}
package de.ozgcloud.alfa.common.command;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.springframework.hateoas.EntityModel;
import org.springframework.hateoas.Link;
import com.thedeanda.lorem.LoremIpsum;
import de.ozgcloud.alfa.common.LinkedResourceProcessor;
import de.ozgcloud.alfa.common.user.UserId;
import de.ozgcloud.alfa.common.user.UserManagerUrlProvider;
import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
class CommandLinkedResourceTest {
@InjectMocks
private LinkedResourceProcessor<Command> processor;
@Mock
private UserManagerUrlProvider userManagerUrlProvider;
@Nested
class TestEntityModelProcessing {
private static final String CREATED_BY = "createdBy";
private static final String ROOT_URL = LoremIpsum.getInstance().getUrl();
private static final String USER_PROFILES_API_PATH = "/api/user-profiles/";
@Test
void shouldHaveCreatedByLink() {
when(userManagerUrlProvider.getUserProfileTemplate()).thenReturn(ROOT_URL + USER_PROFILES_API_PATH + "%s");
var model = processor.process(EntityModel.of(CommandTestFactory.create()));
assertThat(model.getLink(CREATED_BY)).isPresent().get().extracting(Link::getHref)
.isEqualTo(ROOT_URL + USER_PROFILES_API_PATH + UserProfileTestFactory.ID);
}
@Test
void shouldNotHaveCreatedByLinkForSystemUser() {
var systemUser = UserId.from("system-" + LoremIpsum.getInstance().getWords(1));
var commandBySystemUser = CommandTestFactory.createBuilder()
.createdBy(systemUser)
.build();
var model = processor.process(EntityModel.of(commandBySystemUser));
assertThat(model.getLink(CREATED_BY)).isNotPresent();
}
@Test
void shouldNotHaveCreatedByLinkOnNullValue() {
var model = processor.process(EntityModel.of(CommandTestFactory.createBuilder().createdBy(null).build()));
assertThat(model.getLink(CREATED_BY)).isNotPresent();
}
}
}
......@@ -36,18 +36,12 @@ import org.mockito.Mock;
import org.springframework.hateoas.IanaLinkRelations;
import org.springframework.hateoas.Link;
import com.thedeanda.lorem.LoremIpsum;
import de.ozgcloud.alfa.common.LinkedResourceTestUtils;
import de.ozgcloud.alfa.common.command.CommandTestFactory;
import de.ozgcloud.alfa.common.user.UserId;
import de.ozgcloud.alfa.common.user.UserManagerUrlProvider;
import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
class HistorieModelAssemblerTest {
private static final String CREATED_BY = "createdBy";
@InjectMocks
private HistorieModelAssembler modelAssembler;
@Mock
......@@ -116,44 +110,4 @@ class HistorieModelAssemblerTest {
}
}
@DisplayName("createdBy Link")
@Nested
class TestCreatedByLink {
private static final String ROOT_URL = LoremIpsum.getInstance().getUrl();
private static final String USER_PROFILES_API_PATH = "/api/user-profiles/";
@Mock
private UserManagerUrlProvider userManagerUrlProvider;
@Test
void shouldExistingAtUser() {
when(userManagerUrlProvider.getUserProfileTemplate()).thenReturn(ROOT_URL + USER_PROFILES_API_PATH + "%s");
var model = LinkedResourceTestUtils
.processUserProfileResource(modelAssembler.toModel(CommandTestFactory.create()), userManagerUrlProvider);
assertThat(model.getLink(CREATED_BY)).isPresent().get().extracting(Link::getHref)
.isEqualTo(ROOT_URL + USER_PROFILES_API_PATH + UserProfileTestFactory.ID);
}
@Test
void shouldNotExistForSystemUser() {
var systemUser = UserId.from("system-" + LoremIpsum.getInstance().getWords(1));
var commandBySystemUser = CommandTestFactory.createBuilder()
.createdBy(systemUser)
.build();
var model = modelAssembler.toModel(commandBySystemUser);
assertThat(model.getLink(CREATED_BY)).isNotPresent();
}
@Test
void shouldNotBePresentOnNullValue() {
var model = modelAssembler.toModel(CommandTestFactory.createBuilder().createdBy(null).build());
assertThat(model.getLink(CREATED_BY)).isNotPresent();
}
}
}
\ No newline at end of file
package de.ozgcloud.alfa.kommentar;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.springframework.hateoas.EntityModel;
import org.springframework.hateoas.Link;
import com.thedeanda.lorem.LoremIpsum;
import de.ozgcloud.alfa.common.LinkedResourceProcessor;
import de.ozgcloud.alfa.common.user.UserManagerUrlProvider;
class KommentarLinkedResourceTest {
@InjectMocks
private LinkedResourceProcessor<Kommentar> processor;
@Mock
private UserManagerUrlProvider userManagerUrlProvider;
@Nested
class TestEntityModelProcessing {
private static final String REL_CREATED_BY = "createdBy";
private static final String USER_MANAGER_URL = LoremIpsum.getInstance().getUrl();
@Test
void shouldHaveCreatedByLink() {
when(userManagerUrlProvider.getUserProfileTemplate()).thenReturn(USER_MANAGER_URL + "%s");
var model = processor.process(EntityModel.of(KommentarTestFactory.create()));
assertThat(model.getLink(REL_CREATED_BY)).isPresent().get().extracting(Link::getHref)
.isEqualTo(USER_MANAGER_URL + KommentarTestFactory.CREATED_BY);
}
}
}
......@@ -40,9 +40,6 @@ import org.springframework.hateoas.IanaLinkRelations;
import org.springframework.hateoas.Link;
import org.springframework.hateoas.server.EntityLinks;
import com.thedeanda.lorem.LoremIpsum;
import de.ozgcloud.alfa.common.LinkedResourceTestUtils;
import de.ozgcloud.alfa.common.user.UserManagerUrlProvider;
import de.ozgcloud.alfa.vorgang.VorgangController;
import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
......@@ -52,8 +49,6 @@ import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
class KommentarModelAssemblerTest {
private static final String PATH = KommentarController.KOMMENTAR_PATH + "/";
private static final String REL_CREATED_BY = "createdBy";
private static final String USER_MANAGER_URL = LoremIpsum.getInstance().getUrl();
@Spy
@InjectMocks
......@@ -127,16 +122,6 @@ class KommentarModelAssemblerTest {
assertThat(model.getLink(KommentarModelAssembler.REL_EDIT)).isEmpty();
}
@Test
void shouldHaveCreatedByLink() {
when(userManagerUrlProvider.getUserProfileTemplate()).thenReturn(USER_MANAGER_URL + "%s");
var model = LinkedResourceTestUtils.processUserProfileResource(buildModel(), userManagerUrlProvider);
assertThat(model.getLink(REL_CREATED_BY)).isPresent().get().extracting(Link::getHref)
.isEqualTo(USER_MANAGER_URL + KommentarTestFactory.CREATED_BY);
}
@Test
void shouldHaveAttachmentsLink() {
var kommentar = KommentarTestFactory.create();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment