[libcatmandu-marc-perl] 109/208: Adding marc_spec rule tests

Jonas Smedegaard dr at jones.dk
Sat Oct 28 03:42:41 UTC 2017


This is an automated email from the git hooks/post-receive script.

js pushed a commit to annotated tag upstream/1.19
in repository libcatmandu-marc-perl.

commit 1ab3778a394eab015f2bbbdea4cdcd625fba0cf3
Author: Patrick Hochstenbach <patrick.hochstenbach at ugent.be>
Date:   Thu Mar 2 14:13:17 2017 +0100

    Adding marc_spec rule tests
---
 t/23-mapping_rules_spec.t | 356 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 356 insertions(+)

diff --git a/t/23-mapping_rules_spec.t b/t/23-mapping_rules_spec.t
new file mode 100644
index 0000000..9ce6257
--- /dev/null
+++ b/t/23-mapping_rules_spec.t
@@ -0,0 +1,356 @@
+use strict;
+use warnings;
+use Test::More;
+use Catmandu;
+
+my $mrc = <<'MRC';
+<?xml version="1.0" encoding="UTF-8"?>
+<marc:collection xmlns:marc="http://www.loc.gov/MARC21/slim">
+    <marc:record>
+        <marc:datafield ind1=" " ind2=" " tag="245">
+            <marc:subfield code="a">Title / </marc:subfield>
+            <marc:subfield code="c">Name</marc:subfield>
+        </marc:datafield>
+        <marc:datafield ind1=" " ind2=" " tag="500">
+            <marc:subfield code="a">A</marc:subfield>
+            <marc:subfield code="a">B</marc:subfield>
+            <marc:subfield code="a">C</marc:subfield>
+            <marc:subfield code="x">D</marc:subfield>
+        </marc:datafield>
+        <marc:datafield ind1=" " ind2=" " tag="650">
+            <marc:subfield code="a">Alpha</marc:subfield>
+        </marc:datafield>
+        <marc:datafield ind1=" " ind2=" " tag="650">
+            <marc:subfield code="a">Beta</marc:subfield>
+        </marc:datafield>
+        <marc:datafield ind1=" " ind2=" " tag="650">
+            <marc:subfield code="a">Gamma</marc:subfield>
+        </marc:datafield>
+        <marc:datafield ind1=" " ind2=" " tag="999">
+            <marc:subfield code="a">X</marc:subfield>
+            <marc:subfield code="a">Y</marc:subfield>
+        </marc:datafield>
+        <marc:datafield ind1=" " ind2=" " tag="999">
+            <marc:subfield code="a">Z</marc:subfield>
+        </marc:datafield>
+    </marc:record>
+</marc:collection>
+MRC
+
+note 'marc_spec(245,title)     title: "Title / Name"';
+{
+    my $importer = Catmandu->importer(
+        'MARC',
+        file => \$mrc,
+        type => 'XML',
+        fix  => 'marc_spec(245,title); retain_field(title)'
+    );
+    my $record = $importer->first;
+    is_deeply $record->{title}, 'Title / Name', 'marc_spec(245,title)';
+}
+
+note 'marc_spec(245$a,title)    title: "Title / "';
+{
+    my $importer = Catmandu->importer(
+        'MARC',
+        file => \$mrc,
+        type => 'XML',
+        fix  => 'marc_spec(245$a,title); retain_field(title)'
+    );
+    my $record = $importer->first;
+    is_deeply $record->{title}, 'Title / ', 'marc_spec(245$a,title)';
+}
+
+note 'marc_spec(245,title.$append)     title: [ "Title / Name" ]';
+{
+    my $importer = Catmandu->importer(
+        'MARC',
+        file => \$mrc,
+        type => 'XML',
+        fix  => 'marc_spec(245,title.$append); retain_field(title)'
+    );
+    my $record = $importer->first;
+    is_deeply $record->{title}, ['Title / Name'], 'marc_spec(245.$append,title)';
+}
+
+note 'marc_spec(245$a,title.$append)    title: [ "Title / " ]';
+{
+    my $importer = Catmandu->importer(
+        'MARC',
+        file => \$mrc,
+        type => 'XML',
+        fix  => 'marc_spec(245$a,title.$append); retain_field(title)'
+    );
+    my $record = $importer->first;
+    is_deeply $record->{title}, ['Title / '], 'marc_spec(245$a.$append,title)';
+}
+
+note 'marc_spec(245,title, split:1)    title: [ "Title / ", "Name" ]';
+{
+    my $importer = Catmandu->importer(
+        'MARC',
+        file => \$mrc,
+        type => 'XML',
+        fix  => 'marc_spec(245,title, split:1); retain_field(title)'
+    );
+    my $record = $importer->first;
+    is_deeply $record->{title}, [ 'Title / ', 'Name' ],
+        'marc_spec(245,title, split:1)';
+}
+
+note
+    'marc_spec(245, title, split:1, nested_arrays:1)  title: [[ "Title / ", "Name" ]]';
+{
+    note "nested_arrays not yet supported";
+}
+
+note 'marc_spec(500,note)  note: "ABCD"';
+{
+    my $importer = Catmandu->importer(
+        'MARC',
+        file => \$mrc,
+        type => 'XML',
+        fix  => 'marc_spec(500,note); retain_field(note)'
+    );
+    my $record = $importer->first;
+    is_deeply $record->{note}, 'ABCD', 'marc_spec(500,note)';
+}
+
+note 'marc_spec(500$a,note)     note: "ABC"';
+{
+    my $importer = Catmandu->importer(
+        'MARC',
+        file => \$mrc,
+        type => 'XML',
+        fix  => 'marc_spec(500$a,note); retain_field(note)'
+    );
+    my $record = $importer->first;
+    is_deeply $record->{note}, 'ABC', 'marc_spec(500$a,note)';
+}
+
+note 'marc_spec(500,note.$append)  note: [ "ABCD" ]';
+{
+    my $importer = Catmandu->importer(
+        'MARC',
+        file => \$mrc,
+        type => 'XML',
+        fix  => ' marc_spec(500,note.$append); retain_field(note)'
+    );
+    my $record = $importer->first;
+    is_deeply $record->{note}, ['ABCD'], ' marc_spec(500,note.$append)';
+}
+
+note 'marc_spec(500$a,note.$append)     note: [ "ABC" ]';
+{
+    my $importer = Catmandu->importer(
+        'MARC',
+        file => \$mrc,
+        type => 'XML',
+        fix  => ' marc_spec(500$a,note.$append); retain_field(note)'
+    );
+    my $record = $importer->first;
+    is_deeply $record->{note}, ['ABC'], ' marc_spec(500$a,note.$append)';
+}
+
+note 'marc_spec(500,note, split:1)     note: [ "A" , "B" , "C" , "D" ]';
+{
+    my $importer = Catmandu->importer(
+        'MARC',
+        file => \$mrc,
+        type => 'XML',
+        fix  => 'marc_spec(500,note, split:1); retain_field(note)'
+    );
+    my $record = $importer->first;
+    is_deeply $record->{note}, [ 'A', 'B', 'C', 'D' ], 'marc_spec(500,note, split:1)';
+}
+
+note 'marc_spec(500$a,note, split:1)    note: [ "A" , "B" , "C" ]';
+{
+    my $importer = Catmandu->importer(
+        'MARC',
+        file => \$mrc,
+        type => 'XML',
+        fix  => 'marc_spec(500$a,note, split:1); retain_field(note)'
+    );
+    my $record = $importer->first;
+    is_deeply $record->{note}, [ 'A', 'B', 'C' ], 'marc_spec(500a,note, split:1)';
+}
+
+note
+    'marc_spec(500$a,note, split:1, nested_arrays:1)   note: [[ "A" , "B" , "C" ]]';
+{
+    note("nested arrays not yet supported");
+}
+
+note 'marc_spec(500$a,note.$append, split:1)    note : [[ "A" , "B" , "C" ]]';
+{
+    my $importer = Catmandu->importer(
+        'MARC',
+        file => \$mrc,
+        type => 'XML',
+        fix  => 'marc_spec(500$a,note.$append, split:1); retain_field(note)'
+    );
+    my $record = $importer->first;
+    is_deeply $record->{note}, [ [ 'A', 'B', 'C' ] ],
+        'marc_spec(500$a,note.$append, split:1)';
+}
+
+note
+    'marc_map(500a,note.$append, split:1, nested_arrays: 1)  note : [[[ "A" , "B" , "C" ]]]';
+{
+    note("nested arrays not yet supported");
+}
+
+note 'marc_spec(650,subject)   subject: "AlphaBetaGamma"';
+{
+    my $importer = Catmandu->importer(
+        'MARC',
+        file => \$mrc,
+        type => 'XML',
+        fix  => 'marc_spec(650,subject); retain_field(subject)'
+    );
+    my $record = $importer->first;
+    is_deeply $record->{subject}, 'AlphaBetaGamma', 'marc_spec(650,subject)';
+}
+
+note 'marc_spec(650$a,subject)  subject: "AlphaBetaGamma"';
+{
+    my $importer = Catmandu->importer(
+        'MARC',
+        file => \$mrc,
+        type => 'XML',
+        fix  => 'marc_spec(650$a,subject) ; retain_field(subject)'
+    );
+    my $record = $importer->first;
+    is_deeply $record->{subject}, 'AlphaBetaGamma', 'marc_spec(650$a,subject)';
+}
+
+note 'marc_spec(650$a,subject.$append)  subject: [ "Alpha", "Beta" , "Gamma" ]';
+{
+    my $importer = Catmandu->importer(
+        'MARC',
+        file => \$mrc,
+        type => 'XML',
+        fix  => 'marc_spec(650$a,subject.$append); retain_field(subject)'
+    );
+    my $record = $importer->first;
+    is_deeply $record->{subject}, [ 'Alpha', 'Beta', 'Gamma' ],
+        'marc_spec(650$a,subject.$append)';
+}
+
+note
+    'marc_spec(650$a,subject, split:1)     subject: [ "Alpha", "Beta" , "Gamma" ]';
+{
+    my $importer = Catmandu->importer(
+        'MARC',
+        file => \$mrc,
+        type => 'XML',
+        fix  => 'marc_spec(650$a,subject, split:1); retain_field(subject)'
+    );
+    my $record = $importer->first;
+    is_deeply $record->{subject}, [ 'Alpha', 'Beta', 'Gamma' ],
+        'marc_spec(650$a,subject, split:1)';
+}
+
+note
+    'marc_spec(650$a,subject.$append, split:1)     subject: [[ "Alpha" , "Beta" , "Gamma" ]]';
+{
+    my $importer = Catmandu->importer(
+        'MARC',
+        file => \$mrc,
+        type => 'XML',
+        fix =>
+            'marc_spec(650$a,subject.$append, split:1) ; retain_field(subject)'
+    );
+    my $record = $importer->first;
+    is_deeply $record->{subject}, [ [ 'Alpha', 'Beta', 'Gamma' ] ],
+        'marc_spec(650$a,subject.$append, split:1) ';
+}
+
+note
+    'marc_spec(650$a,subject, split:1, nested_arrays:1)    subject: [["Alpha"], ["Beta"] , ["Gamma"]]';
+{
+    note("nested_arrays not yet supported");
+}
+
+note
+    'marc_spec(650$a,subject.$append, split:1, nested_arrays:1)    subject: [[["Alpha"], ["Beta"] , ["Gamma"]]]';
+{
+    note("nested_arrays not yet supported");
+}
+
+note 'marc_spec(999,local)     local: "XYZ"';
+{
+    my $importer = Catmandu->importer(
+        'MARC',
+        file => \$mrc,
+        type => 'XML',
+        fix  => 'marc_spec(999,local); retain_field(local)'
+    );
+    my $record = $importer->first;
+    is_deeply $record->{local}, 'XYZ', 'marc_spec(999,local)';
+}
+
+note 'marc_spec(999$a,local)    local: "XYZ"';
+{
+    my $importer = Catmandu->importer(
+        'MARC',
+        file => \$mrc,
+        type => 'XML',
+        fix  => 'marc_spec(999$a,local); retain_field(local)'
+    );
+    my $record = $importer->first;
+    is_deeply $record->{local}, 'XYZ', 'marc_spec(999$a,local)';
+}
+
+note 'marc_spec(999$a,local.$append)    local: [ "XY", "Z" ]';
+{
+    my $importer = Catmandu->importer(
+        'MARC',
+        file => \$mrc,
+        type => 'XML',
+        fix  => 'marc_spec(999$a,local.$append); retain_field(local)'
+    );
+    my $record = $importer->first;
+    is_deeply $record->{local}, [ 'XY', 'Z' ], 'marc_spec(999$a,local.$append)';
+}
+
+note 'marc_spec(999$a,local, split:1)   local: [ "X" , "Y", "Z" ]';
+{
+    my $importer = Catmandu->importer(
+        'MARC',
+        file => \$mrc,
+        type => 'XML',
+        fix  => 'marc_spec(999$a,local, split:1); retain_field(local)'
+    );
+    my $record = $importer->first;
+    is_deeply $record->{local}, [ 'X', 'Y', 'Z' ], 'marc_spec(999$a,local, split:1)';
+}
+
+note 'marc_spec(999$a,local.$append, split:1)   local: [[ "X" , "Y", "Z" ]]';
+{
+    my $importer = Catmandu->importer(
+        'MARC',
+        file => \$mrc,
+        type => 'XML',
+        fix  => 'marc_spec(999$a,local.$append, split:1); retain_field(local)'
+    );
+    my $record = $importer->first;
+    is_deeply $record->{local}, [ [ 'X', 'Y', 'Z' ] ],
+        'marc_spec(999$a,local.$append, split:1)';
+}
+
+note
+    'marc_spec(999$a,local, split:1, nested_arrays:1)  local: [ ["X" , "Y"] , ["Z"] ]';
+{
+    note("nested_arrays not yet supported");
+}
+
+note
+    'marc_map(999a,local.$append, split:1, nested_arrays:1)  local: [[ ["X" , "Y"] , ["Z"] ]]';
+{
+    note("nested_arrays not yet supported");
+}
+
+
+done_testing;

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libcatmandu-marc-perl.git



More information about the Pkg-perl-cvs-commits mailing list