blob: 6b54691e7c676350e5cd6f1eb962bff2f5a788a4 [file] [log] [blame]
// 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));
}
}