Add test for getting actor ID by name with life dates

This commit is contained in:
Joshua Ramon Enslin 2025-03-10 01:48:09 +01:00
parent 5192781494
commit e95415be8f
Signed by: jrenslin
GPG Key ID: 46016F84501B70AE

View File

@ -141,6 +141,34 @@ final class NodaIDGetterTest extends TestCase {
}
/**
* Returns a test actor name and life dates.
*
* @return array<array{0: string, 1: integer, 2: string, 3: string}>
*/
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 [