diff --git a/src/RecordManager/Base/Enrichment/AuthEnrichment.php b/src/RecordManager/Base/Enrichment/AuthEnrichment.php
index ffa639ef..0675deb3 100644
--- a/src/RecordManager/Base/Enrichment/AuthEnrichment.php
+++ b/src/RecordManager/Base/Enrichment/AuthEnrichment.php
@@ -37,6 +37,8 @@
use RecordManager\Base\Utils\Logger;
use RecordManager\Base\Utils\MetadataUtils;
+use function is_callable;
+
/**
* Enrich biblio records with authority record data.
*
@@ -169,6 +171,9 @@ protected function enrichField(
}
$authRecord = $this->createRecordFromDbRecord($data);
+ if (!is_callable([$authRecord, 'getAlternativeNames'])) {
+ return;
+ }
if ($altNames = $authRecord->getAlternativeNames()) {
$solrArray[$solrField]
= array_merge($solrArray[$solrField] ?? [], $altNames);
diff --git a/tests/RecordManagerTest/Base/Enrichment/AuthEnrichmentTest.php b/tests/RecordManagerTest/Base/Enrichment/AuthEnrichmentTest.php
index fe1ebc2a..25f0dcfc 100644
--- a/tests/RecordManagerTest/Base/Enrichment/AuthEnrichmentTest.php
+++ b/tests/RecordManagerTest/Base/Enrichment/AuthEnrichmentTest.php
@@ -85,6 +85,15 @@ public static function getAuthEnrichmentData(): Generator
'author2' => ['Secondary Author With Missing Authority'],
],
];
+ yield 'no get alternative names method' => [
+ 'fixture' => 'marc_auth_2.xml',
+ 'authorityRecords' => [
+ '(FIN11)authority_002' => 'forward_authority_1.xml',
+ ],
+ 'config' => [],
+ 'authorIds' => ['(FIN11)authority_002'],
+ 'expected' => [],
+ ];
}
/**
@@ -117,7 +126,9 @@ public function testAuthEnrichment(
$enricher = $this->getAuthEnricher($authorityRecords, $config);
$enricher->enrich('test', $record, $fields);
-
+ if (!$expected) {
+ $this->assertArrayNotHasKey('author_variant', $fields, 'author_variant field should not be present.');
+ }
foreach ($expected as $key => $value) {
$this->assertEquals($value, $fields[$key] ?? null, "Field '$key' did not match expected value.");
}
@@ -147,17 +158,30 @@ protected function getAuthEnricher(array $authorityRecords, array $config = []):
// Mock authority database records
$authorityDbRecords = [];
foreach ($authorityRecords as $id => $filename) {
- $authorityRecord = $this->createMarcRecord(
- \RecordManager\Base\Record\MarcAuthority::class,
- $filename,
- []
- );
+ $authorityRecord = null;
+ $format = '';
+ if (str_contains($filename, 'forward_authority')) {
+ $authorityRecord = $this->createRecord(
+ \RecordManager\Base\Record\ForwardAuthority::class,
+ $filename,
+ []
+ );
+ $format = 'forwardAuthority';
+ } else {
+ $authorityRecord = $this->createMarcRecord(
+ \RecordManager\Base\Record\MarcAuthority::class,
+ $filename,
+ []
+ );
+ $format = 'marc';
+ }
+
$authorityDbRecords[$id] = [
'_id' => $id,
'source_id' => 'test',
'oai_id' => $id,
'deleted' => false,
- 'format' => 'marc',
+ 'format' => $format,
'original_data' => $authorityRecord->serialize(),
'normalized_data' => $authorityRecord->serialize(),
];
@@ -181,11 +205,17 @@ protected function getAuthEnricher(array $authorityRecords, array $config = []):
if ($format === 'marc') {
return $this->createMarcRecord(
\RecordManager\Base\Record\MarcAuthority::class,
- 'marc_authority_1.xml', // Dummy, will be replaced
+ 'marc_authority_1.xml',
+ []
+ );
+ } elseif ($format === 'forwardAuthority') {
+ return $this->createRecord(
+ \RecordManager\Base\Record\ForwardAuthority::class,
+ 'forward_authority_1.xml',
[]
);
}
- return null;
+ throw new \Exception("Unknown format requested in test: $format");
});
$enricher = $this->getMockBuilder(AuthEnrichment::class)
diff --git a/tests/fixtures/Base/record/forward_authority_1.xml b/tests/fixtures/Base/record/forward_authority_1.xml
new file mode 100644
index 00000000..b7eb3d79
--- /dev/null
+++ b/tests/fixtures/Base/record/forward_authority_1.xml
@@ -0,0 +1,1174 @@
+
+
+
+
+ 01
+ elonet_henkilo
+ Kangaroo_0001
+
+
+ Kookaburra_0026
+
+
+ Uusitalo: Jussien viisi vuosikymmentä. SKF 10. HS 6.12.2002. Emu_0027
+
+
+ 04
+ Cassowary_0019
+ FairyPenguin_0058, SugarGlider_0025
+ Quokka_0020
+ Koala_0002
+
+
+ 00
+ Goanna_0007
+ FairyPenguin_0058, Quokka_0020
+
+ Jussi-palkinnot 1951 parhaasta ohjauksesta sekä käsikirjoituksesta (yhdessä FrilledLizard_0028 kanssa) elokuvasta Radio tekee murron.
+Jussi-palkinto 1954 parhaasta ohjauksesta elokuvassa Sininen viikko.
+Jussi-palkinto 1955 parhaasta ohjauksesta elokuvissa Isän vanha ja uusi sekä Hilman päivät.
+Jussi-palkinto 1957 parhaasta ohjauksesta elokuvassa Elokuu.
+Jussi-palkinto 1959 parhaasta käsikirjoituksesta elokuvassa Punainen viiva.
+Jussi-palkinto 1962 parhaasta käsikirjoituksesta (yhdessä Wombat_0014 kanssa) elokuvassa Kaasua, komisario Palmu!.
+Ylimääräinen valtionpalkinto 1987 (50 000 mk).
+BlueTongueSkink_0029 -mitali 1995.
+SeaDragon_0010än elokuvajuhlilla 2003 merkittävästä työstä elokuvakulttuurin puolesta (1500e, rahoittajana Canal+).
+Elokuvataiteen valtionpalkinto 2008.
+Betoni-Jussi 2011 (perustelu: hieno ja merkittävä ura).
+
+ Dingo_0018
+
+ 01
+ elonet_kokoonpano
+ Wombat_0003
+
+
+
+ 51
+ 01.01.1900
+ Keuruu
+
+
+ 52
+ 01.01.1900
+ Vantaa
+
+
+ Suomi
+
+
+
+ Wallaby_0004
+
+ Cockatoo_0030
+
+
+ Emu_0001.jpg
+
+ 1
+
+ unspecified
+
+ Emu_0001.jpg
+
+ A99
+ Kangaroo_0001
+
+ 01
+ elonet_henkilo
+ Kangaroo_0001
+
+
+
+ DESCRIPTION
+
+
+ Wallaby_0004
+
+
+
+ Echidna_0006
+
+ Lyrebird_0031
+
+
+ FrilledLizard_0002.jpg
+
+ 2
+
+ unspecified
+
+ FrilledLizard_0002.jpg
+
+ A99
+ Kangaroo_0001
+
+ 01
+ elonet_henkilo
+ Kangaroo_0001
+
+
+
+ DESCRIPTION
+
+
+ Echidna_0006
+
+
+
+ Cassowary_0008
+
+ FairyPenguin_0032
+
+
+ BlueTongueSkink_0003.jpg
+
+ 3
+
+ unspecified
+
+ BlueTongueSkink_0003.jpg
+
+ A99
+ Kangaroo_0001
+
+ 01
+ elonet_henkilo
+ Kangaroo_0001
+
+
+
+ DESCRIPTION
+
+
+ Cassowary_0008
+
+
+
+ 61357
+
+ Goanna_0033
+
+
+ Cockatoo_0004.jpg
+
+ 14
+
+ unspecified
+
+ Cockatoo_0004.jpg
+
+ A99
+ Numbat_0011
+
+ 01
+ elonet_elokuva
+ Numbat_0011
+
+
+
+ A99
+ Kangaroo_0001
+
+ 01
+ elonet_henkilo
+ Kangaroo_0001
+
+
+
+ A99
+ Bandicoot_0012
+
+ 01
+ elonet_henkilo
+ Bandicoot_0012
+
+
+
+ DESCRIPTION
+
+
+ 61357
+
+
+
+ 61358
+
+ TreeKangaroo_0034
+
+
+ Lyrebird_0005.jpg
+
+ 20
+
+ unspecified
+
+ Lyrebird_0005.jpg
+
+ A99
+ Numbat_0011
+
+ 01
+ elonet_elokuva
+ Numbat_0011
+
+
+
+ A99
+ Kangaroo_0001
+
+ 01
+ elonet_henkilo
+ Kangaroo_0001
+
+
+
+ A99
+ SugarGlider_0014
+
+ 01
+ elonet_henkilo
+ SugarGlider_0014
+
+
+
+ DESCRIPTION
+
+
+ 61358
+
+
+
+ 72517
+
+ RockWallaby_0035
+
+
+ FairyPenguin_0006.jpg
+
+ 48
+
+ unspecified
+
+ FairyPenguin_0006.jpg
+
+ A99
+ Emu_0016
+
+ 01
+ elonet_elokuva
+ Emu_0016
+
+
+
+ A99
+ Kangaroo_0001
+
+ 01
+ elonet_henkilo
+ Kangaroo_0001
+
+
+
+ DESCRIPTION
+
+
+ 72517
+
+
+
+ 72518
+
+ SeaDragon_0036
+
+
+ Goanna_0007.jpg
+
+ 49
+
+ unspecified
+
+ Goanna_0007.jpg
+
+ A99
+ Emu_0016
+
+ 01
+ elonet_elokuva
+ Emu_0016
+
+
+
+ A99
+ Kangaroo_0001
+
+ 01
+ elonet_henkilo
+ Kangaroo_0001
+
+
+
+ A99
+ BlueTongueSkink_0018
+
+ 01
+ elonet_henkilo
+ BlueTongueSkink_0018
+
+
+
+ DESCRIPTION
+
+
+ 72518
+
+
+
+ Cockatoo_0019
+
+ LeatherbackTurtle_0037
+
+
+ TreeKangaroo_0008.jpg
+
+ 52
+
+ unspecified
+
+ TreeKangaroo_0008.jpg
+
+ A99
+ FairyPenguin_0021
+
+ 01
+ elonet_elokuva
+ FairyPenguin_0021
+
+
+
+ A99
+ Kangaroo_0001
+
+ 01
+ elonet_henkilo
+ Kangaroo_0001
+
+
+
+ A99
+ Goanna_0022
+
+ 01
+ elonet_henkilo
+ Goanna_0022
+
+
+
+ A99
+ TreeKangaroo_0023
+
+ 01
+ elonet_henkilo
+ TreeKangaroo_0023
+
+
+
+ DESCRIPTION
+
+
+ Cockatoo_0019
+
+
+
+ RockWallaby_0024
+
+ Kangaroo_0038
+
+
+ RockWallaby_0009.jpg
+
+ 54
+
+ unspecified
+
+ RockWallaby_0009.jpg
+
+ A99
+ LeatherbackTurtle_0026
+
+ 01
+ elonet_elokuva
+ LeatherbackTurtle_0026
+
+
+
+ A99
+ Kangaroo_0001
+
+ 01
+ elonet_henkilo
+ Kangaroo_0001
+
+
+
+ A99
+ Kangaroo_0027
+
+ 01
+ elonet_henkilo
+ Kangaroo_0027
+
+
+
+ A99
+ Koala_0028
+
+ 01
+ elonet_henkilo
+ Koala_0028
+
+
+
+ DESCRIPTION
+
+
+ RockWallaby_0024
+
+
+
+ 74914
+
+ Koala_0039
+
+
+ SeaDragon_0010.jpg
+
+ 59
+
+ unspecified
+
+ SeaDragon_0010.jpg
+
+ A99
+ Wallaby_0030
+
+ 01
+ elonet_elokuva
+ Wallaby_0030
+
+
+
+ A99
+ Kangaroo_0001
+
+ 01
+ elonet_henkilo
+ Kangaroo_0001
+
+
+
+ A99
+ Platypus_0031
+
+ 01
+ elonet_henkilo
+ Platypus_0031
+
+
+
+ DESCRIPTION
+
+
+ 74914
+
+
+
+ 74917
+
+ Wombat_0040
+
+
+ LeatherbackTurtle_0011.jpg
+
+ 62
+
+ unspecified
+
+ LeatherbackTurtle_0011.jpg
+
+ A99
+ Wallaby_0030
+
+ 01
+ elonet_elokuva
+ Wallaby_0030
+
+
+
+ A99
+ Kangaroo_0001
+
+ 01
+ elonet_henkilo
+ Kangaroo_0001
+
+
+
+ A99
+ Platypus_0031
+
+ 01
+ elonet_henkilo
+ Platypus_0031
+
+
+
+ A99
+ Dingo_0033
+
+ 01
+ elonet_henkilo
+ Dingo_0033
+
+
+
+ DESCRIPTION
+
+
+ 74917
+
+
+
+ 74919
+
+ Wallaby_0041
+
+
+ Kangaroo_0012.jpg
+
+ 64
+
+ unspecified
+
+ Kangaroo_0012.jpg
+
+ A99
+ Wallaby_0030
+
+ 01
+ elonet_elokuva
+ Wallaby_0030
+
+
+
+ A99
+ Kangaroo_0001
+
+ 01
+ elonet_henkilo
+ Kangaroo_0001
+
+
+
+ A99
+ Dingo_0033
+
+ 01
+ elonet_henkilo
+ Dingo_0033
+
+
+
+ A99
+ Platypus_0031
+
+ 01
+ elonet_henkilo
+ Platypus_0031
+
+
+
+ DESCRIPTION
+
+
+ 74919
+
+
+
+ Quokka_0035
+
+ Platypus_0042
+
+
+ Koala_0013.jpg
+
+ 69
+
+ unspecified
+
+ Koala_0013.jpg
+
+ A99
+ Numbat_0037
+
+ 01
+ elonet_elokuva
+ Numbat_0037
+
+
+
+ A99
+ Kangaroo_0001
+
+ 01
+ elonet_henkilo
+ Kangaroo_0001
+
+
+
+ DESCRIPTION
+
+
+ Quokka_0035
+
+
+
+ Bandicoot_0038
+
+ Echidna_0043
+
+
+ Wombat_0014.jpg
+
+ 70
+
+ unspecified
+
+ Wombat_0014.jpg
+
+ A99
+ Numbat_0037
+
+ 01
+ elonet_elokuva
+ Numbat_0037
+
+
+
+ A99
+ Kangaroo_0001
+
+ 01
+ elonet_henkilo
+ Kangaroo_0001
+
+
+
+ A99
+ SugarGlider_0040
+
+ 01
+ elonet_henkilo
+ SugarGlider_0040
+
+
+
+ DESCRIPTION
+
+
+ Bandicoot_0038
+
+
+
+ Kookaburra_0041
+
+ Dingo_0044
+
+
+ Wallaby_0015.jpg
+
+ 83
+
+ unspecified
+
+ Wallaby_0015.jpg
+
+ A99
+ FrilledLizard_0043
+
+ 01
+ elonet_elokuva
+ FrilledLizard_0043
+
+
+
+ A99
+ Kangaroo_0001
+
+ 01
+ elonet_henkilo
+ Kangaroo_0001
+
+
+
+ A99
+ Kangaroo_0027
+
+ 01
+ elonet_henkilo
+ Kangaroo_0027
+
+
+
+ DESCRIPTION
+
+
+ Kookaburra_0041
+
+
+
+ BlueTongueSkink_0044
+
+ Cassowary_0045
+
+
+ Platypus_0016.jpg
+
+ 85
+
+ unspecified
+
+ Platypus_0016.jpg
+
+ A99
+ Lyrebird_0046
+
+ 01
+ elonet_elokuva
+ Lyrebird_0046
+
+
+
+ A99
+ Kangaroo_0001
+
+ 01
+ elonet_henkilo
+ Kangaroo_0001
+
+
+
+ DESCRIPTION
+
+
+ BlueTongueSkink_0044
+
+
+
+ 31064
+
+ Quokka_0046
+
+
+ Echidna_0017.jpg
+
+ 110
+
+ unspecified
+
+ Echidna_0017.jpg
+
+ A99
+ Goanna_0048
+
+ 01
+ elonet_elokuva
+ Goanna_0048
+
+
+
+ A99
+ Kangaroo_0001
+
+ 01
+ elonet_henkilo
+ Kangaroo_0001
+
+
+
+ DESCRIPTION
+
+
+ 31064
+
+
+
+ TreeKangaroo_0049
+
+ Bilby_0047
+
+
+ Dingo_0018.jpg
+
+ 111
+
+ unspecified
+
+ Dingo_0018.jpg
+
+ A99
+ Goanna_0048
+
+ 01
+ elonet_elokuva
+ Goanna_0048
+
+
+
+ A99
+ Kangaroo_0001
+
+ 01
+ elonet_henkilo
+ Kangaroo_0001
+
+
+
+ DESCRIPTION
+
+
+ TreeKangaroo_0049
+
+
+
+ 66506
+
+ Numbat_0048
+
+
+ Cassowary_0019.jpg
+
+ 112
+
+ unspecified
+
+ Cassowary_0019.jpg
+
+ A99
+ LeatherbackTurtle_0052
+
+ 01
+ elonet_elokuva
+ LeatherbackTurtle_0052
+
+
+
+ A99
+ Kangaroo_0001
+
+ 01
+ elonet_henkilo
+ Kangaroo_0001
+
+
+
+ A99
+ Kangaroo_0027
+
+ 01
+ elonet_henkilo
+ Kangaroo_0027
+
+
+
+ DESCRIPTION
+
+
+ 66506
+
+
+
+ Kangaroo_0053
+
+ Bandicoot_0049
+
+
+ Quokka_0020.jpg
+
+ 117
+
+ unspecified
+
+ Quokka_0020.jpg
+
+ A99
+ LeatherbackTurtle_0052
+
+ 01
+ elonet_elokuva
+ LeatherbackTurtle_0052
+
+
+
+ A99
+ Kangaroo_0001
+
+ 01
+ elonet_henkilo
+ Kangaroo_0001
+
+
+
+ DESCRIPTION
+
+
+ Kangaroo_0053
+
+
+
+ Wombat_0055
+
+ TasmanianDevil_0050
+
+
+ Bilby_0021.jpg
+
+ 155
+
+ unspecified
+
+ Bilby_0021.jpg
+
+ A99
+ Platypus_0057
+
+ 01
+ elonet_elokuva
+ Platypus_0057
+
+
+
+ A99
+ Kangaroo_0001
+
+ 01
+ elonet_henkilo
+ Kangaroo_0001
+
+
+
+ DESCRIPTION
+
+
+ Wombat_0055
+
+
+
+ Echidna_0058
+
+ SugarGlider_0051
+
+
+ Numbat_0022.jpg
+
+ 156
+
+ unspecified
+
+ Numbat_0022.jpg
+
+ A99
+ Platypus_0057
+
+ 01
+ elonet_elokuva
+ Platypus_0057
+
+
+
+ A99
+ Kangaroo_0001
+
+ 01
+ elonet_henkilo
+ Kangaroo_0001
+
+
+
+ A99
+ Platypus_0031
+
+ 01
+ elonet_henkilo
+ Platypus_0031
+
+
+
+ DESCRIPTION
+
+
+ Echidna_0058
+
+
+
+ Cassowary_0060
+
+ Kookaburra_0052
+
+
+ Bandicoot_0023.jpg
+
+ 158
+
+ unspecified
+
+ Bandicoot_0023.jpg
+
+ A99
+ Platypus_0057
+
+ 01
+ elonet_elokuva
+ Platypus_0057
+
+
+
+ A99
+ Kangaroo_0001
+
+ 01
+ elonet_henkilo
+ Kangaroo_0001
+
+
+
+ DESCRIPTION
+
+
+ Cassowary_0060
+
+
+
+ 71563
+
+ Emu_0053
+
+
+ TasmanianDevil_0024.jpg
+
+ 160
+
+ unspecified
+
+ TasmanianDevil_0024.jpg
+
+ A99
+ Platypus_0057
+
+ 01
+ elonet_elokuva
+ Platypus_0057
+
+
+
+ A99
+ Kangaroo_0001
+
+ 01
+ elonet_henkilo
+ Kangaroo_0001
+
+
+
+ A99
+ Platypus_0031
+
+ 01
+ elonet_henkilo
+ Platypus_0031
+
+
+
+ DESCRIPTION
+
+
+ 71563
+
+
+
+ Numbat_0063
+
+ FrilledLizard_0054
+
+
+ SugarGlider_0025.jpg
+
+ 177
+
+ unspecified
+
+ SugarGlider_0025.jpg
+
+ A99
+ TasmanianDevil_0065
+
+ 01
+ elonet_elokuva
+ TasmanianDevil_0065
+
+
+
+ A99
+ Kangaroo_0001
+
+ 01
+ elonet_henkilo
+ Kangaroo_0001
+
+
+
+ DESCRIPTION
+
+
+ Numbat_0063
+
+
+
+ SugarGlider_0066
+
+ BlueTongueSkink_0055
+
+
+ Kookaburra_0026.jpg
+
+ 178
+
+ unspecified
+
+ Kookaburra_0026.jpg
+
+ A99
+ TasmanianDevil_0065
+
+ 01
+ elonet_elokuva
+ TasmanianDevil_0065
+
+
+
+ A99
+ Kangaroo_0001
+
+ 01
+ elonet_henkilo
+ Kangaroo_0001
+
+
+
+ DESCRIPTION
+
+
+ SugarGlider_0066
+
+
+
diff --git a/tests/fixtures/Base/record/marc_auth_2.xml b/tests/fixtures/Base/record/marc_auth_2.xml
new file mode 100644
index 00000000..6a163b35
--- /dev/null
+++ b/tests/fixtures/Base/record/marc_auth_2.xml
@@ -0,0 +1,17 @@
+
+
+ 00000nam a2200000 i 4500
+ marc_auth_test_1
+ 20251215000000.0
+ 251215s2025 fi 000 0 eng d
+
+ (FIN11)authority_001
+
+
+ Test Book Title
+
+
+ (FIN11)authority_001
+
+
+