use Modern::Perl;
-use Test::More tests => 10;
+use Test::More tests => 11;
use_ok("MARC::Field");
use_ok("MARC::Record");
$record->leader('03174nam a2200445 a 4500');
my @fields = (
MARC::Field->new(
+ '008', '120829t20132012nyu bk 001 0ceng',
+ ),
+ MARC::Field->new(
100, '1', ' ',
a => 'Knuth, Donald Ervin',
d => '1938',
subtest 'read_field' => sub {
plan tests => 2;
subtest 'read subfield' => sub {
- plan tests => 5;
+ plan tests => 6;
my $record = new_record;
$record->append_fields(
MARC::Field->new(
650, ' ', '0',
a => 'Computer algorithms.',
9 => '463',
+ ),
+ MARC::Field->new(
+ 600, ' ', '0',
+ 0 => '123456',
)
);
[],
'There is no 3 650$a'
);
+ is_deeply(
+ [
+ read_field(
+ {
+ record => $record,
+ field => '600',
+ subfield => '0',
+ field_numbers => [1]
+ }
+ )
+ ],
+ ['123456'],
+ 'first 600$0'
+ );
};
subtest 'read field' => sub {
plan tests => 4;
subtest 'update_field' => sub {
plan tests => 1;
subtest 'update subfield' => sub {
- plan tests => 5;
+ plan tests => 6;
my $record = new_record;
update_field(
952, ' ', ' ',
p => '3010023917',
y => 'BK',
+ 0 => '123456',
),
);
update_field(
[ '3010023917', '3010023918' ],
'update all subfields 952$p with the different values'
);
+
+ update_field(
+ {
+ record => $record,
+ field => '952',
+ subfield => '0',
+ values => [ '654321' ]
+ }
+ );
+ my @fields_9520 =
+ read_field( { record => $record, field => '952', subfield => '0' } );
+ is_deeply(
+ \@fields_9520,
+ [ '654321', '654321' ],
+ 'update all subfields 952$0 with the same value'
+ );
+
};
};
subtest 'delete_field' => sub {
plan tests => 2;
subtest 'delete subfield' => sub {
- plan tests => 2;
+ plan tests => 3;
my $record = new_record;
$record->append_fields(
MARC::Field->new(
@fields_952p =
read_field( { record => $record, field => '952', subfield => 'p' } );
is_deeply( \@fields_952p, [], 'Delete all 952$p' );
+
+ $record = new_record;
+ $record->append_fields(
+ MARC::Field->new(
+ 600, ' ', ' ',
+ a => 'Murakami, Haruki',
+ 0 => 'https://id.loc.gov/authorities/names/n81152393.html',
+ ),
+ );
+ delete_field( { record => $record, field => '600', subfield => '0' } );
+ my @fields_600 = read_field( { record => $record, field => '600' } );
+ is_deeply( \@fields_600, ['Murakami, Haruki'], 'Delete all 600$0, only subfield 0 deleted' );
};
subtest 'delete field' => sub {
is_deeply( \@fields_952, [], 'Delete all 952, 2 deleted' );
};
};
+
+subtest 'field_equals' => sub {
+ plan tests => 2;
+ my $record = new_record;
+ subtest 'standard MARC fields' => sub {
+ plan tests => 2;
+ my $match = Koha::SimpleMARC::field_equals({
+ record => $record,
+ value => 'Donald',
+ field => '100',
+ subfield => 'a',
+ });
+ is_deeply( $match, [], '100$a not equal to "Donald"' );
+
+ $match = Koha::SimpleMARC::field_equals({
+ record => $record,
+ value => 'Donald',
+ field => '100',
+ subfield => 'a',
+ is_regex => 1,
+ });
+ is_deeply( $match, [1], 'first 100$a matches "Donald"');
+ };
+
+ subtest 'control fields' => sub {
+ plan tests => 2;
+ my $match = Koha::SimpleMARC::field_equals({
+ record => $record,
+ value => 'eng',
+ field => '008',
+ subfield => '',
+ });
+ is_deeply( $match, [], '008 control field not equal to "eng"' );
+
+ $match = Koha::SimpleMARC::field_equals({
+ record => $record,
+ value => 'eng',
+ field => '008',
+ subfield => '',
+ is_regex => 1,
+ });
+ is_deeply( $match, [1], 'first 008 control field matches "eng"' );
+ };
+};