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