Bug 25189: Unit tests

Adds new test for not adding authority if some already exist

Also replaces use of 'SearchAuthorities' as it is Zebra specific

Signed-off-by: Andrew Fuerste-Henry <andrew@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
This commit is contained in:
Nick Clemens 2020-04-28 13:29:52 +00:00 committed by Jonathan Druart
parent 9e923e57ed
commit 258d0b0ecd

View file

@ -17,7 +17,7 @@
use Modern::Perl;
use Test::More tests => 13;
use Test::More tests => 14;
use Test::MockModule;
use List::MoreUtils qw( uniq );
use MARC::Record;
@ -29,6 +29,8 @@ use Koha::Database;
use Koha::Caches;
use Koha::MarcSubfieldStructures;
use C4::Linker::Default;
BEGIN {
use_ok('C4::Biblio');
}
@ -124,6 +126,32 @@ subtest "GetMarcFromKohaField" => sub {
is( $retval[0].$retval[1], '399a', 'Including 399a' );
};
subtest "Authority creation with default linker" => sub {
plan tests => 2;
# Automatic authority creation
t::lib::Mocks::mock_preference('LinkerModule', 'Default');
t::lib::Mocks::mock_preference('BiblioAddsAuthorities', 1);
t::lib::Mocks::mock_preference('AutoCreateAuthorities', 1);
t::lib::Mocks::mock_preference('marcflavour', 'MARC21');
my $linker = C4::Linker::Default->new({});
my $authorities_mod = Test::MockModule->new( 'C4::Heading' );
$authorities_mod->mock(
'authorities',
sub {
my $results = [{ authid => 'original' },{ authid => 'duplicate' }];
return $results;
}
);
my $marc_record = MARC::Record->new();
my $field = MARC::Field->new(655, ' ', ' ','a' => 'Magical realism');
$marc_record->append_fields( $field );
my ($num_changed,$results) = LinkBibHeadingsToAuthorities($linker, $marc_record, "",undef);
is( $num_changed, 0, "We shouldn't link or create a new record");
ok( !defined $results->{added}, "If we have multiple matches, we shouldn't create a new record");
};
# Mocking variables
my $biblio_module = new Test::MockModule('C4::Biblio');
$biblio_module->mock(
@ -384,12 +412,12 @@ sub run_tests {
# Automatic authority creation
t::lib::Mocks::mock_preference('BiblioAddsAuthorities', 1);
t::lib::Mocks::mock_preference('AutoCreateAuthorities', 1);
my $authorities_mod = Test::MockModule->new( 'C4::AuthoritiesMarc' );
my $authorities_mod = Test::MockModule->new( 'C4::Heading' );
$authorities_mod->mock(
'SearchAuthorities',
'authorities',
sub {
my @results;
return \@results, 0;
return \@results;
}
);
$success = 0;