From 5739e0baea65d113e13b1c98336b790250deb78f Mon Sep 17 00:00:00 2001 From: Andreas Romeyke <andreas.romeyke@slub-dresden.de> Date: Thu, 1 Aug 2019 14:15:20 +0200 Subject: [PATCH] - added some testcases --- t/slubsipbuilder.t | 326 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 326 insertions(+) create mode 100644 t/slubsipbuilder.t diff --git a/t/slubsipbuilder.t b/t/slubsipbuilder.t new file mode 100644 index 0000000..30945bc --- /dev/null +++ b/t/slubsipbuilder.t @@ -0,0 +1,326 @@ +#!/usr/bin/perl -w +use strict; +use warnings; +use diagnostics; + +use Test::More tests => 8; +use Test::Exception; +use Test::File; +use Path::Tiny; + +### prepare +BEGIN { + use Path::Tiny; + push @INC, Path::Tiny::path(__FILE__)->parent->parent->path("bin")->absolute->stringify; + require "slubsipbuilder.pl"; + $INC{'SLUB/LZA/SIPBuilder.pm'} = 1; # needed because inlined module +} +my $unpatched_mods=<<'UNPATCHED_MODS'; +<?xml version="1.0" encoding="UTF-8"?> +<mods xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.loc.gov/mods/v3" version="3.6" xsi:schemaLocation="http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-6.xsd"><titleInfo><nonSort xml:space="preserve">Der </nonSort><title>Fichtelberg</title><subTitle>Berg der unbekannten Rekorrde</subTitle></titleInfo><name type="personal"><namePart>Schneider, Dirk</namePart><role><roleTerm type="text">FilmemacherIn</roleTerm></role><role><roleTerm authority="marcrelator" type="code">fmk</roleTerm></role><nameIdentifier>(DE-627)1235502279 (DE-576)165502274</nameIdentifier></name><typeOfResource>moving image</typeOfResource><genre authority="rdacontent">zweidimensionales bewegtes Bild</genre><genre authority="gnd-content">Film</genre><originInfo><place><placeTerm type="code" authority="marccountry">xx</placeTerm></place><dateIssued encoding="marc">2014</dateIssued><issuance>monographic</issuance></originInfo><originInfo eventType="publication"><place><placeTerm type="text">[Leipzig]</placeTerm></place><publisher>top ten tv</publisher><dateIssued>[2014]</dateIssued></originInfo><language><languageTerm authority="iso639-2b" type="code">ger</languageTerm></language><physicalDescription><form authority="marccategory">electronic resource</form><form authority="marcsmd">remote</form><extent>1 Online-Ressource (1 Videodatei, 29:49) farbig</extent><form type="media" authority="rdamedia">Computermedien</form><form type="carrier" authority="rdacarrier">Online-Ressource</form></physicalDescription><targetAudience authority="marctarget">juvenile</targetAudience><note type="statement of responsibility" altRepGroup="00">ein Film von Dirk Schneider</note><note>Dokumentarfilm. Deutschland. 2014</note><relatedItem type="series"><titleInfo><title>MDR</title></titleInfo></relatedItem><relatedItem type="series"><titleInfo><title>Der Osten - entdecke wo du lebst</title></titleInfo></relatedItem><identifier type="oclc">946544758</identifier><recordInfo><descriptionStandard>rda</descriptionStandard><recordContentSource authority="marcorg">DE-576</recordContentSource><recordCreationDate encoding="marc">160304</recordCreationDate><recordChangeDate encoding="iso8601">20160510144338.0</recordChangeDate><recordIdentifier source="DE-576">457035137</recordIdentifier><recordOrigin>Converted from MARCXML to MODS version 3.6 using MARC21slim2MODS3-6.xsl + (Revision 1.119 2018/06/21)</recordOrigin><languageOfCataloging><languageTerm authority="iso639-2b" type="code">ger</languageTerm></languageOfCataloging></recordInfo></mods> +UNPATCHED_MODS +my $patched_mods=<<'PATCHED_MODS'; +<?xml version="1.0" encoding="UTF-8"?> +<mods xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.loc.gov/mods/v3" version="3.6" xsi:schemaLocation="http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-6.xsd"><titleInfo><nonSort xml:space="preserve">Der </nonSort><title>Fichtelberg</title><subTitle>Berg der unbekannten Rekorrde</subTitle></titleInfo><name type="personal"><namePart>Schneider, Dirk</namePart><role><roleTerm type="text">FilmemacherIn</roleTerm></role><role><roleTerm authority="marcrelator" type="code">fmk</roleTerm></role><nameIdentifier>(DE-627)1235502279 (DE-576)165502274</nameIdentifier></name><typeOfResource>moving image</typeOfResource><genre authority="rdacontent">zweidimensionales bewegtes Bild</genre><genre authority="gnd-content">Film</genre><originInfo><place><placeTerm type="code" authority="marccountry">xx</placeTerm></place><dateIssued encoding="marc">2014</dateIssued><issuance>monographic</issuance></originInfo><originInfo eventType="publication"><place><placeTerm type="text">[Leipzig]</placeTerm></place><publisher>top ten tv</publisher><dateIssued>[2014]</dateIssued></originInfo><language><languageTerm authority="iso639-2b" type="code">ger</languageTerm></language><physicalDescription><form authority="marccategory">electronic resource</form><form authority="marcsmd">remote</form><extent>1 Online-Ressource (1 Videodatei, 29:49) farbig</extent><form type="media" authority="rdamedia">Computermedien</form><form type="carrier" authority="rdacarrier">Online-Ressource</form></physicalDescription><targetAudience authority="marctarget">juvenile</targetAudience><note type="statement of responsibility" altRepGroup="00">ein Film von Dirk Schneider</note><note>Dokumentarfilm. Deutschland. 2014</note><relatedItem type="series"><titleInfo><title>MDR</title></titleInfo></relatedItem><relatedItem type="series"><titleInfo><title>Der Osten - entdecke wo du lebst</title></titleInfo></relatedItem><identifier type="oclc">946544758</identifier><recordInfo><descriptionStandard>rda</descriptionStandard><recordContentSource authority="marcorg">DE-576</recordContentSource><recordCreationDate encoding="marc">160304</recordCreationDate><recordChangeDate encoding="iso8601">20160510144338.0</recordChangeDate><recordIdentifier source="DE-576">457035137</recordIdentifier><recordOrigin>Converted from MARCXML to MODS version 3.6 using MARC21slim2MODS3-6.xsl + (Revision 1.119 2018/06/21)</recordOrigin><languageOfCataloging><languageTerm authority="iso639-2b" type="code">ger</languageTerm></languageOfCataloging></recordInfo></mods> +PATCHED_MODS +my $unpatched_mods_obj = XML::LibXML->load_xml(string => $unpatched_mods); + +my $unpatched_marcblob=<<'UNPATCHED_MARCBLOB'; +<?xml version="1.0"?> +<record xmlns="http://www.loc.gov/MARC21/slim"> + <leader> cgm a22 4500</leader> + <controlfield tag="001">457035137</controlfield> + <controlfield tag="003">DE-576</controlfield> + <controlfield tag="005">20160510144338.0</controlfield> + <controlfield tag="006">m o | | </controlfield> + <controlfield tag="007">cr uuu---uuuuu</controlfield> + <controlfield tag="007">vu uuuuuu</controlfield> + <controlfield tag="008">160304s2014 xx ger c</controlfield> + <datafield tag="035" ind1=" " ind2=" "> + <subfield code="a">(DE-627)1655506501</subfield> + </datafield> + <datafield tag="035" ind1=" " ind2=" "> + <subfield code="a">(DE-576)457035137</subfield> + </datafield> + <datafield tag="035" ind1=" " ind2=" "> + <subfield code="a">(DE-599)BSZ457035137</subfield> + </datafield> + <datafield tag="035" ind1=" " ind2=" "> + <subfield code="a">(OCoLC)946544758</subfield> + </datafield> + <datafield tag="040" ind1=" " ind2=" "> + <subfield code="a">DE-576</subfield> + <subfield code="b">ger</subfield> + <subfield code="c">DE-576</subfield> + <subfield code="e">rda</subfield> + </datafield> + <datafield tag="041" ind1=" " ind2=" "> + <subfield code="a">ger</subfield> + </datafield> + <datafield tag="245" ind1="1" ind2="4"> + <subfield code="a">Der Fichtelberg</subfield> + <subfield code="b">Berg der unbekannten Rekorrde</subfield> + <subfield code="c">ein Film von Dirk Schneider</subfield> + </datafield> + <datafield tag="264" ind1=" " ind2="1"> + <subfield code="a">[Leipzig]</subfield> + <subfield code="b">top ten tv</subfield> + <subfield code="c">[2014]</subfield> + </datafield> + <datafield tag="264" ind1=" " ind2="4"> + <subfield code="c">© 2014</subfield> + </datafield> + <datafield tag="300" ind1=" " ind2=" "> + <subfield code="a">1 Online-Ressource (1 Videodatei, 29:49)</subfield> + <subfield code="b">farbig</subfield> + </datafield> + <datafield tag="336" ind1=" " ind2=" "> + <subfield code="a">zweidimensionales bewegtes Bild</subfield> + <subfield code="b">tdi</subfield> + <subfield code="2">rdacontent</subfield> + </datafield> + <datafield tag="337" ind1=" " ind2=" "> + <subfield code="a">Computermedien</subfield> + <subfield code="b">c</subfield> + <subfield code="2">rdamedia</subfield> + </datafield> + <datafield tag="338" ind1=" " ind2=" "> + <subfield code="a">Online-Ressource</subfield> + <subfield code="b">cr</subfield> + <subfield code="2">rdacarrier</subfield> + </datafield> + <datafield tag="490" ind1="0" ind2=" "> + <subfield code="a">MDR</subfield> + </datafield> + <datafield tag="490" ind1="0" ind2=" "> + <subfield code="a">Der Osten - entdecke wo du lebst</subfield> + </datafield> + <datafield tag="500" ind1=" " ind2=" "> + <subfield code="a">Dokumentarfilm. Deutschland. 2014</subfield> + </datafield> + <datafield tag="591" ind1=" " ind2=" "> + <subfield code="a">Fernsehmitschnitt (SWB)</subfield> + </datafield> + <datafield tag="655" ind1=" " ind2="7"> + <subfield code="a">Film</subfield> + <subfield code="0">(DE-588)4017102-4</subfield> + <subfield code="0">(DE-627)104559683</subfield> + <subfield code="0">(DE-576)208918531</subfield> + <subfield code="2">gnd-content</subfield> + </datafield> + <datafield tag="700" ind1="1" ind2=" "> + <subfield code="a">Schneider, Dirk</subfield> + <subfield code="e">FilmemacherIn</subfield> + <subfield code="0">(DE-627)1235502279</subfield> + <subfield code="0">(DE-576)165502274</subfield> + <subfield code="4">fmk</subfield> + </datafield> + <datafield tag="935" ind1=" " ind2=" "> + <subfield code="c">vide</subfield> + </datafield> + <datafield tag="937" ind1=" " ind2=" "> + <subfield code="a">Dokumentarfilm</subfield> + <subfield code="b">Deutschland</subfield> + <subfield code="c">2014</subfield> + </datafield> + <datafield tag="LOK" ind1=" " ind2=" "> + <subfield code="0">000 xxxxxcx a22 zn 4500</subfield> + </datafield> + <datafield tag="LOK" ind1=" " ind2=" "> + <subfield code="0">001 901795887</subfield> + </datafield> + <datafield tag="LOK" ind1=" " ind2=" "> + <subfield code="0">003 DE-576</subfield> + </datafield> + <datafield tag="LOK" ind1=" " ind2=" "> + <subfield code="0">004 457035137</subfield> + </datafield> + <datafield tag="LOK" ind1=" " ind2=" "> + <subfield code="0">005 20160510125331</subfield> + </datafield> + <datafield tag="LOK" ind1=" " ind2=" "> + <subfield code="0">008 160304||||||||||||||||ger|||||||</subfield> + </datafield> + <datafield tag="LOK" ind1=" " ind2=" "> + <subfield code="0">040 </subfield> + <subfield code="a">DE-14</subfield> + <subfield code="c">DE-576</subfield> + <subfield code="d">DE-14</subfield> + </datafield> + <datafield tag="LOK" ind1=" " ind2=" "> + <subfield code="0">852 </subfield> + <subfield code="z">Fernsehmitschnitt: MDR, 04.02.2014. - Beilage</subfield> + </datafield> + <datafield tag="LOK" ind1=" " ind2=" "> + <subfield code="0">852 </subfield> + <subfield code="a">DE-14</subfield> + </datafield> + <datafield tag="LOK" ind1=" " ind2=" "> + <subfield code="0">852 1</subfield> + <subfield code="9">00</subfield> + </datafield> + <datafield tag="LOK" ind1=" " ind2=" "> + <subfield code="0">866 </subfield> + <subfield code="x">ddsu,pn</subfield> + </datafield> +</record> +UNPATCHED_MARCBLOB + +my $patched_marcblob =<<'PATCHED_MARCBLOB'; +<?xml version="1.0"?> +<record xmlns="http://www.loc.gov/MARC21/slim"> + <leader> cgm a22 4500</leader> + <controlfield tag="001">457035137</controlfield> + <controlfield tag="003">DE-576</controlfield> + <controlfield tag="005">20160510144338.0</controlfield> + <controlfield tag="006">m o | | </controlfield> + <controlfield tag="007">cr uuu---uuuuu</controlfield> + <controlfield tag="007">vu uuuuuu</controlfield> + <controlfield tag="008">160304s2014 xx ger c</controlfield> + <datafield tag="035" ind1=" " ind2=" "> + <subfield code="a">(DE-627)1655506501</subfield> + </datafield> + <datafield tag="035" ind1=" " ind2=" "> + <subfield code="a">(DE-576)457035137</subfield> + </datafield> + <datafield tag="035" ind1=" " ind2=" "> + <subfield code="a">(DE-599)BSZ457035137</subfield> + </datafield> + <datafield tag="035" ind1=" " ind2=" "> + <subfield code="a">(OCoLC)946544758</subfield> + </datafield> + <datafield tag="040" ind1=" " ind2=" "> + <subfield code="a">DE-576</subfield> + <subfield code="b">ger</subfield> + <subfield code="c">DE-576</subfield> + <subfield code="e">rda</subfield> + </datafield> + <datafield tag="041" ind1=" " ind2=" "> + <subfield code="a">ger</subfield> + </datafield> + <datafield tag="245" ind1="1" ind2="4"> + <subfield code="a">Der Fichtelberg</subfield> + <subfield code="b">Berg der unbekannten Rekorrde</subfield> + <subfield code="c">ein Film von Dirk Schneider</subfield> + </datafield> + <datafield tag="264" ind1=" " ind2="1"> + <subfield code="a">[Leipzig]</subfield> + <subfield code="b">top ten tv</subfield> + <subfield code="c">[2014]</subfield> + </datafield> + <datafield tag="264" ind1=" " ind2="4"> + <subfield code="c">© 2014</subfield> + </datafield> + <datafield tag="300" ind1=" " ind2=" "> + <subfield code="a">1 Online-Ressource (1 Videodatei, 29:49)</subfield> + <subfield code="b">farbig</subfield> + </datafield> + <datafield tag="336" ind1=" " ind2=" "> + <subfield code="a">zweidimensionales bewegtes Bild</subfield> + <subfield code="b">tdi</subfield> + <subfield code="2">rdacontent</subfield> + </datafield> + <datafield tag="337" ind1=" " ind2=" "> + <subfield code="a">Computermedien</subfield> + <subfield code="b">c</subfield> + <subfield code="2">rdamedia</subfield> + </datafield> + <datafield tag="338" ind1=" " ind2=" "> + <subfield code="a">Online-Ressource</subfield> + <subfield code="b">cr</subfield> + <subfield code="2">rdacarrier</subfield> + </datafield> + <datafield tag="490" ind1="0" ind2=" "> + <subfield code="a">MDR</subfield> + </datafield> + <datafield tag="490" ind1="0" ind2=" "> + <subfield code="a">Der Osten - entdecke wo du lebst</subfield> + </datafield> + <datafield tag="500" ind1=" " ind2=" "> + <subfield code="a">Dokumentarfilm. Deutschland. 2014</subfield> + </datafield> + <datafield tag="591" ind1=" " ind2=" "> + <subfield code="a">Fernsehmitschnitt (SWB)</subfield> + </datafield> + <datafield tag="655" ind1=" " ind2="7"> + <subfield code="a">Film</subfield> + <subfield code="0">(DE-588)4017102-4</subfield> + <subfield code="0">(DE-627)104559683</subfield> + <subfield code="0">(DE-576)208918531</subfield> + <subfield code="2">gnd-content</subfield> + </datafield> + <datafield tag="700" ind1="1" ind2=" "> + <subfield code="a">Schneider, Dirk</subfield> + <subfield code="e">FilmemacherIn</subfield> + <subfield code="0">(DE-627)1235502279</subfield> + <subfield code="0">(DE-576)165502274</subfield> + <subfield code="4">fmk</subfield> + </datafield> + <datafield tag="935" ind1=" " ind2=" "> + <subfield code="c">vide</subfield> + </datafield> + <datafield tag="937" ind1=" " ind2=" "> + <subfield code="a">Dokumentarfilm</subfield> + <subfield code="b">Deutschland</subfield> + <subfield code="c">2014</subfield> + </datafield> + <datafield tag="LOK" ind1=" " ind2=" "> + <subfield code="0">000 xxxxxcx a22 zn 4500</subfield> + </datafield> + <datafield tag="LOK" ind1=" " ind2=" "> + <subfield code="0">001 901795887</subfield> + </datafield> + <datafield tag="LOK" ind1=" " ind2=" "> + <subfield code="0">003 DE-576</subfield> + </datafield> + <datafield tag="LOK" ind1=" " ind2=" "> + <subfield code="0">004 457035137</subfield> + </datafield> + <datafield tag="LOK" ind1=" " ind2=" "> + <subfield code="0">005 20160510125331</subfield> + </datafield> + <datafield tag="LOK" ind1=" " ind2=" "> + <subfield code="0">008 160304||||||||||||||||ger|||||||</subfield> + </datafield> + <datafield tag="LOK" ind1=" " ind2=" "> + <subfield code="0">040 </subfield> + <subfield code="a">DE-14</subfield> + <subfield code="c">DE-576</subfield> + <subfield code="d">DE-14</subfield> + </datafield> + <datafield tag="LOK" ind1=" " ind2=" "> + <subfield code="0">852 </subfield> + <subfield code="z">Fernsehmitschnitt: MDR, 04.02.2014. - Beilage</subfield> + </datafield> + <datafield tag="LOK" ind1=" " ind2=" "> + <subfield code="0">852 </subfield> + <subfield code="a">DE-14</subfield> + </datafield> + <datafield tag="LOK" ind1=" " ind2=" "> + <subfield code="0">852 1</subfield> + <subfield code="9">00</subfield> + </datafield> + <datafield tag="LOK" ind1=" " ind2=" "> + <subfield code="0">866 </subfield> + <subfield code="x">ddsu,pn</subfield> + </datafield> +</record> +PATCHED_MARCBLOB +my $unpatched_marcblob_obj = XML::LibXML->load_xml(string => $unpatched_marcblob); + +### tests +BEGIN { use_ok("SLUB::LZA::SIPBuilder"); } +like(SLUB::LZA::SIPBuilder::get_mods_from("https://sru.bsz-bw.de/swb", "457035137", "pica.swn", "marcxmlvbos"), qr//, "get_mods_from()"); +is(SLUB::LZA::SIPBuilder::patch_mods($unpatched_mods_obj), $patched_mods, "patch_mods()" ); +is(SLUB::LZA::SIPBuilder::patch_marc_response($unpatched_marcblob_obj), $patched_marcblob, "patch_marc_response()"); +# ensure no dir exists, then run test +my $xsl_path = path(__FILE__)->parent->parent->child('xsl'); +if ($xsl_path->is_dir) { $xsl_path->remove_tree; } +is(SLUB::LZA::SIPBuilder::check_xsl_directory(), $xsl_path->absolute, "check_xsl_directory(), return value if not exist"); +ok($xsl_path->is_dir, "check_xsl_directory(), created if not exist"); +is(SLUB::LZA::SIPBuilder::check_xsl_directory(), $xsl_path->absolute, "check_xsl_directory(), return value if exist"); +ok($xsl_path->is_dir, "check_xsl_directory(), untouched if exist"); + +1; -- GitLab