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">&#xA9; 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">&#xA9; 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