View | Details | Raw Unified | Return to bug 38729
Collapse All | Expand All

(-)a/t/db_dependent/Heading.t (-2 / +78 lines)
Lines 19-29 use strict; Link Here
19
use warnings;
19
use warnings;
20
20
21
use Test::NoWarnings;
21
use Test::NoWarnings;
22
use Test::More tests => 5;
22
use Test::More tests => 6;
23
24
use open qw/ :std :utf8 /;
23
25
24
use t::lib::Mocks;
26
use t::lib::Mocks;
25
use Test::MockModule;
27
use Test::MockModule;
26
28
29
use MARC::Record;
30
use MARC::Field;
31
use utf8;
32
use C4::AuthoritiesMarc qw/ AddAuthority /;
33
27
BEGIN {
34
BEGIN {
28
    use_ok( 'C4::Heading', qw( field valid_heading_subfield ) );
35
    use_ok( 'C4::Heading', qw( field valid_heading_subfield ) );
29
}
36
}
Lines 220-222 subtest "_search tests" => sub { Link Here
220
    );
227
    );
221
228
222
};
229
};
223
- 
230
231
subtest "authorities exact match tests" => sub {
232
233
    plan tests => 3;
234
235
    t::lib::Mocks::mock_preference( 'marcflavour', 'MARC21' );
236
237
    my $schema = Koha::Database->new->schema;
238
    $schema->storage->txn_begin;
239
240
    my $authrec1 = MARC::Record->new;
241
    $authrec1->leader('     nz  a22     o  4500');
242
    $authrec1->insert_fields_ordered( MARC::Field->new( '100', '1', ' ', a => 'Rakowski, Albin', x => 'poetry' ) );
243
    my $authid1 = AddAuthority( $authrec1, undef, 'PERSO_NAME', { skip_record_index => 1 } );
244
245
    my $authrec2 = MARC::Record->new;
246
    $authrec2->leader('     nz  a22     o  4500');
247
    $authrec2->insert_fields_ordered( MARC::Field->new( '100', '1', ' ', a => 'Rąkowski, Albin', x => 'poetry' ) );
248
    my $authid2 = AddAuthority( $authrec2, undef, 'PERSO_NAME', { skip_record_index => 1 } );
249
250
    my $heading = Test::MockModule->new('C4::Heading');
251
    $heading->mock(
252
        '_search',
253
        sub {
254
            my $self = shift;
255
            return ( [ { authid => $authid1 }, { authid => $authid2 } ], 2 );
256
        }
257
    );
258
259
    my $biblio_field   = MARC::Field->new( '600', '1', '1', a => 'Rakowski, Albin', x => 'poetry' );
260
    my $biblio_heading = C4::Heading->new_from_field($biblio_field);
261
262
    t::lib::Mocks::mock_preference( 'LinkerConsiderDiacritics', '0' );
263
264
    my $authorities = $biblio_heading->authorities(1);
265
    is_deeply(
266
        $authorities, [ { authid => $authid1 }, { authid => $authid2 } ],
267
        "Authorities diacritics filter off - two authids returned for authority search 'Rakowski' from biblio 600 field 'Rakowski'"
268
    );
269
270
    t::lib::Mocks::mock_preference( 'LinkerConsiderDiacritics', '1' );
271
272
    $authorities = $biblio_heading->authorities(1);
273
    is_deeply(
274
        $authorities, [ { authid => $authid1 } ],
275
        "Authorities filter OK - remained authority 'Rakowski' for biblio 'Rakowski'"
276
    );
277
278
    my $authrec3 = MARC::Record->new;
279
    $authrec3->leader('     nz  a22     o  4500');
280
    $authrec3->insert_fields_ordered( MARC::Field->new( '100', '1', ' ', a => 'Bruckner, Karl' ) );
281
    my $authid3 = AddAuthority( $authrec3, undef, 'PERSO_NAME', { skip_record_index => 1 } );
282
283
    $heading->mock(
284
        '_search',
285
        sub {
286
            my $self = shift;
287
            return ( [ { authid => $authid3 } ], 1 );
288
        }
289
    );
290
291
    $biblio_field   = MARC::Field->new( '700', '1', ' ', a => 'Brückner, Karl' );
292
    $biblio_heading = C4::Heading->new_from_field($biblio_field);
293
294
    $authorities = $biblio_heading->authorities(1);
295
    is_deeply( $authorities, [], "Authorities filter OK - 'Brückner' not matched with 'Bruckner'" );
296
297
    $schema->storage->txn_rollback;
298
299
};

Return to bug 38729