diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidLinkedResourceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidLinkedResourceTest.java new file mode 100644 index 0000000000000000000000000000000000000000..eeb73065eb087b7a9a4ff597d40724cfc0aef1ea --- /dev/null +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidLinkedResourceTest.java @@ -0,0 +1,40 @@ +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(); + } + } +} diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidModelAssemblerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidModelAssemblerTest.java index 446bf2d7d5908164e30aa95456f9743230bbeff9..bab353051a9c47d5a8764d05ac103a4047690e55 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidModelAssemblerTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidModelAssemblerTest.java @@ -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); } } diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/DocumentLinkedResourceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/DocumentLinkedResourceTest.java new file mode 100644 index 0000000000000000000000000000000000000000..6223ee6e225605da2dd8f6619040a3b243f347ee --- /dev/null +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/DocumentLinkedResourceTest.java @@ -0,0 +1,41 @@ +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(); + } + } +} diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/DocumentModelAssemblerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/DocumentModelAssemblerTest.java index 29f78b4071dbc722d9c3d3e6159b0b57a1b6fa2c..debf5521d25db90c7bffdf623deb75c9b4a6d5d1 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/DocumentModelAssemblerTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/DocumentModelAssemblerTest.java @@ -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); } } } diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationLinkedResourceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationLinkedResourceTest.java new file mode 100644 index 0000000000000000000000000000000000000000..7c7349d96a0136e243f6015dbe28c604f667b7f5 --- /dev/null +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationLinkedResourceTest.java @@ -0,0 +1,39 @@ +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); + } + + } +} diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationModelAssemblerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationModelAssemblerTest.java index 7878bfea3516d09f6f7d4e26a12af9e6506c9783..3818b59854bbd3bbff6cdca7428c54b39177f68c 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationModelAssemblerTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationModelAssemblerTest.java @@ -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); } diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/LinkedResourceTestUtils.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/LinkedResourceTestUtils.java deleted file mode 100644 index 2091e594d1aed1abbaf63b2eb8acac1da5ee956a..0000000000000000000000000000000000000000 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/LinkedResourceTestUtils.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * 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); - } -} diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandLinkedResourceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandLinkedResourceTest.java new file mode 100644 index 0000000000000000000000000000000000000000..f8274e4d9cd64db61fb5de5883e3cc13df1a735b --- /dev/null +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandLinkedResourceTest.java @@ -0,0 +1,62 @@ +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(); + } + } +} diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/HistorieModelAssemblerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/historie/HistorieModelAssemblerTest.java index cd840fb170494f5fdb61121b9623210ea834d550..4274b00e92a0b3f08d6981d6ada6469d1e308940 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/HistorieModelAssemblerTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/historie/HistorieModelAssemblerTest.java @@ -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 diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarLinkedResourceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarLinkedResourceTest.java new file mode 100644 index 0000000000000000000000000000000000000000..9cf8101707b27f186f29153659ba91c7dc1366d8 --- /dev/null +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarLinkedResourceTest.java @@ -0,0 +1,40 @@ +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); + } + } +} diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarModelAssemblerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarModelAssemblerTest.java index 61309f2595749b072aa7b64c8f2df88b0a3e5dfd..7ddb61920d73ac7089862b76a13e45a5d217aac7 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarModelAssemblerTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarModelAssemblerTest.java @@ -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();