|
Lines 27-33
require C4::Context;
Link Here
|
| 27 |
use open ':std', ':encoding(utf8)'; |
27 |
use open ':std', ':encoding(utf8)'; |
| 28 |
|
28 |
|
| 29 |
use Test::NoWarnings; |
29 |
use Test::NoWarnings; |
| 30 |
use Test::More tests => 4; |
30 |
use Test::More tests => 5; |
| 31 |
use Test::MockModule; |
31 |
use Test::MockModule; |
| 32 |
use Test::Warn; |
32 |
use Test::Warn; |
| 33 |
use t::lib::Mocks; |
33 |
use t::lib::Mocks; |
|
Lines 235-240
sub mock_GetMarcSubfieldStructure {
Link Here
|
| 235 |
} |
235 |
} |
| 236 |
} |
236 |
} |
| 237 |
|
237 |
|
|
|
238 |
subtest 'searchResults branch-specific counts for Bug 37883' => sub { |
| 239 |
plan tests => 8; |
| 240 |
|
| 241 |
use C4::Search qw( searchResults ); |
| 242 |
|
| 243 |
my $record = MARC::Record->new(); |
| 244 |
$record->add_fields( |
| 245 |
[ '001', '123' ], |
| 246 |
[ '245', ' ', ' ', a => 'Test record for branch counting' ], |
| 247 |
[ '999', ' ', ' ', c => '123', d => '123' ], |
| 248 |
|
| 249 |
# Available item from CPL |
| 250 |
[ |
| 251 |
'952', ' ', ' ', |
| 252 |
a => 'CPL', # homebranch |
| 253 |
b => 'CPL', # holdingbranch |
| 254 |
p => 'TEST001', # barcode |
| 255 |
y => 'BK', # itemtype |
| 256 |
'9' => '1001', # itemnumber |
| 257 |
'0' => '0', # withdrawn |
| 258 |
'1' => '0', # itemlost |
| 259 |
'4' => '0', # damaged |
| 260 |
'7' => '0', # notforloan |
| 261 |
q => '', # onloan |
| 262 |
], |
| 263 |
|
| 264 |
# Withdrawn item from CPL |
| 265 |
[ |
| 266 |
'952', ' ', ' ', |
| 267 |
a => 'CPL', # homebranch |
| 268 |
b => 'CPL', # holdingbranch |
| 269 |
p => 'TEST002', # barcode |
| 270 |
y => 'BK', # itemtype |
| 271 |
'9' => '1002', # itemnumber |
| 272 |
'0' => '1', # withdrawn = yes |
| 273 |
'1' => '0', # itemlost |
| 274 |
'4' => '0', # damaged |
| 275 |
'7' => '0', # notforloan |
| 276 |
q => '', # onloan |
| 277 |
], |
| 278 |
|
| 279 |
# Available item from MPL |
| 280 |
[ |
| 281 |
'952', ' ', ' ', |
| 282 |
a => 'MPL', # homebranch |
| 283 |
b => 'MPL', # holdingbranch |
| 284 |
p => 'TEST003', # barcode |
| 285 |
y => 'BK', # itemtype |
| 286 |
'9' => '1003', # itemnumber |
| 287 |
'0' => '0', # withdrawn |
| 288 |
'1' => '0', # itemlost |
| 289 |
'4' => '0', # damaged |
| 290 |
'7' => '0', # notforloan |
| 291 |
q => '', # onloan |
| 292 |
], |
| 293 |
); |
| 294 |
|
| 295 |
# Mock userenv for CPL branch |
| 296 |
my $context_mock = Test::MockModule->new('C4::Context'); |
| 297 |
$context_mock->mock( |
| 298 |
'userenv', |
| 299 |
sub { |
| 300 |
return { |
| 301 |
branchcode => 'CPL', |
| 302 |
branch => 'CPL', |
| 303 |
number => 123, |
| 304 |
}; |
| 305 |
} |
| 306 |
); |
| 307 |
|
| 308 |
my @results = searchResults( |
| 309 |
{ interface => 'intranet' }, |
| 310 |
'test query', |
| 311 |
1, # total hits |
| 312 |
10, # results per page |
| 313 |
0, # offset |
| 314 |
0, # scan |
| 315 |
[ $record->as_xml() ] |
| 316 |
); |
| 317 |
|
| 318 |
# Test that new branch count fields exist in search results |
| 319 |
ok( defined $results[0]->{branchavailablecount}, 'branchavailablecount exists' ); |
| 320 |
ok( defined $results[0]->{branchonloancount}, 'branchonloancount exists' ); |
| 321 |
ok( defined $results[0]->{branchothercount}, 'branchothercount exists' ); |
| 322 |
ok( defined $results[0]->{branchtotalcount}, 'branchtotalcount exists' ); |
| 323 |
|
| 324 |
is( $results[0]->{branchavailablecount}, 1, 'Branch available count: 1 available item at CPL' ); |
| 325 |
is( $results[0]->{branchothercount}, 1, 'Branch other count: 1 withdrawn item at CPL' ); |
| 326 |
is( $results[0]->{branchtotalcount}, 2, 'Branch total count: 2 items total at CPL' ); |
| 327 |
|
| 328 |
# Test that global counts still include all items from all branches |
| 329 |
is( $results[0]->{availablecount}, 2, 'Global available count: 2 items available at all branches' ); |
| 330 |
}; |
| 331 |
|
| 238 |
sub run_marc21_search_tests { |
332 |
sub run_marc21_search_tests { |
| 239 |
|
333 |
|
| 240 |
$marcflavour = 'MARC21'; |
334 |
$marcflavour = 'MARC21'; |
| 241 |
- |
|
|