The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl

use strict;
use warnings;
use Test::More;
use Test::Exception;
use Catmandu::Importer::MARC;
use Catmandu::Fix;
use utf8;

my $pkg;

BEGIN {
    $pkg = 'Catmandu::Fix::Condition::marc_has';
    use_ok $pkg;
}

require_ok $pkg;

my $fixes = <<EOF;
if marc_has(245)
  add_field(test.\$append,'has 245')
end

if marc_has_many(245)
  add_field(test.\$append,'has many 245')
end

if marc_has_many(CAT)
  add_field(test.\$append,'has many CAT')
end

if marc_has_many(920a)
  add_field(test.\$append,'has many 920a')
end

unless marc_has_many(100a)
  add_field(test.\$append,'has not more than one 100a')
end
EOF

my $record =<<'EOF';
000000002 FMT   L BK
000000002 LDR   L 00000nam^a2200301^i^4500
000000002 001   L 000000002
000000002 1001  L $$aMusterman
000000002 24510 L $$aCatmandu Test
000000002 650 0 L $$aPerl
000000002 650 0 L $$aMARC$$aMARC2
000000002 650 0 L $$a加德滿都
000000002 920 0 L $$ablue$$ared
000000002 CAT 0 L $$atest
000000002 CAT 0 L $$atest
EOF

my $fixer = Catmandu::Fix->new(fixes => [$fixes]);
my $importer = Catmandu::Importer::MARC->new( file => \$record, type => "ALEPHSEQ" );
my $records = $fixer->fix($importer)->to_array;

my $errors = $records->[0]->{test};

is_deeply $errors , [
        'has 245' ,
        'has many CAT' ,
        'has many 920a' ,
        'has not more than one 100a' ,
] , 'got the expected results';

done_testing;