|
Lines 19-25
Link Here
|
| 19 |
|
19 |
|
| 20 |
use Modern::Perl; |
20 |
use Modern::Perl; |
| 21 |
|
21 |
|
| 22 |
use Test::More tests => 9; |
22 |
use Test::More tests => 11; |
| 23 |
use Test::Exception; |
23 |
use Test::Exception; |
| 24 |
|
24 |
|
| 25 |
use C4::Biblio; |
25 |
use C4::Biblio; |
|
Lines 795-797
subtest 'get_transfers' => sub {
Link Here
|
| 795 |
|
795 |
|
| 796 |
$schema->storage->txn_rollback; |
796 |
$schema->storage->txn_rollback; |
| 797 |
}; |
797 |
}; |
|
|
798 |
|
| 799 |
subtest 'move_to_biblio() tests' => sub { |
| 800 |
|
| 801 |
plan tests => 16; |
| 802 |
|
| 803 |
$schema->storage->txn_begin; |
| 804 |
|
| 805 |
my $dbh = C4::Context->dbh; |
| 806 |
|
| 807 |
my $source_biblio = $builder->build_sample_biblio(); |
| 808 |
my $target_biblio = $builder->build_sample_biblio(); |
| 809 |
|
| 810 |
my $source_biblionumber = $source_biblio->biblionumber; |
| 811 |
my $target_biblionumber = $target_biblio->biblionumber; |
| 812 |
|
| 813 |
my $item1 = $builder->build_sample_item({ biblionumber => $source_biblionumber }); |
| 814 |
my $item2 = $builder->build_sample_item({ biblionumber => $source_biblionumber }); |
| 815 |
my $item3 = $builder->build_sample_item({ biblionumber => $source_biblionumber }); |
| 816 |
|
| 817 |
my $itemnumber1 = $item1->itemnumber; |
| 818 |
my $itemnumber2 = $item2->itemnumber; |
| 819 |
|
| 820 |
my $library = $builder->build_object({ class => 'Koha::Libraries' }); |
| 821 |
|
| 822 |
my $patron = $builder->build_object({ |
| 823 |
class => 'Koha::Patrons', |
| 824 |
value => { branchcode => $library->branchcode } |
| 825 |
}); |
| 826 |
my $borrowernumber = $patron->borrowernumber; |
| 827 |
|
| 828 |
my $aq_budget = $builder->build({ |
| 829 |
source => 'Aqbudget', |
| 830 |
value => { |
| 831 |
budget_notes => 'test', |
| 832 |
}, |
| 833 |
}); |
| 834 |
|
| 835 |
my $aq_order1 = $builder->build_object({ |
| 836 |
class => 'Koha::Acquisition::Orders', |
| 837 |
value => { |
| 838 |
biblionumber => $source_biblionumber, |
| 839 |
budget_id => $aq_budget->{budget_id}, |
| 840 |
}, |
| 841 |
}); |
| 842 |
my $aq_order_item1 = $builder->build({ |
| 843 |
source => 'AqordersItem', |
| 844 |
value => { |
| 845 |
ordernumber => $aq_order1->ordernumber, |
| 846 |
itemnumber => $itemnumber1, |
| 847 |
}, |
| 848 |
}); |
| 849 |
my $aq_order2 = $builder->build_object({ |
| 850 |
class => 'Koha::Acquisition::Orders', |
| 851 |
value => { |
| 852 |
biblionumber => $source_biblionumber, |
| 853 |
budget_id => $aq_budget->{budget_id}, |
| 854 |
}, |
| 855 |
}); |
| 856 |
my $aq_order_item2 = $builder->build({ |
| 857 |
source => 'AqordersItem', |
| 858 |
value => { |
| 859 |
ordernumber => $aq_order2->ordernumber, |
| 860 |
itemnumber => $itemnumber2, |
| 861 |
}, |
| 862 |
}); |
| 863 |
|
| 864 |
my $bib_level_hold = $builder->build_object({ |
| 865 |
class => 'Koha::Holds', |
| 866 |
value => { |
| 867 |
biblionumber => $source_biblionumber, |
| 868 |
}, |
| 869 |
}); |
| 870 |
my $item_level_hold1 = $builder->build_object({ |
| 871 |
class => 'Koha::Holds', |
| 872 |
value => { |
| 873 |
biblionumber => $source_biblionumber, |
| 874 |
itemnumber => $itemnumber1, |
| 875 |
}, |
| 876 |
}); |
| 877 |
my $item_level_hold2 = $builder->build_object({ |
| 878 |
class => 'Koha::Holds', |
| 879 |
value => { |
| 880 |
biblionumber => $source_biblionumber, |
| 881 |
itemnumber => $itemnumber2, |
| 882 |
} |
| 883 |
}); |
| 884 |
|
| 885 |
my $tmp_holdsqueue1 = $builder->build({ |
| 886 |
source => 'TmpHoldsqueue', |
| 887 |
value => { |
| 888 |
borrowernumber => $borrowernumber, |
| 889 |
biblionumber => $source_biblionumber, |
| 890 |
itemnumber => $itemnumber1, |
| 891 |
} |
| 892 |
}); |
| 893 |
my $tmp_holdsqueue2 = $builder->build({ |
| 894 |
source => 'TmpHoldsqueue', |
| 895 |
value => { |
| 896 |
borrowernumber => $borrowernumber, |
| 897 |
biblionumber => $source_biblionumber, |
| 898 |
itemnumber => $itemnumber2, |
| 899 |
} |
| 900 |
}); |
| 901 |
my $hold_fill_target1 = $builder->build({ |
| 902 |
source => 'HoldFillTarget', |
| 903 |
value => { |
| 904 |
borrowernumber => $borrowernumber, |
| 905 |
biblionumber => $source_biblionumber, |
| 906 |
itemnumber => $itemnumber1, |
| 907 |
} |
| 908 |
}); |
| 909 |
my $hold_fill_target2 = $builder->build({ |
| 910 |
source => 'HoldFillTarget', |
| 911 |
value => { |
| 912 |
borrowernumber => $borrowernumber, |
| 913 |
biblionumber => $source_biblionumber, |
| 914 |
itemnumber => $itemnumber2, |
| 915 |
} |
| 916 |
}); |
| 917 |
my $linktracker1 = $builder->build({ |
| 918 |
source => 'Linktracker', |
| 919 |
value => { |
| 920 |
borrowernumber => $borrowernumber, |
| 921 |
biblionumber => $source_biblionumber, |
| 922 |
itemnumber => $itemnumber1, |
| 923 |
} |
| 924 |
}); |
| 925 |
my $linktracker2 = $builder->build({ |
| 926 |
source => 'Linktracker', |
| 927 |
value => { |
| 928 |
borrowernumber => $borrowernumber, |
| 929 |
biblionumber => $source_biblionumber, |
| 930 |
itemnumber => $itemnumber2, |
| 931 |
} |
| 932 |
}); |
| 933 |
|
| 934 |
my $to_biblionumber_after_move = $item1->move_to_biblio($target_biblio); |
| 935 |
is($to_biblionumber_after_move, $target_biblionumber, 'move_to_biblio returns the target biblionumber if success'); |
| 936 |
|
| 937 |
$to_biblionumber_after_move = $item1->move_to_biblio($target_biblio); |
| 938 |
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'); |
| 939 |
|
| 940 |
my $get_item1 = Koha::Items->find( $item1->itemnumber ); |
| 941 |
is($get_item1->biblionumber, $target_biblionumber, 'item1 is moved'); |
| 942 |
my $get_item2 = Koha::Items->find( $item2->itemnumber ); |
| 943 |
is($get_item2->biblionumber, $source_biblionumber, 'item2 is not moved'); |
| 944 |
my $get_item3 = Koha::Items->find( $item3->itemnumber ); |
| 945 |
is($get_item3->biblionumber, $source_biblionumber, 'item3 is not moved'); |
| 946 |
|
| 947 |
$aq_order1->discard_changes; |
| 948 |
$aq_order2->discard_changes; |
| 949 |
is($aq_order1->biblionumber, $target_biblionumber, 'move_to_biblio moves aq_orders for item 1'); |
| 950 |
is($aq_order2->biblionumber, $source_biblionumber, 'move_to_biblio does not move aq_orders for item 2'); |
| 951 |
|
| 952 |
$bib_level_hold->discard_changes; |
| 953 |
$item_level_hold1->discard_changes; |
| 954 |
$item_level_hold2->discard_changes; |
| 955 |
is($bib_level_hold->biblionumber, $source_biblionumber, 'move_to_biblio does not move the biblio-level hold'); |
| 956 |
is($item_level_hold1->biblionumber, $target_biblionumber, 'move_to_biblio moves the item-level hold placed on item 1'); |
| 957 |
is($item_level_hold2->biblionumber, $source_biblionumber, 'move_to_biblio does not move the item-level hold placed on item 2'); |
| 958 |
|
| 959 |
my $get_tmp_holdsqueue1 = $schema->resultset('TmpHoldsqueue')->search({ itemnumber => $tmp_holdsqueue1->{itemnumber} })->single; |
| 960 |
my $get_tmp_holdsqueue2 = $schema->resultset('TmpHoldsqueue')->search({ itemnumber => $tmp_holdsqueue2->{itemnumber} })->single; |
| 961 |
is($get_tmp_holdsqueue1->biblionumber, $target_biblionumber, 'move_to_biblio moves tmp_holdsqueue for item 1'); |
| 962 |
is($get_tmp_holdsqueue2->biblionumber, $source_biblionumber, 'move_to_biblio does not move tmp_holdsqueue for item 2'); |
| 963 |
|
| 964 |
my $get_hold_fill_target1 = $schema->resultset('HoldFillTarget')->search({ itemnumber => $hold_fill_target1->{itemnumber} })->single; |
| 965 |
my $get_hold_fill_target2 = $schema->resultset('HoldFillTarget')->search({ itemnumber => $hold_fill_target2->{itemnumber} })->single; |
| 966 |
# Why does ->biblionumber return a Biblio object??? |
| 967 |
is($get_hold_fill_target1->biblionumber->biblionumber, $target_biblionumber, 'move_to_biblio moves hold_fill_targets for item 1'); |
| 968 |
is($get_hold_fill_target2->biblionumber->biblionumber, $source_biblionumber, 'move_to_biblio does not move hold_fill_targets for item 2'); |
| 969 |
|
| 970 |
my $get_linktracker1 = $schema->resultset('Linktracker')->search({ itemnumber => $linktracker1->{itemnumber} })->single; |
| 971 |
my $get_linktracker2 = $schema->resultset('Linktracker')->search({ itemnumber => $linktracker2->{itemnumber} })->single; |
| 972 |
is($get_linktracker1->biblionumber, $target_biblionumber, 'move_to_biblio moves linktracker for item 1'); |
| 973 |
is($get_linktracker2->biblionumber, $source_biblionumber, 'move_to_biblio does not move linktracker for item 2'); |
| 974 |
|
| 975 |
$schema->storage->txn_rollback; |
| 976 |
}; |