From e95415be8fa0f2a4957c862b562702ba764b358f Mon Sep 17 00:00:00 2001 From: Joshua Ramon Enslin Date: Mon, 10 Mar 2025 01:48:09 +0100 Subject: [PATCH] Add test for getting actor ID by name with life dates --- tests/NodaIDGetterTest.php | 50 +++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/tests/NodaIDGetterTest.php b/tests/NodaIDGetterTest.php index 9a466a2..bda9b78 100644 --- a/tests/NodaIDGetterTest.php +++ b/tests/NodaIDGetterTest.php @@ -141,6 +141,34 @@ final class NodaIDGetterTest extends TestCase { } + /** + * Returns a test actor name and life dates. + * + * @return array + */ + public static function persinstByNameAndLifeDatesProvider():array { + + $mysqli = md_noda_mysqli_connect(); + $result = $mysqli->do_read_query("SELECT `persinst_name_en`, `persinst_id`, `persinst_geburtsjahr`, `persinst_sterbejahr` + FROM `persinst` + WHERE INSTR(`persinst_name_en`, 'i') + AND `persinst_geburtsjahr` != '' + AND `persinst_sterbejahr` != '' + LIMIT 1"); + if (!$cur = $result->fetch_row()) { + throw new Exception("Error"); + } + $result->close(); + $mysqli->close(); + + return [ + 'Persinst ID by name: ' . implode(' - ', $cur) => [ + (string)$cur[0], (int)$cur[1], (string)$cur[2], (string)$cur[3] + ] + ]; + + } + /** * Test getting persinst by name works. * @@ -156,6 +184,25 @@ final class NodaIDGetterTest extends TestCase { } + /** + * Test getting persinst by name and life dates works. + * + * @param string $name Name of the entry. + * @param integer $expected_id Expected target ID. + * @param string $birth_year Birth year. + * @param string $death_year Death year. + * + * @return void + */ + #[DataProvider('persinstByNameAndLifeDatesProvider')] + public function testGetPersinstIdByNameAndLifeDatesWorks(string $name, int $expected_id, string $birth_year, string $death_year):void { + + self::assertEquals($expected_id, + NodaIDGetter::getPersinstIDByNamePlusYears($this->_mysqli, "de", $name, $birth_year, $death_year), + "Entry " . $name . " is not matched in exact lookup. Expected ID: " . $expected_id); + + } + // PersinstIDByRewrite /** @@ -411,7 +458,8 @@ final class NodaIDGetterTest extends TestCase { $mysqli = md_noda_mysqli_connect(); $timeByRewriteSimple = self::_getNameAndIdFromDbQuery($mysqli, "SELECT `input_name`, `zeit_id` FROM `zeit_rewriting` - WHERE INSTR(`input_name`, 'i')"); + WHERE INSTR(`input_name`, 'i') + AND `language` = 'de'"); $mysqli->close(); return [