Lines 2-8
Link Here
|
2 |
|
2 |
|
3 |
use Modern::Perl; |
3 |
use Modern::Perl; |
4 |
use Test::NoWarnings; |
4 |
use Test::NoWarnings; |
5 |
use Test::More tests => 21; |
5 |
use Test::More tests => 23; |
6 |
use MARC::Record; |
6 |
use MARC::Record; |
7 |
use MARC::Field; |
7 |
use MARC::Field; |
8 |
use DateTime; |
8 |
use DateTime; |
Lines 391-396
C4::Items::ToggleNewStatus( { rules => \@rules } );
Link Here
|
391 |
$modified_item = Koha::Items->find($itemnumber); |
391 |
$modified_item = Koha::Items->find($itemnumber); |
392 |
is( $modified_item->new_status, 'new_updated_value_biblio', q|ToggleNewStatus: conditions on biblio| ); |
392 |
is( $modified_item->new_status, 'new_updated_value_biblio', q|ToggleNewStatus: conditions on biblio| ); |
393 |
|
393 |
|
|
|
394 |
# Test for error handling in ToggleNewStatus with an on-loan item |
395 |
subtest "ToggleNewStatus onloan error handling" => sub { |
396 |
plan tests => 3; |
397 |
|
398 |
# Create a new test item |
399 |
my $test_item2 = $builder->build_object( { class => 'Koha::Items' } ); |
400 |
my $patron2 = $builder->build_object( { class => 'Koha::Patrons' } ); |
401 |
|
402 |
# Check out the item to create the condition for an error |
403 |
$test_item2->checkout( $patron2->borrowernumber ); |
404 |
ok( $test_item2->onloan, "Item is checked out" ); |
405 |
|
406 |
# Create rules to try to modify the withdrawn status |
407 |
my @withdrawal_rules = ( |
408 |
{ |
409 |
conditions => [ |
410 |
{ |
411 |
field => "items.itemnumber", |
412 |
value => $test_item2->itemnumber |
413 |
} |
414 |
], |
415 |
substitutions => [ |
416 |
{ |
417 |
field => "items.withdrawn", |
418 |
value => 1 |
419 |
} |
420 |
] |
421 |
} |
422 |
); |
423 |
|
424 |
# Run ToggleNewStatus with the rules and catch errors in the report |
425 |
my $error_report = C4::Items::ToggleNewStatus( |
426 |
{ |
427 |
rules => \@withdrawal_rules, |
428 |
report_only => 0 |
429 |
} |
430 |
); |
431 |
|
432 |
# Verify report structure |
433 |
ok( exists $error_report->{ $test_item2->itemnumber }, "Error item appears in report" ); |
434 |
|
435 |
is( $test_item2->withdrawn, 0, 'Item should not be withdrawn' ); |
436 |
|
437 |
}; |
438 |
|
439 |
subtest "ToggleNewStatus in-transit error handling" => sub { |
440 |
plan tests => 3; |
441 |
|
442 |
# Create a new test item |
443 |
my $test_item3 = $builder->build_object( { class => 'Koha::Items' } ); |
444 |
|
445 |
# Create a transfer to put item in-transit |
446 |
my $from_library = $builder->build_object( { class => 'Koha::Libraries' } ); |
447 |
my $to_library = $builder->build_object( { class => 'Koha::Libraries' } ); |
448 |
|
449 |
my $transfer = Koha::Item::Transfer->new( |
450 |
{ |
451 |
itemnumber => $test_item3->itemnumber, |
452 |
frombranch => $from_library->branchcode, |
453 |
tobranch => $to_library->branchcode, |
454 |
datesent => dt_from_string(), |
455 |
} |
456 |
)->store; |
457 |
|
458 |
# Mark transfer as in transit |
459 |
$transfer->datearrived(undef); |
460 |
$transfer->store; |
461 |
|
462 |
# Verify item is in transit |
463 |
my $item_transfer = $test_item3->get_transfer; |
464 |
ok( $item_transfer && !$item_transfer->datearrived, "Item is in transit" ); |
465 |
|
466 |
# Create rules to try to modify the withdrawn status |
467 |
my @withdrawal_rules = ( |
468 |
{ |
469 |
conditions => [ |
470 |
{ |
471 |
field => "items.itemnumber", |
472 |
value => $test_item3->itemnumber |
473 |
} |
474 |
], |
475 |
substitutions => [ |
476 |
{ |
477 |
field => "items.withdrawn", |
478 |
value => 1 |
479 |
} |
480 |
] |
481 |
} |
482 |
); |
483 |
|
484 |
# Run ToggleNewStatus with the rules and catch errors in the report |
485 |
my $error_report = C4::Items::ToggleNewStatus( |
486 |
{ |
487 |
rules => \@withdrawal_rules, |
488 |
report_only => 0 |
489 |
} |
490 |
); |
491 |
|
492 |
# Verify report structure |
493 |
ok( exists $error_report->{ $test_item3->itemnumber }, "Error item appears in report" ); |
494 |
|
495 |
is( $test_item3->withdrawn, 0, 'Item should not be withdrawn' ); |
496 |
}; |
497 |
|
394 |
# Run twice |
498 |
# Run twice |
395 |
t::lib::Mocks::mock_preference( 'CataloguingLog', 1 ); |
499 |
t::lib::Mocks::mock_preference( 'CataloguingLog', 1 ); |
396 |
my $actions_nb = $schema->resultset('ActionLog')->count(); |
500 |
my $actions_nb = $schema->resultset('ActionLog')->count(); |
397 |
- |
|
|