Bug 25189: Unit tests
authorNick Clemens <nick@bywatersolutions.com>
Tue, 28 Apr 2020 13:29:52 +0000 (13:29 +0000)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Wed, 24 Jun 2020 12:31:37 +0000 (14:31 +0200)
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>

t/db_dependent/Biblio.t

index 1d12d29..4d3db24 100755 (executable)
@@ -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;