diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 0000000..4822c31 --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,14 @@ + + + + + tests/ + + + + + + src + + + diff --git a/src/enums/MDNodaRepository.php b/src/enums/MDNodaRepository.php index 4d6e958..4848035 100644 --- a/src/enums/MDNodaRepository.php +++ b/src/enums/MDNodaRepository.php @@ -624,6 +624,13 @@ enum MDNodaRepository implements MDValueEnumInterface, JsonSerializable { 'https://www.wikidata.org/entity/' => '', 'https://www.wikidata.org/w/index.php?search=&search=' => '', ]); + + if (str_starts_with($id, 'https://www.wikidata.org/w/index.php?title=')) { + $id = str_replace('https://www.wikidata.org/w/index.php?title=', '', $id); + if (($endPos = strpos($id, '&')) !== false) { + $id = substr($id, 0, $endPos); + } + } } if (substr($id, 0, 1) !== 'Q') { diff --git a/tests/MDNodaRepositoryTest.php b/tests/MDNodaRepositoryTest.php index 3ff7cd2..c9f9416 100644 --- a/tests/MDNodaRepositoryTest.php +++ b/tests/MDNodaRepositoryTest.php @@ -21,6 +21,8 @@ final class MDNodaRepositoryTest extends TestCase { */ public function testValidIdsValidate():void { + self::assertEquals("Q834961", MDNodaRepository::wikidata->validateId("https://www.wikidata.org/w/index.php?title=Q834961&oldid=2256125706")); + self::assertEquals("XX5034943", MDNodaRepository::bne->validateId("http://datos.bne.es/persona/XX5034943")); self::assertEquals("XX5034943", MDNodaRepository::bne->validateId("https://datos.bne.es/persona/XX5034943")); self::assertEquals("XX5034943", MDNodaRepository::bne->validateId("XX5034943")); diff --git a/tests/bootstrap.php b/tests/bootstrap.php new file mode 100644 index 0000000..7d968a8 --- /dev/null +++ b/tests/bootstrap.php @@ -0,0 +1,34 @@ +