# This is needed otherwise ccl= and &limit won't work together, and
# this happens when selecting a subject on the opac-detail page
@limits = grep {!/^$/} @limits;
+ my $original_q = $q; # without available part
if ( @limits ) {
- $q .= ' and '.join(' and ', @limits);
+ if ( grep { /^available$/ } @limits ) {
+ $q .= q| and ( ( allrecords,AlwaysMatches:'' not onloan,AlwaysMatches:'') and (lost,st-numeric=0) )|;
+ delete $limits['available'];
+ }
+ $q .= ' and '.join(' and ', @limits) if @limits;
}
- return ( undef, $q, $q, "q=ccl=".uri_escape_utf8($q), $q, '', '', '', 'ccl' );
+ return ( undef, $q, $q, "q=ccl=".uri_escape_utf8($q), $original_q, '', '', '', 'ccl' );
}
if ( $query =~ /^cql=/ ) {
return ( undef, $', $', "q=cql=".uri_escape_utf8($'), $', '', '', '', 'cql' );
($error, $results_hashref, $facets_loop) = getRecords($query,$simple_query,[ ], [ 'biblioserver' ],20,0,undef,\%branches,\%itemtypes,$query_type,0);
is($results_hashref->{biblioserver}->{hits}, undef, "Search for 'pressed' returns no matches when stemming is off");
+ ( $error, $query, $simple_query, $query_cgi,
+ $query_desc, $limit, $limit_cgi, $limit_desc,
+ $query_type ) = buildQuery([], [ 'ccl=an:42' ], [], ['available'], [], 0, 'en');
+ is( $query, 'an:42 and ( ( allrecords,AlwaysMatches:'' not onloan,AlwaysMatches:'') and (lost,st-numeric=0) )', 'buildQuery should add the available part to the query if requested with ccl' );
+ is( $query_desc, 'an:42', 'buildQuery should remove the available part from the query' );
+
# Let's see what happens when we pass bad data into these routines.
# We have to catch warnings since we're not very good about returning errors.
}
subtest 'MARC21 + GRS-1' => sub {
- plan tests => 107;
+ plan tests => 109;
run_marc21_search_tests('grs1');
};
subtest 'MARC21 + DOM' => sub {
- plan tests => 107;
+ plan tests => 109;
run_marc21_search_tests('dom');
};