X-Git-Url: http://git.equinoxoli.org/?p=migration-tools.git;a=blobdiff_plain;f=Equinox-Migration%2Ft%2F03-MapDrivenMARCXMLProc.t;h=eeffcce531ce2f8d315a600c21cfa3114eee86f0;hp=5e1f21d11f2ddf564c11e054602cbf818b68b667;hb=d5dd953f52123bc3c96bd48371f1fae219e8a2d4;hpb=b5e5f86014c74fc495a22ad386d7d9b845b0d302 diff --git a/Equinox-Migration/t/03-MapDrivenMARCXMLProc.t b/Equinox-Migration/t/03-MapDrivenMARCXMLProc.t index 5e1f21d..eeffcce 100644 --- a/Equinox-Migration/t/03-MapDrivenMARCXMLProc.t +++ b/Equinox-Migration/t/03-MapDrivenMARCXMLProc.t @@ -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'); +