From b2bfd7ae8e6dee3385d40e1e7be552fcd86ca8fb Mon Sep 17 00:00:00 2001 From: Robert Lange <robert.lange@uni-leipzig.de> Date: Tue, 5 Oct 2021 00:45:22 +0200 Subject: [PATCH] refs #20620 [finc] add tests for getUrls * handle warning in SolrMarcFincTrait for empty indicator * add tests and fixtures for #20600 and #18915 * run with: docker exec -it [your php container] sh -c "vendor/bin/phpunit --configuration module/finc/tests/phpunit.xml module/finc/tests/unit-tests/src/fincTest/RecordDriver/SolrMarcFincTestCase.php" --- .../getUrls/IIIF_0-1763648745_fullrecord.txt | 1 + .../getUrls/IIIF_0-1763648745_result.json | 12 ++++ ...sil_with_DE-15_0-1497294835_fullrecord.txt | 1 + .../isil_with_DE-15_0-1497294835_result.json | 7 ++ ...sil_for_22-15-qucosa-161943_fullrecord.txt | 1 + ...o_isil_for_22-15-qucosa-161943_result.json | 7 ++ .../RecordDriver/SolrMarcFincTestCase.php | 65 +++++++++++++++++-- 7 files changed, 88 insertions(+), 6 deletions(-) create mode 100644 module/finc/tests/fixtures/getUrls/IIIF_0-1763648745_fullrecord.txt create mode 100644 module/finc/tests/fixtures/getUrls/IIIF_0-1763648745_result.json create mode 100644 module/finc/tests/fixtures/getUrls/isil_with_DE-15_0-1497294835_fullrecord.txt create mode 100644 module/finc/tests/fixtures/getUrls/isil_with_DE-15_0-1497294835_result.json create mode 100644 module/finc/tests/fixtures/getUrls/no_isil_for_22-15-qucosa-161943_fullrecord.txt create mode 100644 module/finc/tests/fixtures/getUrls/no_isil_for_22-15-qucosa-161943_result.json diff --git a/module/finc/tests/fixtures/getUrls/IIIF_0-1763648745_fullrecord.txt b/module/finc/tests/fixtures/getUrls/IIIF_0-1763648745_fullrecord.txt new file mode 100644 index 00000000000..9f026ebd72b --- /dev/null +++ b/module/finc/tests/fixtures/getUrls/IIIF_0-1763648745_fullrecord.txt @@ -0,0 +1 @@ +03910nam a22009732 45000010013000000030007000130050017000200070015000370080041000520240039000930350023001320350026001550350022001810400031002030410008002340840043002421000030002852450247003152460014005622640009005763000037005853360026006223370032006483380037006805000057007175020058007745060106008325330104009385350015010425400083010575400104011405830068012446550091013127510074014037760214014778500007016918560114016988560119018129120016019319360192019479510007021398520032021468560065021788520031022439700007022749710010022819720010022919730007023019350009023088520016023178520018023338520017023518520017023688520018023858520016024038520018024198520018024378520018024558520017024738520017024908520018025078520017025258560065025428520031026079700007026389710010026459720010026559730007026659350009026728520016026818520018026978520017027158520017027328520018027498520016027678520018027838520018028018520018028198520017028378520017028548520018028718520017028899800030029060-1763648745DE-62720210719201444.0cr uuu---uuuuu210719s1965 xx |||||om 00| ||ger c7 aurn:nbn:de:bsz:15-0020-3325332urn a(DE-627)1763648745 a(DE-599)KXP1763648745 a(OCoLC)1260628169 aDE-627bgercDE-627erakwb ager aZX 70002rvk0(DE-625)rvk/158439:142571 aGöldner, Karl-Heinz4aut10aZum gegenseitigen Führen, Ein- und Unterordnen der Schüler im Sportunterrichtbein Beitrag zur Erziehung der Schüler zur Kollektivität im Sportunterricht; dargestellt auf der Grundlage eines pädagogischen ExperimentscKarl-Heinz Göldner30aEinordnen 1c1965 aIX, 200, XXVI Bl.bgraph. Darst. aTextbtxt2rdacontent aComputermedienbc2rdamedia aOnline-Ressourcebcr2rdacarrier aWahrnehmung der Rechte durch die VG Wort (§ 51 VGG) aLeipzig, Dt. Hochsch. für Körperkultur, Diss., 19650 qDE-15aOpen AccesseControlled Vocabulary for Access Rightsuhttp://purl.org/coar/access_right/c_abf2 aOnline-AusgabebLeipzigcUniversitätsbibliothek Leipzigd2020e1 Online-Ressource7|2020||||||||||1 aUB Leipzig qDE-15aUrheberrechtsschutz 1.02rsuhttp://rightsstatements.org/vocab/InC/1.0/ qDE-15aFreier Zugang - Rechte vorbehalten 1.0fUBL FZ-RV 1.0uhttps://www.ub.uni-leipzig.de/fz-rv-11 aArchivierung/Langzeitarchivierung gewährleistet2pdager5DE-15 7aHochschulschrift0(DE-588)4113937-90(DE-627)1058257780(DE-576)2094805802gnd-content aLeipzig0(DE-588)4035206-70(DE-627)1047989980(DE-576)2090112464uvp08iElektronische Reproduktion vonaGöldner, Karl-HeinztZum gegenseitigen Führen, Ein- und Unterordnen der Schüler im Sportunterrichtd1965hIX, 200, XXVI Bl.w(DE-627)142511671Xw(DE-576)355116715nUB Leipzig aaa40uhttp://nbn-resolving.org/urn:nbn:de:bsz:15-0020-332533xDigitalisierungyOnline-Zugriffzkostenfrei3Volltext42uhttps://iiif.ub.uni-leipzig.de/0000030933/manifest.jsonmB:DE-15qapplication/jsonxDigitalisierungyIIIF-Manifest aZDB-175-LHSrvaZX 7000bAllgemeines; EinführungenkSportkSportwissenschaftkTheorie des SportskAllgemeineskAllgemeines; Einführungen0(DE-627)139653542X0(DE-625)rvk/158439:142570(DE-576)32653542X aBO aDE-15z2021-07-19T00:00:00Z40uhttp://nbn-resolving.org/urn:nbn:de:bsz:15-0020-3325339LFER aLFERz2021-08-10T19:50:52Z cOD cEBOOK cEBOOK cEB alfer 2lferaDE-15 2lferaDE-Brt1 2lferaDE-Rs1 2lferaDE-Ch1 2lferaDE-L229 2lferaDE-14 2lferaDE-Pl11 2lferaDE-Gla1 2lferaDE-Zwi2 2lferaDE-Zi4 2lferaDE-Bn3 2lferaDE-D161 2lferaDE-10540uhttp://nbn-resolving.org/urn:nbn:de:bsz:15-0020-3325339LFER aLFERz2021-09-14T20:01:17Z cOD cEBOOK cEBOOK cEB alfer 2lferaDE-15 2lferaDE-Brt1 2lferaDE-Rs1 2lferaDE-Ch1 2lferaDE-L229 2lferaDE-14 2lferaDE-Pl11 2lferaDE-Gla1 2lferaDE-Zwi2 2lferaDE-Zi4 2lferaDE-Bn3 2lferaDE-D161 2lferaDE-105 a1763648745b0k1763648745 \ No newline at end of file diff --git a/module/finc/tests/fixtures/getUrls/IIIF_0-1763648745_result.json b/module/finc/tests/fixtures/getUrls/IIIF_0-1763648745_result.json new file mode 100644 index 00000000000..9d36b72bea9 --- /dev/null +++ b/module/finc/tests/fixtures/getUrls/IIIF_0-1763648745_result.json @@ -0,0 +1,12 @@ +[ + { + "url": "http://nbn-resolving.org/urn:nbn:de:bsz:15-0020-332533", + "desc": "Full Text", + "indicators": "40" + }, + { + "url": "https://iiif.ub.uni-leipzig.de/0000030933/manifest.json", + "desc": "IIIF-Manifest, Digitalisierung", + "indicators": "42" + } +] \ No newline at end of file diff --git a/module/finc/tests/fixtures/getUrls/isil_with_DE-15_0-1497294835_fullrecord.txt b/module/finc/tests/fixtures/getUrls/isil_with_DE-15_0-1497294835_fullrecord.txt new file mode 100644 index 00000000000..5275de52855 --- /dev/null +++ b/module/finc/tests/fixtures/getUrls/isil_with_DE-15_0-1497294835_fullrecord.txt @@ -0,0 +1 @@ +03104naa a2200997 45000010013000000030007000130050017000200070015000370080041000520240041000930350023001340350022001570350025001790400031002040410008002350820008002431000091002512450062003422640051004043000021004553360026004763370032005023380037005345910065005716500071006366500076007076500074007836510070008579510007009278560083009348520032010179500009010499500014010589500017010729500010010899500015010999500028011149500018011429500011011609500011011719500015011829500009011979500010012069500015012169500014012319500014012459500025012599500029012849500035013139500016013489500012013649500018013769500015013949500015014099500023014249500030014479500009014779500039014869500031015259500009015569500042015659500048016079500041016559500010016969500040017069500009017469500011017559500027017669500007017939500015018009500025018159500026018409500022018669500020018889500019019089500014019279500013019419500015019549500017019699500017019869500015020039510010020189510010020288520027020389800041020650-1497294835DE-62720150306122414.0cr uuu---uuuuu150306s2015 xx |||||o 00| ||eng c7 aurn:nbn:de:bsz:15-qucosa-1619432urn a(DE-627)1497294835 a(DE-576)427294835 a(DE-599)BSZ427294835 aDE-627bgercDE-627erakwb aeng0 a7911 aStoppe, Sebastiand1978-0(DE-588)13178076X0(DE-627)6633567330(DE-576)34640150X4aut10aHow predictable are the Academy Awards?cSebastian Stoppe 1aLeipzigbUniversitätsbibliothek Leipzigc2015 aOnline-Ressource aTextbtxt2rdacontent aComputermedienbc2rdamedia aOnline-Ressourcebcr2rdacarrier aworkingPaper ; IMD-Felder und 1131 maschinell ergänzt (SWB)070(DE-588)4017102-40(DE-627)1045596830(DE-576)208918531aFilm2gnd070(DE-588)4204337-20(DE-627)10514410X0(DE-576)210161345aFilmpreis2gnd070(DE-588)4005227-80(DE-627)1047680290(DE-576)208859845aUmfrage2gnd 70(DE-588)4078704-70(DE-627)1060766120(DE-576)209209682aUSA2gnd aAR4 uhttp://nbn-resolving.de/urn:nbn:de:bsz:15-qucosa-161943yOnline-Zugriff9DE-15 aDE-15z2015-03-06T12:24:14Z aKino aSpielfilm aFilmaufnahme aFilme aSpielfilme aAudiovisuelles Material aVideokassette a电影 a電影 aФильм aFilm aPreis aFilmpreise a电影奬 a電影奬 aÐšÐ¸Ð½Ð¾Ð¿Ñ€ÐµÐ¼Ð¸Ñ aUnited States of America aVereinigte Staaten von Amerika aNordamerika aAmerika aUnited States aEtats Unis aEtats-Unis aVereinigte Staaten aEstados Unidos de America aEEUU aVereinigte Staaten von Nordamerika aSoedinennye Å taty Ameriki aSÅ A aStany Zjednoczone Ameryki Północnej aHÄ“nÅmenai Politeiai tÄ“s Boreiu AmerikÄ“s aHÄ“nÅmenes Politeies tÄ“s AmerikÄ“s aHÄ“PA aÄ’nÅmenes Politeies tÄ“s AmerikÄ“s aÄ’PA aMeiguo aEtats-Unis d'Amérique aUS aAmerikaner aBevölkerungsumfrage aRepräsentativumfrage aMeinungsbefragung aMeinungsumfrage aVolksbefragung aBefragung aUmfragen aDemoskopie aæ°‘æ„调查 aæ°‘æ„調查 aÐžÐ¿Ñ€Ð¾Ñ aXD-US bXA-DE 2fincaFID-MEDIEN-DE-15 a1497294835b0k1497294835o427294835 \ No newline at end of file diff --git a/module/finc/tests/fixtures/getUrls/isil_with_DE-15_0-1497294835_result.json b/module/finc/tests/fixtures/getUrls/isil_with_DE-15_0-1497294835_result.json new file mode 100644 index 00000000000..199d5009e41 --- /dev/null +++ b/module/finc/tests/fixtures/getUrls/isil_with_DE-15_0-1497294835_result.json @@ -0,0 +1,7 @@ +[ + { + "url": "http://nbn-resolving.de/urn:nbn:de:bsz:15-qucosa-161943", + "desc": "Online-Zugriff", + "indicators": "4 " + } +] \ No newline at end of file diff --git a/module/finc/tests/fixtures/getUrls/no_isil_for_22-15-qucosa-161943_fullrecord.txt b/module/finc/tests/fixtures/getUrls/no_isil_for_22-15-qucosa-161943_fullrecord.txt new file mode 100644 index 00000000000..79c2b4b3541 --- /dev/null +++ b/module/finc/tests/fixtures/getUrls/no_isil_for_22-15-qucosa-161943_fullrecord.txt @@ -0,0 +1 @@ +01725cam a2200397157450000100200000000700150002000800390003504100080007403700360008210000220011824500440014026000790018452005410026350000170080485600780082165000340089965000150093365000220094865000210097065000090099165000350100065000110103565000140104665000190106065000260107965000110110565000220111665000190113865000090115765000200116665000290118665000100121565000110122508200080123698000830124422-15-qucosa-161943cr |||||||||||150101s2015 xx eng aeng nurn:nbn:de:bsz:15-qucosa-161943 aStoppe, Sebastian aHow predictable are the Academy Awards? bUniversitätsbibliothek Leipzigc2015g(issued 2015-03-06)9(created 2015)3 aBy conducting an explorative study it is tried to determine whether a sample of film enthusiasts can produce a similar result in judging for the 87th Academy Awards for movies in 2014 like the actual Academy members or not. An online survey has been created and the votes cast by the participants have been tabulated. It can be shown that the results of the simulated awards voting in the survey are quite similar to the actual Academy decision. However, additional adjustments and further studies are recommended to ensure the results. aworkingPaper41uhttps://nbn-resolving.org/urn:nbn:de:bsz:15-qucosa-161943zOnline-Zugriff 4aAcademy Awards. Rangfolgewahl 4aWahlzettel 4aeinfache Mehrheit 4aVorhersagbarkeit 4aFilm 4aVereinigte Staaten von Amerika 4aStudie 4aBefragung 4aAcademy Awards 4ainstant runoff voting 4aballot 4arelative majority 4apredictability 4afilm 4amotion pictures 4aUnited States of America 4astudy 4asurvey0 a791 aurn:nbn:de:bsz:15-qucosa-161943b22csid-22-col-qucosa-adlrcsid-22-col-qucosa \ No newline at end of file diff --git a/module/finc/tests/fixtures/getUrls/no_isil_for_22-15-qucosa-161943_result.json b/module/finc/tests/fixtures/getUrls/no_isil_for_22-15-qucosa-161943_result.json new file mode 100644 index 00000000000..6f031148fd5 --- /dev/null +++ b/module/finc/tests/fixtures/getUrls/no_isil_for_22-15-qucosa-161943_result.json @@ -0,0 +1,7 @@ +[ + { + "url": "https://nbn-resolving.org/urn:nbn:de:bsz:15-qucosa-161943", + "desc": "Online-Zugriff", + "indicators": "41" + } +] \ No newline at end of file diff --git a/module/finc/tests/unit-tests/src/fincTest/RecordDriver/SolrMarcFincTestCase.php b/module/finc/tests/unit-tests/src/fincTest/RecordDriver/SolrMarcFincTestCase.php index 886eb7aecb2..1b5e7ec45dd 100644 --- a/module/finc/tests/unit-tests/src/fincTest/RecordDriver/SolrMarcFincTestCase.php +++ b/module/finc/tests/unit-tests/src/fincTest/RecordDriver/SolrMarcFincTestCase.php @@ -28,8 +28,9 @@ */ namespace fincTest\RecordDriver; -use VuFindTest\Unit\TestCase as VuFindTestCase; use finc\RecordDriver\SolrMarcFinc as SolrMarcFincDriver; +use finc\RecordDriver\SolrMarcFincTrait; +use VuFindTest\Unit\TestCase as VuFindTestCase; /** * SolrMarcTestCase @@ -38,6 +39,7 @@ use finc\RecordDriver\SolrMarcFinc as SolrMarcFincDriver; * @package finc * @author Guenter Hipler <guenter.hipler@unibas.ch> * @author Frank Morgner <morgnerf@ub.uni-leipzig.de> + * @author Robert Lange <lange@ub.uni-leipzig.de> * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @link http://vufind.org */ @@ -73,11 +75,62 @@ class SolrMarcFincTestCase extends VuFindTestCase * * @return array */ - protected function getFixtureData($file) + protected function getFixtureData($file, $decode = true) + { + $content = file_get_contents(realpath(FINC_TEST_FIXTURES . '/' . $file)); + return $decode ? json_decode($content, true) : $content; + } + + /** + * @return void + */ + public function testGetURLs() + { + // although not current isil, link for IIIF should be shown based on indicator 2 #20600 + $this->runGetURLsTestCase('IIIF_0-1763648745'); + $this->runGetURLsTestCase('IIIF_0-1763648745', ['DE-15']); + + // Record 0-1497294835 with isil of DE-15 in fullrecord (subfield 9) results in empty array for adlr #18915 + $this->runGetURLsTestCase('isil_with_DE-15_0-1497294835', ['DE-15-FID'], []); + $this->runGetURLsTestCase('isil_with_DE-15_0-1497294835', ['FID-MEDIEN-DE-15'], []); + // .. but is shown in DE-15 + $this->runGetURLsTestCase('isil_with_DE-15_0-1497294835', ['DE-15']); + + // Record 0-1497294835 has no given isil in fullrecord (subfield 9) => shown as default / fallback #18915 + $this->runGetURLsTestCase('no_isil_for_22-15-qucosa-161943', ['DE-15-FID']); + $this->runGetURLsTestCase('no_isil_for_22-15-qucosa-161943', ['DE-15']); + } + + protected function getDriverMock() + { + return new SolrMarcFincDriverMock(); + } + + /** + * @return void + */ + public function runGetURLsTestCase(string $testCase, array $isils = [], $expectedResult = null) + { + $driver = $this->getDriverMock(); + $driver->setFullRecord($this->getFixtureData("getUrls/{$testCase}_fullrecord.txt", false)); + $driver->setIsils($isils); + $actualResult = $driver->getURLs(); + $expectedResult = $expectedResult ?? $this->getFixtureData("/getUrls/{$testCase}_result.json"); + $this->assertEquals($expectedResult, $actualResult); + } +} + +class SolrMarcFincDriverMock extends SolrMarcFincDriver +{ + use SolrMarcFincTrait; + + public function setFullRecord(string $fullrecord) + { + $this->fields['fullrecord'] = $fullrecord; + } + + public function setIsils(array $isils) { - return json_decode( - file_get_contents(realpath(FINC_TEST_FIXTURES . '/' . $file)), - true - ); + $this->isil = $isils; } } -- GitLab