From 669a8a14590dda3288743f78b8ead7d0172873f8 Mon Sep 17 00:00:00 2001 From: Joshua Ramon Enslin Date: Thu, 10 Oct 2024 14:16:52 +0200 Subject: [PATCH] Add tests for lookup functions by vocabulary references --- tests/NodaIDGetterTest.php | 170 ++++++++++++++++++++++++++++++++----- tests/bootstrap.php | 4 + 2 files changed, 153 insertions(+), 21 deletions(-) diff --git a/tests/NodaIDGetterTest.php b/tests/NodaIDGetterTest.php index 2a3e974..df51c9a 100644 --- a/tests/NodaIDGetterTest.php +++ b/tests/NodaIDGetterTest.php @@ -119,16 +119,16 @@ final class NodaIDGetterTest extends TestCase { */ public static function persinstByNameProvider():array { - $mysqli = md_main_mysqli_connect(); + $mysqli = md_noda_mysqli_connect(); $persinstByNameSimple = self::_getNameAndIdFromDbQuery($mysqli, "SELECT `persinst_name`, `persinst_id` - FROM `" . DATABASENAME_NODA . "`.`persinst` + FROM `persinst` WHERE INSTR(`persinst_name`, 'i')"); $persinstByDisplayNameSimple = self::_getNameAndIdFromDbQuery($mysqli, "SELECT `persinst_anzeigename`, `persinst_id` - FROM `" . DATABASENAME_NODA . "`.`persinst` + FROM `persinst` WHERE INSTR(`persinst_anzeigename`, 'i') AND `persinst_sterbejahr` != ''"); $persinstByDisplayNameSimple = self::_getNameAndIdFromDbQuery($mysqli, "SELECT `trans_name`, `persinst_id` - FROM `" . DATABASENAME_NODA . "`.`persinst_translation` + FROM `persinst_translation` WHERE INSTR(`trans_name`, 'i') AND `trans_language` = 'de'"); $mysqli->close(); @@ -165,9 +165,9 @@ final class NodaIDGetterTest extends TestCase { */ public static function persinstByRewriteProvider():array { - $mysqli = md_main_mysqli_connect(); + $mysqli = md_noda_mysqli_connect(); $persinstByRewriteSimple = self::_getNameAndIdFromDbQuery($mysqli, "SELECT `input_name`, `persinst_id` - FROM `" . DATABASENAME_NODA . "`.`persinst_rewriting` + FROM `persinst_rewriting` WHERE INSTR(`input_name`, 'i')"); $mysqli->close(); @@ -201,12 +201,12 @@ final class NodaIDGetterTest extends TestCase { */ public static function placeByNameProvider():array { - $mysqli = md_main_mysqli_connect(); + $mysqli = md_noda_mysqli_connect(); $placeByNameSimple = self::_getNameAndIdFromDbQuery($mysqli, "SELECT `ort_name`, `ort_id` - FROM `" . DATABASENAME_NODA . "`.`orte` + FROM `orte` WHERE INSTR(`ort_name`, 'i')"); $placeByDisplayNameSimple = self::_getNameAndIdFromDbQuery($mysqli, "SELECT `trans_name`, `ort_id` - FROM `" . DATABASENAME_NODA . "`.`ort_translation` + FROM `ort_translation` WHERE INSTR(`trans_name`, 'i') AND `trans_language` = 'de'"); $mysqli->close(); @@ -242,9 +242,9 @@ final class NodaIDGetterTest extends TestCase { */ public static function placeByRewriteProvider():array { - $mysqli = md_main_mysqli_connect(); + $mysqli = md_noda_mysqli_connect(); $placeByRewriteSimple = self::_getNameAndIdFromDbQuery($mysqli, "SELECT `input_name`, `ort_id` - FROM `" . DATABASENAME_NODA . "`.`ort_rewriting` + FROM `ort_rewriting` WHERE INSTR(`input_name`, 'i')"); $mysqli->close(); @@ -278,12 +278,12 @@ final class NodaIDGetterTest extends TestCase { */ public static function tagByNameProvider():array { - $mysqli = md_main_mysqli_connect(); + $mysqli = md_noda_mysqli_connect(); $tagByNameSimple = self::_getNameAndIdFromDbQuery($mysqli, "SELECT `tag_name`, `tag_id` - FROM `" . DATABASENAME_NODA . "`.`tag` + FROM `tag` WHERE INSTR(`tag_name`, 'i')"); $tagByDisplayNameSimple = self::_getNameAndIdFromDbQuery($mysqli, "SELECT `trans_name`, `tag_id` - FROM `" . DATABASENAME_NODA . "`.`tag_translation` + FROM `tag_translation` WHERE INSTR(`trans_name`, 'i') AND `trans_language` = 'de'"); $mysqli->close(); @@ -319,9 +319,9 @@ final class NodaIDGetterTest extends TestCase { */ public static function tagByRewriteProvider():array { - $mysqli = md_main_mysqli_connect(); + $mysqli = md_noda_mysqli_connect(); $tagByRewriteSimple = self::_getNameAndIdFromDbQuery($mysqli, "SELECT `input_name`, `tag_id` - FROM `" . DATABASENAME_NODA . "`.`tag_rewriting` + FROM `tag_rewriting` WHERE INSTR(`input_name`, 'i')"); $mysqli->close(); @@ -363,12 +363,12 @@ final class NodaIDGetterTest extends TestCase { */ public static function timeByNameProvider():array { - $mysqli = md_main_mysqli_connect(); + $mysqli = md_noda_mysqli_connect(); $timeByNameSimple = self::_getNameAndIdFromDbQuery($mysqli, "SELECT `zeit_name`, `zeit_id` - FROM `" . DATABASENAME_NODA . "`.`zeiten` + FROM `zeiten` WHERE INSTR(`zeit_name`, 'i')"); $timeByDisplayNameSimple = self::_getNameAndIdFromDbQuery($mysqli, "SELECT `trans_name`, `zeit_id` - FROM `" . DATABASENAME_NODA . "`.`zeit_translation` + FROM `zeit_translation` WHERE INSTR(`trans_name`, 'i') AND `trans_language` = 'de'"); $mysqli->close(); @@ -404,9 +404,9 @@ final class NodaIDGetterTest extends TestCase { */ public static function timeByRewriteProvider():array { - $mysqli = md_main_mysqli_connect(); + $mysqli = md_noda_mysqli_connect(); $timeByRewriteSimple = self::_getNameAndIdFromDbQuery($mysqli, "SELECT `input_name`, `zeit_id` - FROM `" . DATABASENAME_NODA . "`.`zeit_rewriting` + FROM `zeit_rewriting` WHERE INSTR(`input_name`, 'i')"); $mysqli->close(); @@ -430,4 +430,132 @@ final class NodaIDGetterTest extends TestCase { $this->runRegularComparisonTests("getTimeIDByRewrite", $name, $expected_id); } + + // Entity getters by norm data references + + /** + * Data provider for norm data reference for actors. + * + * @return array + */ + public static function nodaRefForActorsProvider():array { + + $mysqli = md_noda_mysqli_connect(); + $nodaSimple = self::_getNameAndIdFromDbQuery($mysqli, "SELECT `noda_link`, `persinst_id` + FROM `noda` + WHERE `noda_source` = 'Wikidata' + AND `noda_link` != ''"); + $mysqli->close(); + + return [ + 'Valid actor ID by norm data reference: ' . $nodaSimple[0] => [ + new MDNodaLink(MDNodaRepository::wikidata, $nodaSimple[0]), + $nodaSimple[1], + ], + 'Invalid, non-existing Wikidata ID' => [ + new MDNodaLink(MDNodaRepository::wikidata, 'Q11111111111111'), + 0, + ], + ]; + + } + + /** + * Test getting actor ID by norm data reference. + * + * @param MDNodaLink $link Noda link. + * @param integer $expected_id Expected target ID. + * + * @return void + */ + #[DataProvider('nodaRefForActorsProvider')] + public function testGetPersinstByNodaLinkWorks(MDNodaLink $link, int $expected_id):void { + + self::assertEquals($expected_id, NodaIDGetter::getPersinstIDByNodaLink($this->_mysqli, $link)); + + } + + /** + * Data provider for norm data reference for places. + * + * @return array + */ + public static function nodaRefForPlacesProvider():array { + + $mysqli = md_noda_mysqli_connect(); + $nodaSimple = self::_getNameAndIdFromDbQuery($mysqli, "SELECT `noda_link`, `ort_id` + FROM `noda_orte` + WHERE `noda_source` = 'Wikidata' + AND `noda_link` != ''"); + $mysqli->close(); + + return [ + 'Valid place ID by norm data reference: ' . $nodaSimple[0] => [ + new MDNodaLink(MDNodaRepository::wikidata, $nodaSimple[0]), + $nodaSimple[1], + ], + 'Invalid, non-existing Wikidata ID' => [ + new MDNodaLink(MDNodaRepository::wikidata, 'Q11111111111111'), + 0, + ], + ]; + + } + + /** + * Test getting place ID by norm data reference. + * + * @param MDNodaLink $link Noda link. + * @param integer $expected_id Expected target ID. + * + * @return void + */ + #[DataProvider('nodaRefForPlacesProvider')] + public function testGetPlaceByNodaLinkWorks(MDNodaLink $link, int $expected_id):void { + + self::assertEquals($expected_id, NodaIDGetter::getPlaceIDByNodaLink($this->_mysqli, $link)); + + } + + /** + * Data provider for norm data reference for tags. + * + * @return array + */ + public static function nodaRefForTagsProvider():array { + + $mysqli = md_noda_mysqli_connect(); + $nodaSimple = self::_getNameAndIdFromDbQuery($mysqli, "SELECT `noda_link`, `tag_id` + FROM `noda_tag` + WHERE `noda_source` = 'Wikidata' + AND `noda_link` != ''"); + $mysqli->close(); + + return [ + 'Valid tag ID by norm data reference: ' . $nodaSimple[0] => [ + new MDNodaLink(MDNodaRepository::wikidata, $nodaSimple[0]), + $nodaSimple[1], + ], + 'Invalid, non-existing Wikidata ID' => [ + new MDNodaLink(MDNodaRepository::wikidata, 'Q11111111111111'), + 0, + ], + ]; + + } + + /** + * Test getting tag ID by norm data reference. + * + * @param MDNodaLink $link Noda link. + * @param integer $expected_id Expected target ID. + * + * @return void + */ + #[DataProvider('nodaRefForTagsProvider')] + public function testGetTagByNodaLinkWorks(MDNodaLink $link, int $expected_id):void { + + self::assertEquals($expected_id, NodaIDGetter::getTagIDByNodaLink($this->_mysqli, $link)); + + } } diff --git a/tests/bootstrap.php b/tests/bootstrap.php index d27cbb9..4f1c4e0 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -21,6 +21,10 @@ declare(strict_types = 1); __DIR__ . '/../../MDErrorReporter/exceptions/generic', __DIR__ . '/../../MDErrorReporter/exceptions/updates', __DIR__ . '/../../MDMysqli/src', + __DIR__ . '/../../MDAllowedValueSets/src', + __DIR__ . '/../../MDAllowedValueSets/src/classes', + __DIR__ . '/../../MDAllowedValueSets/src/enums', + __DIR__ . '/../../MDAllowedValueSets/exceptions', __DIR__ . '/../../MDMysqli/exceptions', ]) as $classDir) {