|
Lines 4-10
Link Here
|
| 4 |
|
4 |
|
| 5 |
use Modern::Perl; |
5 |
use Modern::Perl; |
| 6 |
|
6 |
|
| 7 |
use Test::More tests => 12; |
7 |
use Test::More tests => 13; |
| 8 |
|
8 |
|
| 9 |
use Getopt::Long; |
9 |
use Getopt::Long; |
| 10 |
use MARC::Record; |
10 |
use MARC::Record; |
|
Lines 147-153
subtest 'Test merge A1 to modified A1, test strict mode' => sub {
Link Here
|
| 147 |
$MARC1->append_fields( MARC::Field->new( '609', '', '', 'a' => 'Bruce Lee', 'b' => 'Should be cleared too', '9' => $authid1 )); |
147 |
$MARC1->append_fields( MARC::Field->new( '609', '', '', 'a' => 'Bruce Lee', 'b' => 'Should be cleared too', '9' => $authid1 )); |
| 148 |
$MARC1->append_fields( MARC::Field->new( '609', '', '', 'a' => 'Bruce Lee', 'c' => 'This is a duplicate to be removed in strict mode', '9' => $authid1 )); |
148 |
$MARC1->append_fields( MARC::Field->new( '609', '', '', 'a' => 'Bruce Lee', 'c' => 'This is a duplicate to be removed in strict mode', '9' => $authid1 )); |
| 149 |
my $MARC2 = MARC::Record->new; |
149 |
my $MARC2 = MARC::Record->new; |
| 150 |
$MARC2->append_fields( MARC::Field->new( '109', '', '', 'a' => 'Batman', '9' => $authid1 )); |
150 |
$MARC2->append_fields( MARC::Field->new( '109', '', '', 'a' => 'BATMAN', '9' => $authid1 )); |
| 151 |
$MARC2->append_fields( MARC::Field->new( '245', '', '', 'a' => 'All the way to heaven' )); |
151 |
$MARC2->append_fields( MARC::Field->new( '245', '', '', 'a' => 'All the way to heaven' )); |
| 152 |
my ( $biblionumber1 ) = AddBiblio( $MARC1, ''); |
152 |
my ( $biblionumber1 ) = AddBiblio( $MARC1, ''); |
| 153 |
my ( $biblionumber2 ) = AddBiblio( $MARC2, ''); |
153 |
my ( $biblionumber2 ) = AddBiblio( $MARC2, ''); |
|
Lines 572-577
subtest "Test bibs not auto linked when merging" => sub {
Link Here
|
| 572 |
|
572 |
|
| 573 |
}; |
573 |
}; |
| 574 |
|
574 |
|
|
|
575 |
|
| 576 |
subtest 'ModBiblio calls from merge' => sub { |
| 577 |
|
| 578 |
plan tests => 4; |
| 579 |
|
| 580 |
$schema->storage->txn_begin; |
| 581 |
|
| 582 |
t::lib::Mocks::mock_preference( 'marcflavour', 'MARC21' ); |
| 583 |
t::lib::Mocks::mock_preference( 'AuthorityControlledIndicators', '' ); |
| 584 |
t::lib::Mocks::mock_preference( 'IncludeSeeFromInSearches', '1' ); |
| 585 |
|
| 586 |
my $auth_record = MARC::Record->new(); |
| 587 |
$auth_record->insert_fields_ordered( MARC::Field->new( '109', '1', ' ', a => 'Brown,', 'c' => 'Father' ) ); |
| 588 |
my $authid = AddAuthority( $auth_record, undef, $authtype1, { skip_record_index => 1 } ); |
| 589 |
|
| 590 |
my $auth_record_modified = $auth_record->clone; |
| 591 |
$auth_record_modified->field('109')->update( c => 'Father (Fictitious character)' ); |
| 592 |
|
| 593 |
my $biblio_record = MARC::Record->new(); |
| 594 |
$biblio_record->insert_fields_ordered( |
| 595 |
MARC::Field->new( '609', '1', '1', a => 'Brown,', 'c' => 'Father', 9 => $authid ) ); |
| 596 |
my $biblionumber = AddBiblio( $biblio_record, '', { skip_record_index => 1 } ); |
| 597 |
|
| 598 |
my $biblio_module = Test::MockModule->new('C4::AuthoritiesMarc'); |
| 599 |
$biblio_module->mock( |
| 600 |
'ModBiblio', |
| 601 |
sub { warn 'ModBiblio called'; } |
| 602 |
); |
| 603 |
|
| 604 |
warnings_are { |
| 605 |
merge( |
| 606 |
{ |
| 607 |
mergefrom => $authid, MARCfrom => $auth_record, mergeto => $authid, MARCto => $auth_record_modified, |
| 608 |
biblionumbers => [$biblionumber], |
| 609 |
} |
| 610 |
); |
| 611 |
} |
| 612 |
["ModBiblio called"], "real modification of bibliographic record, ModBiblio called"; |
| 613 |
|
| 614 |
t::lib::Mocks::mock_preference( 'SearchEngine', 'Elasticsearch' ); |
| 615 |
my $mock_index = Test::MockModule->new('Koha::SearchEngine::Elasticsearch::Indexer'); |
| 616 |
$mock_index->mock( 'index_records', sub { warn 'index_records called'; } ); |
| 617 |
|
| 618 |
warnings_are { |
| 619 |
merge( |
| 620 |
{ |
| 621 |
mergefrom => $authid, MARCfrom => $auth_record, mergeto => $authid, MARCto => $auth_record, |
| 622 |
biblionumbers => [$biblionumber], |
| 623 |
} |
| 624 |
); |
| 625 |
} |
| 626 |
["index_records called"], "no real modification of bibliographic record, index_records called"; |
| 627 |
|
| 628 |
t::lib::Mocks::mock_preference( 'IncludeSeeFromInSearches', '0' ); |
| 629 |
t::lib::Mocks::mock_preference( 'IncludeSeeAlsoFromInSearches', '0' ); |
| 630 |
warnings_are { |
| 631 |
merge( |
| 632 |
{ |
| 633 |
mergefrom => $authid, MARCfrom => $auth_record, mergeto => $authid, MARCto => $auth_record, |
| 634 |
biblionumbers => [$biblionumber], |
| 635 |
} |
| 636 |
); |
| 637 |
} |
| 638 |
[], "no real modification of bibliographic record, index_records not called"; |
| 639 |
|
| 640 |
my $auth_record2 = MARC::Record->new(); |
| 641 |
$auth_record2->insert_fields_ordered( MARC::Field->new( '109', '1', ' ', a => 'Chesterton, G.K.' ) ); |
| 642 |
my $authid2 = AddAuthority( $auth_record2, undef, $authtype1, { skip_record_index => 1 } ); |
| 643 |
|
| 644 |
my $biblio_record2 = MARC::Record->new(); |
| 645 |
$biblio_record2->insert_fields_ordered( |
| 646 |
MARC::Field->new( '109', '1', ' ', a => 'Chesterton, G.K.', 9 => $authid2 ) ); |
| 647 |
my $biblionumber2 = AddBiblio( $biblio_record2, '', { skip_record_index => 1 } ); |
| 648 |
|
| 649 |
my $num_biblio_edited = merge( |
| 650 |
{ |
| 651 |
mergefrom => $authid, MARCfrom => $auth_record, mergeto => $authid2, MARCto => $auth_record2, |
| 652 |
biblionumbers => [ $biblionumber, $biblionumber2 ], |
| 653 |
} |
| 654 |
); |
| 655 |
is( $num_biblio_edited, 1, 'Only one bibliographic record updated while merging two authorities' ); |
| 656 |
|
| 657 |
$schema->storage->txn_rollback; |
| 658 |
|
| 659 |
}; |
| 660 |
|
| 575 |
sub set_mocks { |
661 |
sub set_mocks { |
| 576 |
# After we removed the Zebra code from merge, we only need to mock |
662 |
# After we removed the Zebra code from merge, we only need to mock |
| 577 |
# get_usage_count and linked_biblionumbers here. |
663 |
# get_usage_count and linked_biblionumbers here. |
| 578 |
- |
|
|