|
Lines 17-23
Link Here
|
| 17 |
|
17 |
|
| 18 |
use Modern::Perl; |
18 |
use Modern::Perl; |
| 19 |
|
19 |
|
| 20 |
use Test::More tests => 31; |
20 |
use Test::More tests => 32; |
| 21 |
use Test::Exception; |
21 |
use Test::Exception; |
| 22 |
use Test::Warn; |
22 |
use Test::Warn; |
| 23 |
|
23 |
|
|
Lines 25-30
use C4::Biblio qw( AddBiblio ModBiblio ModBiblioMarc );
Link Here
|
| 25 |
use C4::Circulation qw( AddIssue AddReturn ); |
25 |
use C4::Circulation qw( AddIssue AddReturn ); |
| 26 |
|
26 |
|
| 27 |
use Koha::Database; |
27 |
use Koha::Database; |
|
|
28 |
use Koha::DateUtils qw( dt_from_string ); |
| 28 |
use Koha::Cache::Memory::Lite; |
29 |
use Koha::Cache::Memory::Lite; |
| 29 |
use Koha::Caches; |
30 |
use Koha::Caches; |
| 30 |
use Koha::Acquisition::Orders; |
31 |
use Koha::Acquisition::Orders; |
|
Lines 1299-1301
sub host_record {
Link Here
|
| 1299 |
); |
1300 |
); |
| 1300 |
return $marc; |
1301 |
return $marc; |
| 1301 |
} |
1302 |
} |
| 1302 |
- |
1303 |
|
|
|
1304 |
subtest 'check_booking tests' => sub { |
| 1305 |
plan tests => 4; |
| 1306 |
|
| 1307 |
$schema->storage->txn_begin; |
| 1308 |
|
| 1309 |
my $biblio = $builder->build_sample_biblio(); |
| 1310 |
my @items; |
| 1311 |
for ( 0 .. 2 ) { |
| 1312 |
my $item = $builder->build_sample_item( { biblionumber => $biblio->biblionumber, bookable => 1 } ); |
| 1313 |
push @items, $item; |
| 1314 |
} |
| 1315 |
|
| 1316 |
my $can_book = $biblio->check_booking( |
| 1317 |
{ |
| 1318 |
start_date => dt_from_string(), |
| 1319 |
end_date => dt_from_string()->add( days => 7 ) |
| 1320 |
} |
| 1321 |
); |
| 1322 |
|
| 1323 |
is( |
| 1324 |
$can_book, 1, |
| 1325 |
"True returned from Koha::Biblio->check_booking if there are no bookings" |
| 1326 |
); |
| 1327 |
|
| 1328 |
my $start_1 = dt_from_string()->subtract( days => 7 ); |
| 1329 |
my $end_1 = dt_from_string()->subtract( days => 1 ); |
| 1330 |
my $start_2 = dt_from_string(); |
| 1331 |
my $end_2 = dt_from_string()->add( days => 7 ); |
| 1332 |
|
| 1333 |
# Past bookings |
| 1334 |
my @bookings; |
| 1335 |
for my $item (@items) { |
| 1336 |
|
| 1337 |
my $booking = $builder->build_object( |
| 1338 |
{ |
| 1339 |
class => 'Koha::Bookings', |
| 1340 |
value => { |
| 1341 |
biblio_id => $biblio->biblionumber, |
| 1342 |
item_id => $item->itemnumber, |
| 1343 |
start_date => $start_1, |
| 1344 |
end_date => $end_1 |
| 1345 |
} |
| 1346 |
} |
| 1347 |
); |
| 1348 |
push @bookings, $booking; |
| 1349 |
} |
| 1350 |
|
| 1351 |
$can_book = $biblio->check_booking( |
| 1352 |
{ |
| 1353 |
start_date => dt_from_string(), |
| 1354 |
end_date => dt_from_string()->add( days => 7 ), |
| 1355 |
} |
| 1356 |
); |
| 1357 |
|
| 1358 |
is( |
| 1359 |
$can_book, |
| 1360 |
1, |
| 1361 |
"Koha::Biblio->check_booking returns true when we all existing bookings are in the past" |
| 1362 |
); |
| 1363 |
|
| 1364 |
# Current bookings |
| 1365 |
my @current_bookings; |
| 1366 |
for my $item (@items) { |
| 1367 |
my $booking = $builder->build_object( |
| 1368 |
{ |
| 1369 |
class => 'Koha::Bookings', |
| 1370 |
value => { |
| 1371 |
biblio_id => $biblio->biblionumber, |
| 1372 |
item_id => $item->itemnumber, |
| 1373 |
start_date => $start_2, |
| 1374 |
end_date => $end_2 |
| 1375 |
} |
| 1376 |
} |
| 1377 |
); |
| 1378 |
push @current_bookings, $booking; |
| 1379 |
} |
| 1380 |
|
| 1381 |
$can_book = $biblio->check_booking( |
| 1382 |
{ |
| 1383 |
start_date => dt_from_string(), |
| 1384 |
end_date => dt_from_string()->add( days => 7 ), |
| 1385 |
} |
| 1386 |
); |
| 1387 |
is( |
| 1388 |
$can_book, |
| 1389 |
0, |
| 1390 |
"Koha::Biblio->check_booking returns false if the booking would conflict with existing bookings" |
| 1391 |
); |
| 1392 |
|
| 1393 |
$can_book = $biblio->check_booking( |
| 1394 |
{ |
| 1395 |
start_date => dt_from_string(), |
| 1396 |
end_date => dt_from_string()->add( days => 7 ), |
| 1397 |
booking_id => $current_bookings[0]->booking_id |
| 1398 |
} |
| 1399 |
); |
| 1400 |
is( |
| 1401 |
$can_book, |
| 1402 |
1, |
| 1403 |
"Koha::Biblio->check_booking returns true if we pass the booking_id of one of the bookings that we would conflict with" |
| 1404 |
); |
| 1405 |
|
| 1406 |
$schema->storage->txn_rollback; |
| 1407 |
}; |