|
Lines 12-18
use YAML;
Link Here
|
| 12 |
use C4::Debug; |
12 |
use C4::Debug; |
| 13 |
require C4::Context; |
13 |
require C4::Context; |
| 14 |
|
14 |
|
| 15 |
use Test::More tests => 57; |
15 |
use Test::More tests => 78; |
| 16 |
use Test::MockModule; |
16 |
use Test::MockModule; |
| 17 |
use MARC::Record; |
17 |
use MARC::Record; |
| 18 |
use File::Spec; |
18 |
use File::Spec; |
|
Lines 515-518
END {
Link Here
|
| 515 |
} |
515 |
} |
| 516 |
} |
516 |
} |
| 517 |
|
517 |
|
|
|
518 |
# Testing exploding indexes |
| 519 |
my $term; |
| 520 |
my $searchmodule = new Test::MockModule('C4::Search'); |
| 521 |
$searchmodule->mock('SimpleSearch', sub { |
| 522 |
my $query = shift; |
| 523 |
|
| 524 |
is($query, "Heading,wrdl=$term", "Searching for expected term '$term' for exploding") or return '', [], 0; |
| 525 |
|
| 526 |
my $record = MARC::Record->new; |
| 527 |
if ($query =~ m/Arizona/) { |
| 528 |
$record->add_fields( |
| 529 |
[ '001', '1234' ], |
| 530 |
[ '151', ' ', ' ', a => 'Arizona' ], |
| 531 |
[ '551', ' ', ' ', a => 'United States', w => 'g' ], |
| 532 |
[ '551', ' ', ' ', a => 'Maricopa County', w => 'h' ], |
| 533 |
[ '551', ' ', ' ', a => 'Navajo County', w => 'h' ], |
| 534 |
[ '551', ' ', ' ', a => 'Pima County', w => 'h' ], |
| 535 |
[ '551', ' ', ' ', a => 'New Mexico' ], |
| 536 |
); |
| 537 |
} |
| 538 |
return '', [ $record->as_usmarc() ], 1; |
| 539 |
}); |
| 540 |
|
| 541 |
$term = 'Arizona'; |
| 542 |
( $error, $query, $simple_query, $query_cgi, |
| 543 |
$query_desc, $limit, $limit_cgi, $limit_desc, |
| 544 |
$stopwords_removed, $query_type ) = buildQuery([], [ $term ], [ 'su-br' ], [ ], [], 0, 'en'); |
| 545 |
matchesExplodedTerms("Advanced search for broader subjects", $query, 'Arizona', 'United States'); |
| 546 |
|
| 547 |
( $error, $query, $simple_query, $query_cgi, |
| 548 |
$query_desc, $limit, $limit_cgi, $limit_desc, |
| 549 |
$stopwords_removed, $query_type ) = buildQuery([], [ $term ], [ 'su-na' ], [ ], [], 0, 'en'); |
| 550 |
matchesExplodedTerms("Advanced search for narrower subjects", $query, 'Arizona', 'Maricopa County', 'Navajo County', 'Pima County'); |
| 551 |
|
| 552 |
( $error, $query, $simple_query, $query_cgi, |
| 553 |
$query_desc, $limit, $limit_cgi, $limit_desc, |
| 554 |
$stopwords_removed, $query_type ) = buildQuery([], [ $term ], [ 'su-rl' ], [ ], [], 0, 'en'); |
| 555 |
matchesExplodedTerms("Advanced search for related subjects", $query, 'Arizona', 'United States', 'Maricopa County', 'Navajo County', 'Pima County'); |
| 556 |
|
| 557 |
( $error, $query, $simple_query, $query_cgi, |
| 558 |
$query_desc, $limit, $limit_cgi, $limit_desc, |
| 559 |
$stopwords_removed, $query_type ) = buildQuery([], [ "$term", 'history' ], [ 'su-rl', 'kw' ], [ ], [], 0, 'en'); |
| 560 |
matchesExplodedTerms("Advanced search for related subjects and keyword 'history' searches related subjects", $query, 'Arizona', 'United States', 'Maricopa County', 'Navajo County', 'Pima County'); |
| 561 |
like($query, qr/history/, "Advanced search for related subjects and keyword 'history' searches for 'history'"); |
| 562 |
|
| 563 |
( $error, $query, $simple_query, $query_cgi, |
| 564 |
$query_desc, $limit, $limit_cgi, $limit_desc, |
| 565 |
$stopwords_removed, $query_type ) = buildQuery([], [ 'history', "$term" ], [ 'kw', 'su-rl' ], [ ], [], 0, 'en'); |
| 566 |
matchesExplodedTerms("Order of terms doesn't matter for advanced search", $query, 'Arizona', 'United States', 'Maricopa County', 'Navajo County', 'Pima County'); |
| 567 |
like($query, qr/history/, "Order of terms doesn't matter for advanced search"); |
| 568 |
|
| 569 |
( $error, $query, $simple_query, $query_cgi, |
| 570 |
$query_desc, $limit, $limit_cgi, $limit_desc, |
| 571 |
$stopwords_removed, $query_type ) = buildQuery([], [ "su-br:$term" ], [ ], [ ], [], 0, 'en'); |
| 572 |
matchesExplodedTerms("Simple search for broader subjects", $query, 'Arizona', 'United States'); |
| 573 |
|
| 574 |
( $error, $query, $simple_query, $query_cgi, |
| 575 |
$query_desc, $limit, $limit_cgi, $limit_desc, |
| 576 |
$stopwords_removed, $query_type ) = buildQuery([], [ "su-na:$term" ], [ ], [ ], [], 0, 'en'); |
| 577 |
matchesExplodedTerms("Simple search for narrower subjects", $query, 'Arizona', 'Maricopa County', 'Navajo County', 'Pima County'); |
| 578 |
|
| 579 |
( $error, $query, $simple_query, $query_cgi, |
| 580 |
$query_desc, $limit, $limit_cgi, $limit_desc, |
| 581 |
$stopwords_removed, $query_type ) = buildQuery([], [ "su-rl:$term" ], [ ], [ ], [], 0, 'en'); |
| 582 |
matchesExplodedTerms("Simple search for related subjects", $query, 'Arizona', 'United States', 'Maricopa County', 'Navajo County', 'Pima County'); |
| 583 |
|
| 584 |
( $error, $query, $simple_query, $query_cgi, |
| 585 |
$query_desc, $limit, $limit_cgi, $limit_desc, |
| 586 |
$stopwords_removed, $query_type ) = buildQuery([], [ "history and su-rl:$term" ], [ ], [ ], [], 0, 'en'); |
| 587 |
matchesExplodedTerms("Simple search for related subjects and keyword 'history' searches related subjects", $query, 'Arizona', 'United States', 'Maricopa County', 'Navajo County', 'Pima County'); |
| 588 |
like($query, qr/history/, "Simple search for related subjects and keyword 'history' searches for 'history'"); |
| 589 |
|
| 590 |
sub matchesExplodedTerms { |
| 591 |
my ($message, $query, @terms) = @_; |
| 592 |
my $match = "(( or )?\\((" . join ('|', map { "su=\"$_\"" } @terms) . ")\\)){" . scalar(@terms) . "}"; |
| 593 |
like($query, qr/$match/, $message); |
| 594 |
} |
| 595 |
|
| 518 |
1; |
596 |
1; |
| 519 |
- |
|
|