|
Lines 19-25
Link Here
|
| 19 |
|
19 |
|
| 20 |
use Modern::Perl; |
20 |
use Modern::Perl; |
| 21 |
|
21 |
|
| 22 |
use Test::More tests => 7; |
22 |
use Test::More tests => 8; |
| 23 |
|
23 |
|
| 24 |
use C4::Biblio; |
24 |
use C4::Biblio; |
| 25 |
use C4::Circulation; |
25 |
use C4::Circulation; |
|
Lines 628-630
subtest 'Tests for itemtype' => sub {
Link Here
|
| 628 |
|
628 |
|
| 629 |
$schema->storage->txn_rollback; |
629 |
$schema->storage->txn_rollback; |
| 630 |
}; |
630 |
}; |
|
|
631 |
|
| 632 |
subtest 'move_to_biblio() tests' => sub { |
| 633 |
|
| 634 |
plan tests => 16; |
| 635 |
|
| 636 |
$schema->storage->txn_begin; |
| 637 |
|
| 638 |
my $dbh = C4::Context->dbh; |
| 639 |
|
| 640 |
my $source_biblio = $builder->build_sample_biblio(); |
| 641 |
my $target_biblio = $builder->build_sample_biblio(); |
| 642 |
|
| 643 |
my $source_biblionumber = $source_biblio->biblionumber; |
| 644 |
my $target_biblionumber = $target_biblio->biblionumber; |
| 645 |
|
| 646 |
my $item1 = $builder->build_sample_item({ biblionumber => $source_biblionumber }); |
| 647 |
my $item2 = $builder->build_sample_item({ biblionumber => $source_biblionumber }); |
| 648 |
my $item3 = $builder->build_sample_item({ biblionumber => $source_biblionumber }); |
| 649 |
|
| 650 |
my $itemnumber1 = $item1->itemnumber; |
| 651 |
my $itemnumber2 = $item2->itemnumber; |
| 652 |
|
| 653 |
my $library = $builder->build_object({ class => 'Koha::Libraries' }); |
| 654 |
|
| 655 |
my $patron = $builder->build_object({ |
| 656 |
class => 'Koha::Patrons', |
| 657 |
value => { branchcode => $library->branchcode } |
| 658 |
}); |
| 659 |
my $borrowernumber = $patron->borrowernumber; |
| 660 |
|
| 661 |
my $aq_budget = $builder->build({ |
| 662 |
source => 'Aqbudget', |
| 663 |
value => { |
| 664 |
budget_notes => 'test', |
| 665 |
}, |
| 666 |
}); |
| 667 |
|
| 668 |
my $aq_order1 = $builder->build_object({ |
| 669 |
class => 'Koha::Acquisition::Orders', |
| 670 |
value => { |
| 671 |
biblionumber => $source_biblionumber, |
| 672 |
budget_id => $aq_budget->{budget_id}, |
| 673 |
}, |
| 674 |
}); |
| 675 |
my $aq_order_item1 = $builder->build({ |
| 676 |
source => 'AqordersItem', |
| 677 |
value => { |
| 678 |
ordernumber => $aq_order1->ordernumber, |
| 679 |
itemnumber => $itemnumber1, |
| 680 |
}, |
| 681 |
}); |
| 682 |
my $aq_order2 = $builder->build_object({ |
| 683 |
class => 'Koha::Acquisition::Orders', |
| 684 |
value => { |
| 685 |
biblionumber => $source_biblionumber, |
| 686 |
budget_id => $aq_budget->{budget_id}, |
| 687 |
}, |
| 688 |
}); |
| 689 |
my $aq_order_item2 = $builder->build({ |
| 690 |
source => 'AqordersItem', |
| 691 |
value => { |
| 692 |
ordernumber => $aq_order2->ordernumber, |
| 693 |
itemnumber => $itemnumber2, |
| 694 |
}, |
| 695 |
}); |
| 696 |
|
| 697 |
my $bib_level_hold = $builder->build_object({ |
| 698 |
class => 'Koha::Holds', |
| 699 |
value => { |
| 700 |
biblionumber => $source_biblionumber, |
| 701 |
}, |
| 702 |
}); |
| 703 |
my $item_level_hold1 = $builder->build_object({ |
| 704 |
class => 'Koha::Holds', |
| 705 |
value => { |
| 706 |
biblionumber => $source_biblionumber, |
| 707 |
itemnumber => $itemnumber1, |
| 708 |
}, |
| 709 |
}); |
| 710 |
my $item_level_hold2 = $builder->build_object({ |
| 711 |
class => 'Koha::Holds', |
| 712 |
value => { |
| 713 |
biblionumber => $source_biblionumber, |
| 714 |
itemnumber => $itemnumber2, |
| 715 |
} |
| 716 |
}); |
| 717 |
|
| 718 |
my $tmp_holdsqueue1 = $builder->build({ |
| 719 |
source => 'TmpHoldsqueue', |
| 720 |
value => { |
| 721 |
borrowernumber => $borrowernumber, |
| 722 |
biblionumber => $source_biblionumber, |
| 723 |
itemnumber => $itemnumber1, |
| 724 |
} |
| 725 |
}); |
| 726 |
my $tmp_holdsqueue2 = $builder->build({ |
| 727 |
source => 'TmpHoldsqueue', |
| 728 |
value => { |
| 729 |
borrowernumber => $borrowernumber, |
| 730 |
biblionumber => $source_biblionumber, |
| 731 |
itemnumber => $itemnumber2, |
| 732 |
} |
| 733 |
}); |
| 734 |
my $hold_fill_target1 = $builder->build({ |
| 735 |
source => 'HoldFillTarget', |
| 736 |
value => { |
| 737 |
borrowernumber => $borrowernumber, |
| 738 |
biblionumber => $source_biblionumber, |
| 739 |
itemnumber => $itemnumber1, |
| 740 |
} |
| 741 |
}); |
| 742 |
my $hold_fill_target2 = $builder->build({ |
| 743 |
source => 'HoldFillTarget', |
| 744 |
value => { |
| 745 |
borrowernumber => $borrowernumber, |
| 746 |
biblionumber => $source_biblionumber, |
| 747 |
itemnumber => $itemnumber2, |
| 748 |
} |
| 749 |
}); |
| 750 |
my $linktracker1 = $builder->build({ |
| 751 |
source => 'Linktracker', |
| 752 |
value => { |
| 753 |
borrowernumber => $borrowernumber, |
| 754 |
biblionumber => $source_biblionumber, |
| 755 |
itemnumber => $itemnumber1, |
| 756 |
} |
| 757 |
}); |
| 758 |
my $linktracker2 = $builder->build({ |
| 759 |
source => 'Linktracker', |
| 760 |
value => { |
| 761 |
borrowernumber => $borrowernumber, |
| 762 |
biblionumber => $source_biblionumber, |
| 763 |
itemnumber => $itemnumber2, |
| 764 |
} |
| 765 |
}); |
| 766 |
|
| 767 |
my $to_biblionumber_after_move = $item1->move_to_biblio($target_biblio); |
| 768 |
is($to_biblionumber_after_move, $target_biblionumber, 'move_to_biblio returns the target biblionumber if success'); |
| 769 |
|
| 770 |
$to_biblionumber_after_move = $item1->move_to_biblio($target_biblio); |
| 771 |
is($to_biblionumber_after_move, undef, 'move_to_biblio returns undef if the move has failed. If called twice, the item is not attached to the first biblio anymore'); |
| 772 |
|
| 773 |
my $get_item1 = Koha::Items->find( $item1->itemnumber ); |
| 774 |
is($get_item1->biblionumber, $target_biblionumber, 'item1 is moved'); |
| 775 |
my $get_item2 = Koha::Items->find( $item2->itemnumber ); |
| 776 |
is($get_item2->biblionumber, $source_biblionumber, 'item2 is not moved'); |
| 777 |
my $get_item3 = Koha::Items->find( $item3->itemnumber ); |
| 778 |
is($get_item3->biblionumber, $source_biblionumber, 'item3 is not moved'); |
| 779 |
|
| 780 |
$aq_order1->discard_changes; |
| 781 |
$aq_order2->discard_changes; |
| 782 |
is($aq_order1->biblionumber, $target_biblionumber, 'move_to_biblio moves aq_orders for item 1'); |
| 783 |
is($aq_order2->biblionumber, $source_biblionumber, 'move_to_biblio does not move aq_orders for item 2'); |
| 784 |
|
| 785 |
$bib_level_hold->discard_changes; |
| 786 |
$item_level_hold1->discard_changes; |
| 787 |
$item_level_hold2->discard_changes; |
| 788 |
is($bib_level_hold->biblionumber, $source_biblionumber, 'move_to_biblio does not move the biblio-level hold'); |
| 789 |
is($item_level_hold1->biblionumber, $target_biblionumber, 'move_to_biblio moves the item-level hold placed on item 1'); |
| 790 |
is($item_level_hold2->biblionumber, $source_biblionumber, 'move_to_biblio does not move the item-level hold placed on item 2'); |
| 791 |
|
| 792 |
my $get_tmp_holdsqueue1 = $schema->resultset('TmpHoldsqueue')->search({ itemnumber => $tmp_holdsqueue1->{itemnumber} })->single; |
| 793 |
my $get_tmp_holdsqueue2 = $schema->resultset('TmpHoldsqueue')->search({ itemnumber => $tmp_holdsqueue2->{itemnumber} })->single; |
| 794 |
is($get_tmp_holdsqueue1->biblionumber, $target_biblionumber, 'move_to_biblio moves tmp_holdsqueue for item 1'); |
| 795 |
is($get_tmp_holdsqueue2->biblionumber, $source_biblionumber, 'move_to_biblio does not move tmp_holdsqueue for item 2'); |
| 796 |
|
| 797 |
my $get_hold_fill_target1 = $schema->resultset('HoldFillTarget')->search({ itemnumber => $hold_fill_target1->{itemnumber} })->single; |
| 798 |
my $get_hold_fill_target2 = $schema->resultset('HoldFillTarget')->search({ itemnumber => $hold_fill_target2->{itemnumber} })->single; |
| 799 |
# Why does ->biblionumber return a Biblio object??? |
| 800 |
is($get_hold_fill_target1->biblionumber->biblionumber, $target_biblionumber, 'move_to_biblio moves hold_fill_targets for item 1'); |
| 801 |
is($get_hold_fill_target2->biblionumber->biblionumber, $source_biblionumber, 'move_to_biblio does not move hold_fill_targets for item 2'); |
| 802 |
|
| 803 |
my $get_linktracker1 = $schema->resultset('Linktracker')->search({ itemnumber => $linktracker1->{itemnumber} })->single; |
| 804 |
my $get_linktracker2 = $schema->resultset('Linktracker')->search({ itemnumber => $linktracker2->{itemnumber} })->single; |
| 805 |
is($get_linktracker1->biblionumber, $target_biblionumber, 'move_to_biblio moves linktracker for item 1'); |
| 806 |
is($get_linktracker2->biblionumber, $source_biblionumber, 'move_to_biblio does not move linktracker for item 2'); |
| 807 |
|
| 808 |
$schema->storage->txn_rollback; |
| 809 |
}; |