Martin Renvoize
faf33a27ab
Our coding guidelines now forbit indirect object notation calling. Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
91 lines
2.8 KiB
Perl
Executable file
91 lines
2.8 KiB
Perl
Executable file
#!/usr/bin/perl
|
|
#
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
use Test::MockModule;
|
|
use Test::More tests => 2;
|
|
use MARC::Field;
|
|
use MARC::Record;
|
|
|
|
use t::lib::Mocks;
|
|
use t::lib::TestBuilder;
|
|
|
|
BEGIN {
|
|
use_ok('C4::AuthoritiesMarc::MARC21');
|
|
}
|
|
|
|
my $schema = Koha::Database->new->schema;
|
|
$schema->storage->txn_begin;
|
|
my $dbh = C4::Context->dbh;
|
|
my $builder = t::lib::TestBuilder->new;
|
|
|
|
t::lib::Mocks::mock_preference('marcflavour', 'MARC21');
|
|
|
|
subtest 'CompareFieldWithAuthority tests' => sub {
|
|
plan tests => 3;
|
|
|
|
# We are now going to be testing the authorities hierarchy code, and
|
|
# therefore need to pretend that we have consistent data in our database
|
|
my $module = Test::MockModule->new('C4::AuthoritiesMarc');
|
|
$module->mock('GetHeaderAuthority', sub {
|
|
return {'authtrees' => ''};
|
|
});
|
|
$module->mock('AddAuthorityTrees', sub {
|
|
return;
|
|
});
|
|
$module->mock('GetAuthority', sub {
|
|
my ($authid) = @_;
|
|
my $record = MARC::Record->new();
|
|
if ($authid eq '1') {
|
|
$record->add_fields(
|
|
[ '001', '1' ],
|
|
[ '151', ' ', ' ', a => 'United States' ]
|
|
);
|
|
} elsif ($authid eq '2') {
|
|
$record->add_fields(
|
|
[ '001', '2' ],
|
|
[ '151', ' ', ' ', a => 'New York (State)' ],
|
|
[ '551', ' ', ' ', a => 'United States', w => 'g', 9 => '1' ]
|
|
);
|
|
} elsif ($authid eq '3') {
|
|
$record->add_fields(
|
|
[ '001', '3' ],
|
|
[ '151', ' ', ' ', a => 'New York (City)' ],
|
|
[ '551', ' ', ' ', a => 'New York (State)', w => 'g', 9 => '2' ]
|
|
);
|
|
} elsif ($authid eq '4') {
|
|
$record->add_fields(
|
|
[ '001', '4' ],
|
|
[ '151', ' ', ' ', a => 'New York (City)' ],
|
|
[ '551', ' ', ' ', a => 'New York (State)', w => 'g' ]
|
|
);
|
|
} elsif ($authid eq '5') {
|
|
$record->add_fields(
|
|
[ '001', '5' ],
|
|
[ '100', ' ', ' ', a => 'Lastname, Firstname', b => 'b', c => 'c', i => 'i' ]
|
|
);
|
|
} else {
|
|
undef $record;
|
|
}
|
|
return $record;
|
|
});
|
|
|
|
$dbh->do('DELETE FROM auth_types');
|
|
$builder->build({ source => 'AuthType', value => { authtypecode => 'PERSO_NAME' }});
|
|
|
|
my $field = MARC::Field->new('100', 0, 0, a => 'Lastname, Firstname', b => 'b', c => 'c');
|
|
|
|
ok(C4::AuthoritiesMarc::CompareFieldWithAuthority({'field' => $field, 'authid' => 5}), 'Authority matches');
|
|
|
|
$field->add_subfields(i => 'X');
|
|
|
|
ok(C4::AuthoritiesMarc::CompareFieldWithAuthority({'field' => $field, 'authid' => 5}), 'Compare ignores unlisted subfields');
|
|
|
|
$field->add_subfields(d => 'd');
|
|
|
|
ok(!C4::AuthoritiesMarc::CompareFieldWithAuthority({'field' => $field, 'authid' => 5}), 'Authority does not match');
|
|
};
|
|
|
|
$schema->storage->txn_rollback;
|