| 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 | }; |