From 344a5aeb50db14e29cf0c92c4b84266f4a235401 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Malte=20Lauk=C3=B6tter?= Date: Wed, 22 Jan 2025 12:50:54 +0100 Subject: [PATCH] Rename LoadNormXmlUseCase to LoadRegelungstextXmlUseCase RISDEV-6261 --- .../controller/NormExpressionController.java | 14 ++-- .../NormManifestationController.java | 12 ++-- .../port/input/LoadNormXmlUseCase.java | 28 -------- .../input/LoadRegelungstextXmlUseCase.java | 25 +++++++ .../application/service/NormService.java | 12 ++-- .../NormExpressionControllerTest.java | 8 +-- .../NormManifestationControllerTest.java | 12 ++-- .../application/service/NormServiceTest.java | 69 +++++++++---------- ...anifestationControllerIntegrationTest.java | 6 +- 9 files changed, 92 insertions(+), 94 deletions(-) delete mode 100644 backend/src/main/java/de/bund/digitalservice/ris/norms/application/port/input/LoadNormXmlUseCase.java create mode 100644 backend/src/main/java/de/bund/digitalservice/ris/norms/application/port/input/LoadRegelungstextXmlUseCase.java diff --git a/backend/src/main/java/de/bund/digitalservice/ris/norms/adapter/input/restapi/controller/NormExpressionController.java b/backend/src/main/java/de/bund/digitalservice/ris/norms/adapter/input/restapi/controller/NormExpressionController.java index 4ef8a109a..5cf754879 100644 --- a/backend/src/main/java/de/bund/digitalservice/ris/norms/adapter/input/restapi/controller/NormExpressionController.java +++ b/backend/src/main/java/de/bund/digitalservice/ris/norms/adapter/input/restapi/controller/NormExpressionController.java @@ -37,7 +37,7 @@ public class NormExpressionController { private final LoadNormUseCase loadNormUseCase; private final LoadRegelungstextUseCase loadRegelungstextUseCase; - private final LoadNormXmlUseCase loadNormXmlUseCase; + private final LoadRegelungstextXmlUseCase loadRegelungstextXmlUseCase; private final UpdateRegelungstextXmlUseCase updateRegelungstextXmlUseCase; private final TransformLegalDocMlToHtmlUseCase transformLegalDocMlToHtmlUseCase; private final ApplyPassiveModificationsUseCase applyPassiveModificationsUseCase; @@ -47,7 +47,7 @@ public class NormExpressionController { public NormExpressionController( LoadNormUseCase loadNormUseCase, LoadRegelungstextUseCase loadRegelungstextUseCase, - LoadNormXmlUseCase loadNormXmlUseCase, + LoadRegelungstextXmlUseCase loadRegelungstextXmlUseCase, UpdateRegelungstextXmlUseCase updateRegelungstextXmlUseCase, TransformLegalDocMlToHtmlUseCase transformLegalDocMlToHtmlUseCase, ApplyPassiveModificationsUseCase applyPassiveModificationsUseCase, @@ -56,7 +56,7 @@ public NormExpressionController( ) { this.loadNormUseCase = loadNormUseCase; this.loadRegelungstextUseCase = loadRegelungstextUseCase; - this.loadNormXmlUseCase = loadNormXmlUseCase; + this.loadRegelungstextXmlUseCase = loadRegelungstextXmlUseCase; this.updateRegelungstextXmlUseCase = updateRegelungstextXmlUseCase; this.transformLegalDocMlToHtmlUseCase = transformLegalDocMlToHtmlUseCase; this.applyPassiveModificationsUseCase = applyPassiveModificationsUseCase; @@ -88,7 +88,9 @@ public ResponseEntity getNorm(final DokumentExpressionEli el */ @GetMapping(produces = { APPLICATION_XML_VALUE }) public ResponseEntity getNormXml(final DokumentExpressionEli eli) { - return ResponseEntity.ok(loadNormXmlUseCase.loadNormXml(new LoadNormXmlUseCase.Query(eli))); + return ResponseEntity.ok( + loadRegelungstextXmlUseCase.loadRegelungstextXml(new LoadRegelungstextXmlUseCase.Query(eli)) + ); } /** @@ -128,7 +130,9 @@ public ResponseEntity getNormRender( ); } - var normXml = loadNormXmlUseCase.loadNormXml(new LoadNormXmlUseCase.Query(eli)); + var normXml = loadRegelungstextXmlUseCase.loadRegelungstextXml( + new LoadRegelungstextXmlUseCase.Query(eli) + ); var legalDocHtml = this.transformLegalDocMlToHtmlUseCase.transformLegalDocMlToHtml( new TransformLegalDocMlToHtmlUseCase.Query(normXml, showMetadata, false) diff --git a/backend/src/main/java/de/bund/digitalservice/ris/norms/adapter/input/restapi/controller/NormManifestationController.java b/backend/src/main/java/de/bund/digitalservice/ris/norms/adapter/input/restapi/controller/NormManifestationController.java index db23d45fd..4802faebc 100644 --- a/backend/src/main/java/de/bund/digitalservice/ris/norms/adapter/input/restapi/controller/NormManifestationController.java +++ b/backend/src/main/java/de/bund/digitalservice/ris/norms/adapter/input/restapi/controller/NormManifestationController.java @@ -2,7 +2,7 @@ import static org.springframework.http.MediaType.APPLICATION_XML_VALUE; -import de.bund.digitalservice.ris.norms.application.port.input.LoadNormXmlUseCase; +import de.bund.digitalservice.ris.norms.application.port.input.LoadRegelungstextXmlUseCase; import de.bund.digitalservice.ris.norms.domain.entity.eli.DokumentExpressionEli; import de.bund.digitalservice.ris.norms.domain.entity.eli.DokumentManifestationEli; import org.springframework.http.ResponseEntity; @@ -24,10 +24,10 @@ ) public class NormManifestationController { - private final LoadNormXmlUseCase loadNormXmlUseCase; + private final LoadRegelungstextXmlUseCase loadRegelungstextXmlUseCase; - public NormManifestationController(LoadNormXmlUseCase loadNormXmlUseCase) { - this.loadNormXmlUseCase = loadNormXmlUseCase; + public NormManifestationController(LoadRegelungstextXmlUseCase loadRegelungstextXmlUseCase) { + this.loadRegelungstextXmlUseCase = loadRegelungstextXmlUseCase; } /** @@ -40,7 +40,9 @@ public NormManifestationController(LoadNormXmlUseCase loadNormXmlUseCase) { */ @GetMapping(produces = { APPLICATION_XML_VALUE }) public ResponseEntity getNormManifestationXml(final DokumentManifestationEli eli) { - var norm = loadNormXmlUseCase.loadNormXml(new LoadNormXmlUseCase.Query(eli)); + var norm = loadRegelungstextXmlUseCase.loadRegelungstextXml( + new LoadRegelungstextXmlUseCase.Query(eli) + ); return ResponseEntity.ok(norm); } } diff --git a/backend/src/main/java/de/bund/digitalservice/ris/norms/application/port/input/LoadNormXmlUseCase.java b/backend/src/main/java/de/bund/digitalservice/ris/norms/application/port/input/LoadNormXmlUseCase.java deleted file mode 100644 index 0822e403c..000000000 --- a/backend/src/main/java/de/bund/digitalservice/ris/norms/application/port/input/LoadNormXmlUseCase.java +++ /dev/null @@ -1,28 +0,0 @@ -package de.bund.digitalservice.ris.norms.application.port.input; - -import de.bund.digitalservice.ris.norms.domain.entity.Norm; -import de.bund.digitalservice.ris.norms.domain.entity.eli.DokumentEli; -import java.util.Optional; - -/** - * Interface representing the use case for loading the xml representation of a {@link Norm}. - * Implementations of this interface should provide functionality to load the xml representation of - * a norm based on a given query. - */ -public interface LoadNormXmlUseCase { - /** - * Retrieves the xml representation of a norm based on the provided query. - * - * @param query The query containing the ELI (European Legislation Identifier) of the norm. - * @return An {@link Optional} containing the loaded {@link Norm} if found, or empty if not found. - */ - String loadNormXml(Query query); - - /** - * A record representing the query for loading the xml representation of a norm. The query - * includes the ELI (European Legislation Identifier) to identify the norm. - * - * @param eli The ELI (European Legislation Identifier) used to identify the norm in the query. - */ - record Query(DokumentEli eli) {} -} diff --git a/backend/src/main/java/de/bund/digitalservice/ris/norms/application/port/input/LoadRegelungstextXmlUseCase.java b/backend/src/main/java/de/bund/digitalservice/ris/norms/application/port/input/LoadRegelungstextXmlUseCase.java new file mode 100644 index 000000000..3571d6727 --- /dev/null +++ b/backend/src/main/java/de/bund/digitalservice/ris/norms/application/port/input/LoadRegelungstextXmlUseCase.java @@ -0,0 +1,25 @@ +package de.bund.digitalservice.ris.norms.application.port.input; + +import de.bund.digitalservice.ris.norms.domain.entity.Regelungstext; +import de.bund.digitalservice.ris.norms.domain.entity.eli.DokumentEli; +import java.util.Optional; + +/** + * Interface representing the use case for loading the xml representation of a {@link Regelungstext}. + */ +public interface LoadRegelungstextXmlUseCase { + /** + * Retrieves the xml representation of a dokument based on the provided query. + * + * @param query The query containing the ELI (European Legislation Identifier) of the dokument. + * @return An {@link Optional} containing the loaded {@link Regelungstext} if found, or empty if not found. + */ + String loadRegelungstextXml(Query query); + + /** + * A record representing the query for loading the xml representation of a dokument. + * + * @param eli The ELI (European Legislation Identifier) used to identify the dokument in the query. + */ + record Query(DokumentEli eli) {} +} diff --git a/backend/src/main/java/de/bund/digitalservice/ris/norms/application/service/NormService.java b/backend/src/main/java/de/bund/digitalservice/ris/norms/application/service/NormService.java index 4bbc54906..33d9f7fc4 100644 --- a/backend/src/main/java/de/bund/digitalservice/ris/norms/application/service/NormService.java +++ b/backend/src/main/java/de/bund/digitalservice/ris/norms/application/service/NormService.java @@ -30,7 +30,7 @@ public class NormService implements LoadNormUseCase, - LoadNormXmlUseCase, + LoadRegelungstextXmlUseCase, UpdateRegelungstextXmlUseCase, UpdateModUseCase, UpdateModsUseCase, @@ -74,12 +74,12 @@ public Regelungstext loadRegelungstext(final LoadRegelungstextUseCase.Query quer } @Override - public String loadNormXml(final LoadNormXmlUseCase.Query query) { - final Norm norm = loadNormPort - .loadNorm(new LoadNormPort.Command(query.eli())) - .orElseThrow(() -> new NormNotFoundException(query.eli().toString())); + public String loadRegelungstextXml(final LoadRegelungstextXmlUseCase.Query query) { + final Regelungstext regelungstext = loadRegelungstextPort + .loadRegelungstext(new LoadRegelungstextPort.Command(query.eli())) + .orElseThrow(() -> new RegelungstextNotFoundException(query.eli().toString())); - return XmlMapper.toString(norm.getDocument()); + return XmlMapper.toString(regelungstext.getDocument()); } @Override diff --git a/backend/src/test/java/de/bund/digitalservice/ris/norms/adapter/input/restapi/controller/NormExpressionControllerTest.java b/backend/src/test/java/de/bund/digitalservice/ris/norms/adapter/input/restapi/controller/NormExpressionControllerTest.java index 1dec05a60..7b15d10fd 100644 --- a/backend/src/test/java/de/bund/digitalservice/ris/norms/adapter/input/restapi/controller/NormExpressionControllerTest.java +++ b/backend/src/test/java/de/bund/digitalservice/ris/norms/adapter/input/restapi/controller/NormExpressionControllerTest.java @@ -51,7 +51,7 @@ class NormExpressionControllerTest { private LoadRegelungstextUseCase loadRegelungstextUseCase; @MockitoBean - private LoadNormXmlUseCase loadNormXmlUseCase; + private LoadRegelungstextXmlUseCase loadRegelungstextXmlUseCase; @MockitoBean private UpdateRegelungstextXmlUseCase updateRegelungstextXmlUseCase; @@ -189,7 +189,7 @@ void itCallsLoadNormXmlAndReturnsNormXml() throws Exception { final String xml = ""; // When - when(loadNormXmlUseCase.loadNormXml(any())).thenReturn(xml); + when(loadRegelungstextXmlUseCase.loadRegelungstextXml(any())).thenReturn(xml); // When // Then mockMvc @@ -209,7 +209,7 @@ void itCallsNormServiceAndReturnsNormRender() throws Exception { final String xml = ""; final String html = "
"; - when(loadNormXmlUseCase.loadNormXml(any())).thenReturn(xml); + when(loadRegelungstextXmlUseCase.loadRegelungstextXml(any())).thenReturn(xml); when(transformLegalDocMlToHtmlUseCase.transformLegalDocMlToHtml(any())).thenReturn(html); // When // Then @@ -232,7 +232,7 @@ void itCallsNormServiceAndReturnsNormRenderWithMetadata() throws Exception { final String xml = ""; final String html = "
"; - when(loadNormXmlUseCase.loadNormXml(any())).thenReturn(xml); + when(loadRegelungstextXmlUseCase.loadRegelungstextXml(any())).thenReturn(xml); when(transformLegalDocMlToHtmlUseCase.transformLegalDocMlToHtml(any())).thenReturn(html); // When // Then diff --git a/backend/src/test/java/de/bund/digitalservice/ris/norms/adapter/input/restapi/controller/NormManifestationControllerTest.java b/backend/src/test/java/de/bund/digitalservice/ris/norms/adapter/input/restapi/controller/NormManifestationControllerTest.java index 46321abd3..15938609f 100644 --- a/backend/src/test/java/de/bund/digitalservice/ris/norms/adapter/input/restapi/controller/NormManifestationControllerTest.java +++ b/backend/src/test/java/de/bund/digitalservice/ris/norms/adapter/input/restapi/controller/NormManifestationControllerTest.java @@ -4,7 +4,7 @@ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; -import de.bund.digitalservice.ris.norms.application.port.input.LoadNormXmlUseCase; +import de.bund.digitalservice.ris.norms.application.port.input.LoadRegelungstextXmlUseCase; import de.bund.digitalservice.ris.norms.config.SecurityConfig; import de.bund.digitalservice.ris.norms.domain.entity.eli.DokumentManifestationEli; import org.junit.jupiter.api.Nested; @@ -32,7 +32,7 @@ public class NormManifestationControllerTest { private MockMvc mockMvc; @MockitoBean - private LoadNormXmlUseCase loadNormXmlUseCase; + private LoadRegelungstextXmlUseCase loadRegelungstextXmlUseCase; @Nested class getNormManifestationXml { @@ -72,7 +72,7 @@ void itReturnsNorm() throws Exception { """; // When - when(loadNormXmlUseCase.loadNormXml(any())).thenReturn(xml); + when(loadRegelungstextXmlUseCase.loadRegelungstextXml(any())).thenReturn(xml); // When // Then mockMvc @@ -80,8 +80,10 @@ void itReturnsNorm() throws Exception { .andExpect(status().isOk()) .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_XML)); - verify(loadNormXmlUseCase, times(1)) - .loadNormXml(new LoadNormXmlUseCase.Query(DokumentManifestationEli.fromString(eli))); + verify(loadRegelungstextXmlUseCase, times(1)) + .loadRegelungstextXml( + new LoadRegelungstextXmlUseCase.Query(DokumentManifestationEli.fromString(eli)) + ); } } } diff --git a/backend/src/test/java/de/bund/digitalservice/ris/norms/application/service/NormServiceTest.java b/backend/src/test/java/de/bund/digitalservice/ris/norms/application/service/NormServiceTest.java index 58ab477fd..6b1f00a33 100644 --- a/backend/src/test/java/de/bund/digitalservice/ris/norms/application/service/NormServiceTest.java +++ b/backend/src/test/java/de/bund/digitalservice/ris/norms/application/service/NormServiceTest.java @@ -173,67 +173,60 @@ void itThrowsWhenNotFound() { } @Nested - class loadNormXml { + class loadRegelungstextXml { @Test - void itCallsLoadNormAndReturnsXml() { + void itCallsLoadRegelungstextAndReturnsXml() { // Given var eli = DokumentExpressionEli.fromString( "eli/bund/bgbl-1/1964/s593/1964-08-05/1/deu/regelungstext-1" ); - var norm = Norm - .builder() - .regelungstexte( - Set.of( - new Regelungstext( - XmlMapper.toDocument( - """ - - - - - - - - - - - - - - """ - ) - ) - ) + var regelungstext = new Regelungstext( + XmlMapper.toDocument( + """ + + + + + + + + + + + + + + """ ) - .build(); - when(loadNormPort.loadNorm(any())).thenReturn(Optional.of(norm)); + ); + when(loadRegelungstextPort.loadRegelungstext(any())).thenReturn(Optional.of(regelungstext)); // When - var xml = service.loadNormXml(new LoadNormXmlUseCase.Query(eli)); + var xml = service.loadRegelungstextXml(new LoadRegelungstextXmlUseCase.Query(eli)); // Then - verify(loadNormPort, times(1)) - .loadNorm(argThat(argument -> Objects.equals(argument.eli(), eli.asNormEli()))); + verify(loadRegelungstextPort, times(1)) + .loadRegelungstext(argThat(argument -> Objects.equals(argument.eli(), eli))); assertThat(xml).contains("eId=\"meta-1_ident-1_frbrexpression-1_frbrthis-1\""); } @Test - void itCallsLoadNormAndThrowsNotFound() { + void itCallsLoadRegelungstextAndThrowsNotFound() { // Given var eli = DokumentExpressionEli.fromString( "eli/bund/bgbl-1/1964/s593/1964-08-05/1/deu/regelungstext-1" ); - when(loadNormPort.loadNorm(any())).thenReturn(Optional.empty()); - var query = new LoadNormXmlUseCase.Query(eli); + when(loadRegelungstextPort.loadRegelungstext(any())).thenReturn(Optional.empty()); + var query = new LoadRegelungstextXmlUseCase.Query(eli); // When - assertThatThrownBy(() -> service.loadNormXml(query)) + assertThatThrownBy(() -> service.loadRegelungstextXml(query)) // then - .isInstanceOf(NormNotFoundException.class); + .isInstanceOf(RegelungstextNotFoundException.class); } } diff --git a/backend/src/test/java/de/bund/digitalservice/ris/norms/integration/adapter/input/restapi/NormManifestationControllerIntegrationTest.java b/backend/src/test/java/de/bund/digitalservice/ris/norms/integration/adapter/input/restapi/NormManifestationControllerIntegrationTest.java index 0401676f3..fdf52a283 100644 --- a/backend/src/test/java/de/bund/digitalservice/ris/norms/integration/adapter/input/restapi/NormManifestationControllerIntegrationTest.java +++ b/backend/src/test/java/de/bund/digitalservice/ris/norms/integration/adapter/input/restapi/NormManifestationControllerIntegrationTest.java @@ -57,13 +57,13 @@ void itReturnsNotFoundIfManifestationDoesntExist() throws Exception { mockMvc .perform(get("/api/v1/norms/{eli}", eli).accept(MediaType.APPLICATION_XML)) .andExpect(status().isNotFound()) - .andExpect(jsonPath("type").value("/errors/norm-not-found")) - .andExpect(jsonPath("title").value("Norm not found")) + .andExpect(jsonPath("type").value("/errors/regelungstext-not-found")) + .andExpect(jsonPath("title").value("Regelungstext not found")) .andExpect(jsonPath("status").value(404)) .andExpect( jsonPath("detail") .value( - "Norm with eli eli/bund/bgbl-1/1964/s593/1964-08-05/1/deu/1964-08-05/regelungstext-1.xml does not exist" + "Regelungstext with eli eli/bund/bgbl-1/1964/s593/1964-08-05/1/deu/1964-08-05/regelungstext-1.xml does not exist" ) ) .andExpect(