testing changes
authorShawn Boyette <sboyette@esilibrary.com>
Mon, 27 Apr 2009 05:06:58 +0000 (05:06 +0000)
committerShawn Boyette <sboyette@esilibrary.com>
Mon, 27 Apr 2009 05:06:58 +0000 (05:06 +0000)
Equinox-Migration/t/03-MapDrivenMARCXMLProc.t
Equinox-Migration/t/corpus/mdmp-0.txt
Equinox-Migration/t/corpus/mdmpmap-02.txt [new file with mode: 0644]
Equinox-Migration/t/corpus/mdmpmap-03.txt [new file with mode: 0644]

index 5e1f21d..eeffcce 100644 (file)
@@ -50,3 +50,45 @@ is ($rec->{tags}[0]{tag}, 999, 'tag id 4');
 is ($rec->{tags}[0]{uni}{a}, "FIC DEV", 'subfield value 4');
 $rec = $mp->parse_record;
 is ($rec, 0, 'no more records');
+
+# with map-01,  999$a and 999$q are captured. q only exists on the second
+# record; the others should the placeholder value of ''
+$mp = Equinox::Migration::MapDrivenMARCXMLProc->new( marcfile => 't/corpus/mdmp-0.txt',
+                                                     mapfile  => 't/corpus/mdmpmap-01.txt',
+                                                     sample   => [ 999 ]
+                                                   );
+$rec = $mp->parse_record;
+is ($rec->{tags}[0]{uni}{a}, "MYS DEM", '999$a');
+is ($rec->{tags}[0]{uni}{q}, "", '999$q doesnt exist here');
+is ($rec->{tags}[0]{uni}{j}, undef, 'we shouldnt have captured this, even if it does exist');
+$rec = $mp->parse_record;
+is ($rec->{tags}[0]{uni}{a}, "MYS 2", '999$a');
+is ($rec->{tags}[0]{uni}{q}, "TEST", '999$q does exist here');
+# process other two records and check the unmapped data stuffs
+$rec = $mp->parse_record;
+$rec = $mp->parse_record;
+my $unmapped = $mp->{data}{umap};
+is (defined $unmapped->{999}, 1);
+is (defined $unmapped->{999}{x}, 1);
+is ($unmapped->{999}{x}{value}, 'MYSTERY', 'Should be the first seen value');
+is ($unmapped->{999}{x}{count}, 7, 'One real in each record, plus 3 synthetic in last rec');
+is ($unmapped->{999}{x}{rcnt}, 4, 'Occurs in all records');
+is ($unmapped->{999}{s}{rcnt}, 3, 'Was removed from one record');
+
+# map-02 adds 999$x *not* as multi, producing a fatal error on the last record
+$mp = Equinox::Migration::MapDrivenMARCXMLProc->new( marcfile => 't/corpus/mdmp-0.txt',
+                                                     mapfile  => 't/corpus/mdmpmap-02.txt');
+$rec = $mp->parse_record;
+$rec = $mp->parse_record;
+$rec = $mp->parse_record;
+eval { $rec = $mp->parse_record };
+is ($@, "Multiple occurances of a non-multi field: 999x at rec 4\n", '999$x not declared multi, but is');
+
+# map-03 has 999$s as required, producing a fatal on record X
+$mp = Equinox::Migration::MapDrivenMARCXMLProc->new( marcfile => 't/corpus/mdmp-0.txt',
+                                                     mapfile  => 't/corpus/mdmpmap-03.txt');
+eval { $rec = $mp->parse_record };
+is ($@, "Required mapping 999s not found in rec 1\n", '999$s removed from this record');
+eval { $rec = $mp->parse_record };
+is ($@, "", '999$s exists here tho');
+
index 6b4b099..bbf31d1 100644 (file)
@@ -63,7 +63,6 @@
     <subfield code="n">8</subfield>
     <subfield code="p">$25.00</subfield>
     <subfield code="r">Y</subfield>
-    <subfield code="s">Y</subfield>
     <subfield code="t">BOOK</subfield>
     <subfield code="u">11/22/2002</subfield>
     <subfield code="x">MYSTERY</subfield>
     <subfield code="t">BOOK</subfield>
     <subfield code="u">11/22/2002</subfield>
     <subfield code="x">FICTION</subfield>
+    <subfield code="x">FICTION2</subfield>
+    <subfield code="x">FICTION3</subfield>
+    <subfield code="x">FICTION4</subfield>
     <subfield code="z">ADULT</subfield>
   </datafield>
   <datafield tag="903" ind1=" " ind2=" ">
diff --git a/Equinox-Migration/t/corpus/mdmpmap-02.txt b/Equinox-Migration/t/corpus/mdmpmap-02.txt
new file mode 100644 (file)
index 0000000..7f49973
--- /dev/null
@@ -0,0 +1,2 @@
+call_num      999 a
+unmulti_field 999 x
diff --git a/Equinox-Migration/t/corpus/mdmpmap-03.txt b/Equinox-Migration/t/corpus/mdmpmap-03.txt
new file mode 100644 (file)
index 0000000..678d1e0
--- /dev/null
@@ -0,0 +1,3 @@
+call_num    999 a
+req_field   999 s m:required
+multi_field 999 x m:multi