X-Git-Url: http://git.equinoxoli.org/?p=migration-tools.git;a=blobdiff_plain;f=Equinox-Migration%2Ft%2F03-MapDrivenMARCXMLProc.t;h=bf4bb2ce0b5a54f7472d112ac993d0a6a2ba0dd4;hp=6e19df4a34fefea37a3b959337466fcec7a0de5c;hb=49c84ca86a91a97007c975eff40d50890cc46fbb;hpb=d3e4822b8c66bcb7b72a728f857fb46edcc4635b diff --git a/Equinox-Migration/t/03-MapDrivenMARCXMLProc.t b/Equinox-Migration/t/03-MapDrivenMARCXMLProc.t index 6e19df4..bf4bb2c 100644 --- a/Equinox-Migration/t/03-MapDrivenMARCXMLProc.t +++ b/Equinox-Migration/t/03-MapDrivenMARCXMLProc.t @@ -26,7 +26,7 @@ is(ref $mp, "Equinox::Migration::MapDrivenMARCXMLProc", "self is self"); # # with map-00, only the 999$a should be captured # 903$a will *always* be captured, of course -my $rec = $mp->parse_record; +my $rec = shift @{ $mp->{data}{recs} }; is (defined $rec, 1); is ($rec->{egid}, 9000000, '903 captured'); is ($rec->{tags}[0]{tag}, 999, 'first (only) tag should be 999'); @@ -35,78 +35,75 @@ is ($rec->{tags}[0]{uni}{b}, undef, 'only one uni subfield defined'); is ($rec->{tags}[0]{multi}, undef, 'no multi subfields were defined'); is ($rec->{tags}[1], undef, 'Only one tag in map'); # let's go ahead and look at the rest of the file -$rec = $mp->parse_record; +$rec = shift @{ $mp->{data}{recs} }; is ($rec->{egid}, 9000001, '903 #2'); is ($rec->{tags}[0]{tag}, 999, 'tag id 2'); is ($rec->{tags}[0]{uni}{a}, "MYS 2", 'subfield value 2'); -$rec = $mp->parse_record; +$rec = shift @{ $mp->{data}{recs} }; is ($rec->{egid}, 9000002, '903 #3'); is ($rec->{tags}[0]{tag}, 999, 'tag id 3'); is ($rec->{tags}[0]{uni}{a}, "FOO BAR", 'subfield value 3'); -$rec = $mp->parse_record; +$rec = shift @{ $mp->{data}{recs} }; is ($rec->{egid}, 9000003, '903 #4'); 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'); +$rec = shift @{ $mp->{data}{recs} }; +is ($rec, undef, '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' ); -$rec = $mp->parse_record; +$rec = shift @{ $mp->{data}{recs} }; 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; +$rec = shift @{ $mp->{data}{recs} }; is ($rec->{tags}[0]{uni}{a}, "MYS 2", '999$a'); is ($rec->{tags}[0]{uni}{q}, "TEST", '999$q does exist here'); # 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', +eval { $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'); + }; +$@ =~ /^(Multiple occurances of a non-multi field: 999x at rec 4)/; +is ($1, "Multiple occurances of a non-multi field: 999x at rec 4", + '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'); +eval { $mp = Equinox::Migration::MapDrivenMARCXMLProc->new( marcfile => 't/corpus/mdmp-0.txt', + mapfile => 't/corpus/mdmpmap-03.txt') }; +$@ =~ /^(.+)\n/; +is ($1, "Required mapping 999s not found in rec 1", '999$s removed from this record'); # map-04 has fields in 999 and 250, and multi data $mp = Equinox::Migration::MapDrivenMARCXMLProc->new( marcfile => 't/corpus/mdmp-0.txt', mapfile => 't/corpus/mdmpmap-04.txt'); -$rec = $mp->parse_record; +$rec = shift @{ $mp->{data}{recs} }; +is (scalar @{ $rec->{tags} }, 2, "2 tags captured"); is ($rec->{tags}[0]{tag}, 250, 'should be 250'); is ($rec->{tags}[0]{uni}{a}, "1st ed.", '999$a'); is ($rec->{tags}[1]{tag}, 999, 'should be 999'); is ($rec->{tags}[1]{uni}{a}, "MYS DEM", '999$a'); -is_deeply ($rec->{tags}[1]{multi}{'999x'}, ['MYSTERY'], '999$x - multi'); +is_deeply ($rec->{tags}[1]{multi}{'x'}, ['MYSTERY'], '999$x - multi'); is_deeply ($rec->{tmap}{250}, [0], 'tag map test 1a'); is_deeply ($rec->{tmap}{999}, [1], 'tag map test 1b'); -$rec = $mp->parse_record; -$rec = $mp->parse_record; -$rec = $mp->parse_record; +$rec = shift @{ $mp->{data}{recs} }; +$rec = shift @{ $mp->{data}{recs} }; +$rec = shift @{ $mp->{data}{recs} }; is ($rec->{tags}[0]{tag}, 999, '250 doesnt exist in this record'); is ($rec->{tags}[0]{uni}{a}, "FIC DEV", 'subfield value 4'); -is_deeply ($rec->{tags}[0]{multi}{'999x'}, ['FICTION','FICTION2','FICTION3','FICTION4'], +is_deeply ($rec->{tags}[0]{multi}{'x'}, ['FICTION','FICTION2','FICTION3','FICTION4'], '999$x - multi'); -is ($rec->{tmap}{250}, undef, 'tag map test 2a'); +is_deeply ($rec->{tmap}{250}, [1], 'tag map test 2a'); is_deeply ($rec->{tmap}{999}, [0], 'tag map test 2b'); # map-05 is map-04 with a "no digits" filter on 999$x $mp = Equinox::Migration::MapDrivenMARCXMLProc->new( marcfile => 't/corpus/mdmp-0.txt', mapfile => 't/corpus/mdmpmap-05.txt'); -is_deeply ($mp->{map}->filters('multi_field'), ['\d']); -$rec = $mp->parse_record; -$rec = $mp->parse_record; -$rec = $mp->parse_record; -$rec = $mp->parse_record; -is_deeply ($rec->{tags}[0]{multi}{'999x'}, ['FICTION'], '999$x - multi no digits'); +$rec = shift @{ $mp->{data}{recs} }; +$rec = shift @{ $mp->{data}{recs} }; +$rec = shift @{ $mp->{data}{recs} }; +$rec = shift @{ $mp->{data}{recs} }; +is_deeply ($rec->{tags}[0]{multi}{'x'}, ['FICTION'], '999$x - multi no digits');