|
Lines 518-524
subtest 'get_marc_components() tests' => sub {
Link Here
|
| 518 |
my $host_biblio = Koha::Biblios->find($host_bibnum); |
518 |
my $host_biblio = Koha::Biblios->find($host_bibnum); |
| 519 |
t::lib::Mocks::mock_preference( 'SearchEngine', 'Zebra' ); |
519 |
t::lib::Mocks::mock_preference( 'SearchEngine', 'Zebra' ); |
| 520 |
my $search_mod = Test::MockModule->new( 'Koha::SearchEngine::Zebra::Search' ); |
520 |
my $search_mod = Test::MockModule->new( 'Koha::SearchEngine::Zebra::Search' ); |
| 521 |
$search_mod->mock( 'simple_search_compat', \&search_component_record2 ); |
521 |
$search_mod->mock( 'search_compat', \&search_component_record2 ); |
| 522 |
|
522 |
|
| 523 |
my $components = $host_biblio->get_marc_components; |
523 |
my $components = $host_biblio->get_marc_components; |
| 524 |
is( ref($components), 'ARRAY', 'Return type is correct' ); |
524 |
is( ref($components), 'ARRAY', 'Return type is correct' ); |
|
Lines 529-536
subtest 'get_marc_components() tests' => sub {
Link Here
|
| 529 |
'->get_marc_components returns an empty ARRAY' |
529 |
'->get_marc_components returns an empty ARRAY' |
| 530 |
); |
530 |
); |
| 531 |
|
531 |
|
| 532 |
$search_mod->unmock( 'simple_search_compat'); |
532 |
$search_mod->unmock( 'search_compat'); |
| 533 |
$search_mod->mock( 'simple_search_compat', \&search_component_record1 ); |
533 |
$search_mod->mock( 'search_compat', \&search_component_record1 ); |
| 534 |
my $component_record = component_record1()->as_xml(); |
534 |
my $component_record = component_record1()->as_xml(); |
| 535 |
|
535 |
|
| 536 |
is_deeply( |
536 |
is_deeply( |
|
Lines 538-550
subtest 'get_marc_components() tests' => sub {
Link Here
|
| 538 |
[$component_record], |
538 |
[$component_record], |
| 539 |
'->get_marc_components returns the related component part record' |
539 |
'->get_marc_components returns the related component part record' |
| 540 |
); |
540 |
); |
| 541 |
$search_mod->unmock( 'simple_search_compat'); |
541 |
$search_mod->unmock( 'search_compat'); |
| 542 |
|
542 |
|
| 543 |
$search_mod->mock( 'simple_search_compat', |
543 |
$search_mod->mock( 'search_compat', |
| 544 |
sub { Koha::Exception->throw("error searching analytics") } |
544 |
sub { Koha::Exception->throw("error searching analytics") } |
| 545 |
); |
545 |
); |
| 546 |
warning_like { $components = $host_biblio->get_marc_components } |
546 |
warning_like { $components = $host_biblio->get_marc_components } |
| 547 |
qr{Warning from simple_search_compat: .* 'error searching analytics'}; |
547 |
qr{Warning from search_compat: .* 'error searching analytics'}; |
| 548 |
|
548 |
|
| 549 |
is_deeply( |
549 |
is_deeply( |
| 550 |
$host_biblio->object_messages, |
550 |
$host_biblio->object_messages, |
|
Lines 556-590
subtest 'get_marc_components() tests' => sub {
Link Here
|
| 556 |
} |
556 |
} |
| 557 |
] |
557 |
] |
| 558 |
); |
558 |
); |
| 559 |
$search_mod->unmock( 'simple_search_compat'); |
559 |
$search_mod->unmock( 'search_compat'); |
| 560 |
|
560 |
|
| 561 |
$schema->storage->txn_rollback; |
561 |
$schema->storage->txn_rollback; |
| 562 |
}; |
562 |
}; |
| 563 |
|
563 |
|
| 564 |
subtest 'get_components_query' => sub { |
564 |
subtest 'get_components_query' => sub { |
| 565 |
plan tests => 3; |
565 |
plan tests => 6; |
| 566 |
|
566 |
|
| 567 |
my $biblio = $builder->build_sample_biblio(); |
567 |
my $biblio = $builder->build_sample_biblio(); |
| 568 |
my $biblionumber = $biblio->biblionumber; |
568 |
my $biblionumber = $biblio->biblionumber; |
| 569 |
my $record = $biblio->metadata->record; |
569 |
my $record = $biblio->metadata->record; |
| 570 |
|
570 |
|
| 571 |
t::lib::Mocks::mock_preference( 'UseControlNumber', '0' ); |
571 |
t::lib::Mocks::mock_preference( 'UseControlNumber', '0' ); |
| 572 |
is($biblio->get_components_query, "Host-item:(Some boring read)", "UseControlNumber disabled"); |
572 |
t::lib::Mocks::mock_preference( 'ComponentSortField', 'author' ); |
|
|
573 |
t::lib::Mocks::mock_preference( 'ComponentSortOrder', 'za' ); |
| 574 |
my ( $comp_q, $comp_s ) = $biblio->get_components_query; |
| 575 |
is($comp_q, "Host-item:(Some boring read)",, "UseControlNumber disabled"); |
| 576 |
is($comp_s, "author_za", "UseControlNumber disabled sort is correct"); |
| 573 |
|
577 |
|
| 574 |
t::lib::Mocks::mock_preference( 'UseControlNumber', '1' ); |
578 |
t::lib::Mocks::mock_preference( 'UseControlNumber', '1' ); |
|
|
579 |
t::lib::Mocks::mock_preference( 'ComponentSortOrder', 'az' ); |
| 575 |
my $marc_001_field = MARC::Field->new('001', $biblionumber); |
580 |
my $marc_001_field = MARC::Field->new('001', $biblionumber); |
| 576 |
$record->append_fields($marc_001_field); |
581 |
$record->append_fields($marc_001_field); |
| 577 |
C4::Biblio::ModBiblio( $record, $biblio->biblionumber ); |
582 |
C4::Biblio::ModBiblio( $record, $biblio->biblionumber ); |
| 578 |
$biblio = Koha::Biblios->find( $biblio->biblionumber); |
583 |
$biblio = Koha::Biblios->find( $biblio->biblionumber); |
| 579 |
|
584 |
|
| 580 |
is($biblio->get_components_query, "(rcn:$biblionumber AND (bib-level:a OR bib-level:b))", "UseControlNumber enabled without MarcOrgCode"); |
585 |
( $comp_q, $comp_s ) = $biblio->get_components_query; |
|
|
586 |
is($comp_q, "(rcn:$biblionumber AND (bib-level:a OR bib-level:b))", "UseControlNumber enabled without MarcOrgCode"); |
| 587 |
is($comp_s, "author_az", "UseControlNumber enabled without MarcOrgCode sort is correct"); |
| 581 |
|
588 |
|
| 582 |
my $marc_003_field = MARC::Field->new('003', 'OSt'); |
589 |
my $marc_003_field = MARC::Field->new('003', 'OSt'); |
| 583 |
$record->append_fields($marc_003_field); |
590 |
$record->append_fields($marc_003_field); |
| 584 |
C4::Biblio::ModBiblio( $record, $biblio->biblionumber ); |
591 |
C4::Biblio::ModBiblio( $record, $biblio->biblionumber ); |
| 585 |
$biblio = Koha::Biblios->find( $biblio->biblionumber); |
592 |
$biblio = Koha::Biblios->find( $biblio->biblionumber); |
| 586 |
|
593 |
|
| 587 |
is($biblio->get_components_query, "(((rcn:$biblionumber AND cni:OSt) OR rcn:\"OSt $biblionumber\") AND (bib-level:a OR bib-level:b))", "UseControlNumber enabled with MarcOrgCode"); |
594 |
t::lib::Mocks::mock_preference( 'ComponentSortField', 'title' ); |
|
|
595 |
t::lib::Mocks::mock_preference( 'ComponentSortOrder', 'asc' ); |
| 596 |
( $comp_q, $comp_s ) = $biblio->get_components_query; |
| 597 |
is($comp_q, "(((rcn:$biblionumber AND cni:OSt) OR rcn:\"OSt $biblionumber\") AND (bib-level:a OR bib-level:b))", "UseControlNumber enabled with MarcOrgCode"); |
| 598 |
is($comp_s, "title_asc", "UseControlNumber enabled with MarcOrgCode sort if correct"); |
| 588 |
}; |
599 |
}; |
| 589 |
|
600 |
|
| 590 |
subtest 'orders() and active_orders() tests' => sub { |
601 |
subtest 'orders() and active_orders() tests' => sub { |
|
Lines 1014-1025
sub component_record1 {
Link Here
|
| 1014 |
} |
1025 |
} |
| 1015 |
sub search_component_record1 { |
1026 |
sub search_component_record1 { |
| 1016 |
my @results = ( component_record1()->as_xml() ); |
1027 |
my @results = ( component_record1()->as_xml() ); |
| 1017 |
return ( undef, \@results, 1 ); |
1028 |
return ( undef, { biblioserver => { RECORDS => \@results, hits => 1 } }, 1 ); |
| 1018 |
} |
1029 |
} |
| 1019 |
|
1030 |
|
| 1020 |
sub search_component_record2 { |
1031 |
sub search_component_record2 { |
| 1021 |
my @results; |
1032 |
my @results; |
| 1022 |
return ( undef, \@results, 0 ); |
1033 |
return ( undef, { biblioserver => { RECORDS => \@results, hits => 0 } }, 0 ); |
| 1023 |
} |
1034 |
} |
| 1024 |
|
1035 |
|
| 1025 |
sub host_record { |
1036 |
sub host_record { |
| 1026 |
- |
|
|