diff --git a/src/enums/MDNodaRepository.php b/src/enums/MDNodaRepository.php index a3a2789..ebaf79f 100644 --- a/src/enums/MDNodaRepository.php +++ b/src/enums/MDNodaRepository.php @@ -746,11 +746,13 @@ enum MDNodaRepository implements MDValueEnumInterface, JsonSerializable { public static function validateBnfId(string $id):string|false { if (!is_numeric(substr($id, -1))) { - $validation = self::validateNumericId(substr($id, 0, -1), ["https://catalogue.bnf.fr/ark:/12148/cb"]); + $id = self::validateNumericId(substr($id, 0, -1), ["https://catalogue.bnf.fr/ark:/12148/cb"]) . substr($id, -1); } - else $validation = self::validateNumericId($id, ["https://catalogue.bnf.fr/ark:/12148/cb"]); + else $id = self::validateNumericId($id, ["https://catalogue.bnf.fr/ark:/12148/cb"]); - if ($validation === false) return false; + if ($id === false) { + return false; + } return $id; diff --git a/tests/MDNodaRepositoryTest.php b/tests/MDNodaRepositoryTest.php index a8acc78..f17a586 100644 --- a/tests/MDNodaRepositoryTest.php +++ b/tests/MDNodaRepositoryTest.php @@ -62,6 +62,17 @@ final class MDNodaRepositoryTest extends TestCase { } + /** + * Data provider for validating BNE IDs. + * + * @return Generator + */ + public static function bnfIdForValidationProvider():Generator { + + yield "Broken input / duplicate https" => [false, "https://catalogue.bnf.fr/ark:/12148/cbhttps://catalogue.bnf.fr/ark:/12148/cbhttps://catalogue.bnf.fr/ark:/12148/cb104183522"]; + + } + /** * Ensure validating references to the BNE works. *