aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/eu/mulk/aendggner/BezugTest.java59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/test/java/eu/mulk/aendggner/BezugTest.java b/src/test/java/eu/mulk/aendggner/BezugTest.java
new file mode 100644
index 0000000..6b54691
--- /dev/null
+++ b/src/test/java/eu/mulk/aendggner/BezugTest.java
@@ -0,0 +1,59 @@
+// SPDX-FileCopyrightText: 2026 Matthias Andreas Benkard <code@mail.matthias.benkard.de>
+// SPDX-License-Identifier: AGPL-3.0-or-later
+package eu.mulk.aendggner;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
+
+/**
+ * Geprüft wird, was ohne Netz zu prüfen ist: die Ableitung der Kennung, die Ableitung des Namens
+ * und der Vorrang der vorhandenen Datei. Der Abruf selbst gehört nicht in eine Prüfung, die auf
+ * jedem Rechner laufen soll.
+ */
+class BezugTest {
+
+ /**
+ * Die Kennung des Portals: klein geschrieben, und was kein Buchstabe, keine Ziffer und kein
+ * Bindestrich ist, wird zum Unterstrich. So schreibt gesetze-im-internet.de seine Anschriften.
+ */
+ @ParameterizedTest
+ @CsvSource({
+ "UWG 2004, uwg_2004",
+ "uwg_2004, uwg_2004",
+ "GEG, geg",
+ "1-DM-GoldmünzG, 1-dm-goldm_nzg",
+ "' IfSG ', ifsg",
+ })
+ void leitetDieKennungAb(String angabe, String erwartet) {
+ assertThat(Bezug.kennung(angabe)).isEqualTo(erwartet);
+ }
+
+ @ParameterizedTest
+ @CsvSource({
+ "https://dserver.bundestag.de/btd/21/018/2101855.pdf, 2101855.pdf",
+ "https://www.gesetze-im-internet.de/uwg_2004/xml.zip, xml.zip",
+ "https://example.org/heft.pdf?fassung=2#seite3, heft.pdf",
+ })
+ void leitetDenNamenAusDerAnschriftAb(String anschrift, String erwartet) {
+ assertThat(Bezug.dateiname(anschrift)).isEqualTo(erwartet);
+ }
+
+ /** Die vorhandene Datei hat den Vorrang: Wer eine Datei „gii:etwas“ nennt, meint sie. */
+ @Test
+ void nimmtDieVorhandeneDateiVorJederDeutung() throws IOException, InterruptedException {
+ var datei = Path.of("src/test/resources/sampledata/Brandenburg/FraktG-alt.txt");
+ assumeTrue(Files.exists(datei), "Beispieldaten fehlen");
+
+ var quelle = Bezug.hole(datei.toString());
+
+ assertThat(quelle.name()).isEqualTo("FraktG-alt.txt");
+ assertThat(quelle.inhalt()).isEqualTo(Files.readAllBytes(datei));
+ }
+}