|
Lines 8-14
Link Here
|
| 8 |
|
8 |
|
| 9 |
use Modern::Perl; |
9 |
use Modern::Perl; |
| 10 |
|
10 |
|
| 11 |
use Test::More tests => 48; |
11 |
use Test::More tests => 51; |
| 12 |
use Data::Dumper; |
12 |
use Data::Dumper; |
| 13 |
|
13 |
|
| 14 |
use C4::Calendar; |
14 |
use C4::Calendar; |
|
Lines 794-826
Koha::Holds->find( $reserve_id )->cancel;
Link Here
|
| 794 |
# End testing hold itemtype limit |
794 |
# End testing hold itemtype limit |
| 795 |
|
795 |
|
| 796 |
|
796 |
|
| 797 |
# Test Local Holds Priority - Bug 18001 |
797 |
subtest "Test Local Holds Priority - Bib level" => sub { |
| 798 |
t::lib::Mocks::mock_preference('LocalHoldsPriority', 1); |
798 |
plan tests => 2; |
| 799 |
t::lib::Mocks::mock_preference('LocalHoldsPriorityPatronControl', 'PickupLibrary'); |
799 |
|
| 800 |
t::lib::Mocks::mock_preference('LocalHoldsPriorityItemControl', 'homebranch'); |
800 |
Koha::Biblios->delete(); |
|
|
801 |
t::lib::Mocks::mock_preference( 'LocalHoldsPriority', 1 ); |
| 802 |
t::lib::Mocks::mock_preference( 'LocalHoldsPriorityPatronControl', 'PickupLibrary' ); |
| 803 |
t::lib::Mocks::mock_preference( 'LocalHoldsPriorityItemControl', 'homebranch' ); |
| 804 |
my $branch = $builder->build_object( { class => 'Koha::Libraries' } ); |
| 805 |
my $branch2 = $builder->build_object( { class => 'Koha::Libraries' } ); |
| 806 |
my $local_patron = $builder->build_object( |
| 807 |
{ |
| 808 |
class => "Koha::Patrons", |
| 809 |
value => { |
| 810 |
branchcode => $branch->branchcode |
| 811 |
} |
| 812 |
} |
| 813 |
); |
| 814 |
my $other_patron = $builder->build_object( |
| 815 |
{ |
| 816 |
class => "Koha::Patrons", |
| 817 |
value => { |
| 818 |
branchcode => $branch2->branchcode |
| 819 |
} |
| 820 |
} |
| 821 |
); |
| 822 |
my $biblio = $builder->build_sample_biblio(); |
| 823 |
my $item = $builder->build_sample_item( |
| 824 |
{ |
| 825 |
biblionumber => $biblio->biblionumber, |
| 826 |
library => $branch->branchcode, |
| 827 |
} |
| 828 |
); |
| 801 |
|
829 |
|
| 802 |
$dbh->do("DELETE FROM tmp_holdsqueue"); |
830 |
my $reserve_id = |
| 803 |
$dbh->do("DELETE FROM hold_fill_targets"); |
831 |
AddReserve( $branch2->branchcode, $other_patron->borrowernumber, |
| 804 |
$dbh->do("DELETE FROM reserves"); |
832 |
$biblio->biblionumber, '', 1, undef, undef, undef, undef, undef, undef, undef ); |
|
|
833 |
my $reserve_id2 = |
| 834 |
AddReserve( $item->homebranch, $local_patron->borrowernumber, |
| 835 |
$biblio->biblionumber, '', 2, undef, undef, undef, undef, undef, undef, undef ); |
| 836 |
|
| 837 |
C4::HoldsQueue::CreateQueue(); |
| 838 |
|
| 839 |
my $queue_rs = $schema->resultset('TmpHoldsqueue'); |
| 840 |
is( $queue_rs->count(), 1, |
| 841 |
"Hold queue contains one hold" ); |
| 842 |
is( |
| 843 |
$queue_rs->next->borrowernumber, |
| 844 |
$local_patron->borrowernumber, |
| 845 |
"We should pick the local hold over the next available" |
| 846 |
); |
| 847 |
}; |
| 805 |
|
848 |
|
| 806 |
$item = Koha::Items->find( { biblionumber => $biblionumber } ); |
849 |
subtest "Test Local Holds Priority - Item level" => sub { |
| 807 |
$item->holdingbranch( $item->homebranch ); |
850 |
plan tests => 2; |
| 808 |
$item->store(); |
851 |
|
|
|
852 |
Koha::Biblios->delete(); |
| 853 |
t::lib::Mocks::mock_preference( 'LocalHoldsPriority', 1 ); |
| 854 |
t::lib::Mocks::mock_preference( 'LocalHoldsPriorityPatronControl', 'PickupLibrary' ); |
| 855 |
t::lib::Mocks::mock_preference( 'LocalHoldsPriorityItemControl', 'homebranch' ); |
| 856 |
my $branch = $builder->build_object( { class => 'Koha::Libraries' } ); |
| 857 |
my $branch2 = $builder->build_object( { class => 'Koha::Libraries' } ); |
| 858 |
my $local_patron = $builder->build_object( |
| 859 |
{ |
| 860 |
class => "Koha::Patrons", |
| 861 |
value => { |
| 862 |
branchcode => $branch->branchcode |
| 863 |
} |
| 864 |
} |
| 865 |
); |
| 866 |
my $other_patron = $builder->build_object( |
| 867 |
{ |
| 868 |
class => "Koha::Patrons", |
| 869 |
value => { |
| 870 |
branchcode => $branch2->branchcode |
| 871 |
} |
| 872 |
} |
| 873 |
); |
| 874 |
my $biblio = $builder->build_sample_biblio(); |
| 875 |
my $item = $builder->build_sample_item( |
| 876 |
{ |
| 877 |
biblionumber => $biblio->biblionumber, |
| 878 |
library => $branch->branchcode, |
| 879 |
} |
| 880 |
); |
| 809 |
|
881 |
|
| 810 |
my $item2 = Koha::Item->new( $item->unblessed ); |
882 |
my $reserve_id = |
| 811 |
$item2->itemnumber( undef ); |
883 |
AddReserve( $branch2->branchcode, $other_patron->borrowernumber, |
| 812 |
$item2->store(); |
884 |
$biblio->biblionumber, '', 1, undef, undef, undef, undef, $item->id, undef, undef ); |
|
|
885 |
my $reserve_id2 = |
| 886 |
AddReserve( $item->homebranch, $local_patron->borrowernumber, |
| 887 |
$biblio->biblionumber, '', 2, undef, undef, undef, undef, $item->id, undef, undef ); |
| 813 |
|
888 |
|
| 814 |
my $item3 = Koha::Item->new( $item->unblessed ); |
889 |
C4::HoldsQueue::CreateQueue(); |
| 815 |
$item3->itemnumber( undef ); |
|
|
| 816 |
$item3->store(); |
| 817 |
|
890 |
|
| 818 |
$reserve_id = AddReserve( $item->homebranch, $borrowernumber, $biblionumber, '', 1, undef, undef, undef, undef, undef, undef, undef ); |
891 |
my $queue_rs = $schema->resultset('TmpHoldsqueue'); |
|
|
892 |
my $q = $queue_rs->next; |
| 893 |
is( $queue_rs->count(), 1, |
| 894 |
"Hold queue contains one hold" ); |
| 895 |
is( |
| 896 |
$q->borrowernumber, |
| 897 |
$local_patron->borrowernumber, |
| 898 |
"We should pick the local hold over the next available" |
| 899 |
); |
| 900 |
}; |
| 819 |
|
901 |
|
| 820 |
C4::HoldsQueue::CreateQueue(); |
902 |
subtest "Test Local Holds Priority - Item level hold over Record level hold (Bug 23934)" => sub { |
|
|
903 |
plan tests => 2; |
| 904 |
|
| 905 |
Koha::Biblios->delete(); |
| 906 |
t::lib::Mocks::mock_preference( 'LocalHoldsPriority', 1 ); |
| 907 |
t::lib::Mocks::mock_preference( 'LocalHoldsPriorityPatronControl', 'PickupLibrary' ); |
| 908 |
t::lib::Mocks::mock_preference( 'LocalHoldsPriorityItemControl', 'homebranch' ); |
| 909 |
my $branch = $builder->build_object( { class => 'Koha::Libraries' } ); |
| 910 |
my $branch2 = $builder->build_object( { class => 'Koha::Libraries' } ); |
| 911 |
my $local_patron = $builder->build_object( |
| 912 |
{ |
| 913 |
class => "Koha::Patrons", |
| 914 |
value => { |
| 915 |
branchcode => $branch->branchcode |
| 916 |
} |
| 917 |
} |
| 918 |
); |
| 919 |
my $other_patron = $builder->build_object( |
| 920 |
{ |
| 921 |
class => "Koha::Patrons", |
| 922 |
value => { |
| 923 |
branchcode => $branch2->branchcode |
| 924 |
} |
| 925 |
} |
| 926 |
); |
| 927 |
my $biblio = $builder->build_sample_biblio(); |
| 928 |
my $item = $builder->build_sample_item( |
| 929 |
{ |
| 930 |
biblionumber => $biblio->biblionumber, |
| 931 |
library => $branch->branchcode, |
| 932 |
} |
| 933 |
); |
| 934 |
|
| 935 |
my $reserve_id = |
| 936 |
AddReserve( $branch2->branchcode, $other_patron->borrowernumber, |
| 937 |
$biblio->biblionumber, '', 1, undef, undef, undef, undef, undef, undef, undef ); |
| 938 |
my $reserve_id2 = |
| 939 |
AddReserve( $item->homebranch, $local_patron->borrowernumber, |
| 940 |
$biblio->biblionumber, '', 2, undef, undef, undef, undef, $item->id, undef, undef ); |
| 941 |
|
| 942 |
C4::HoldsQueue::CreateQueue(); |
| 943 |
|
| 944 |
my $queue_rs = $schema->resultset('TmpHoldsqueue'); |
| 945 |
my $q = $queue_rs->next; |
| 946 |
is( $queue_rs->count(), 1, |
| 947 |
"Hold queue contains one hold" ); |
| 948 |
is( |
| 949 |
$q->borrowernumber, |
| 950 |
$local_patron->borrowernumber, |
| 951 |
"We should pick the local hold over the next available" |
| 952 |
); |
| 953 |
}; |
| 954 |
|
| 955 |
subtest "Test Local Holds Priority - Ensure no duplicate requests in holds queue (Bug 18001)" => sub { |
| 956 |
plan tests => 1; |
| 957 |
|
| 958 |
$dbh->do("DELETE FROM tmp_holdsqueue"); |
| 959 |
$dbh->do("DELETE FROM hold_fill_targets"); |
| 960 |
$dbh->do("DELETE FROM reserves"); |
| 961 |
$dbh->do("DELETE FROM issuingrules"); |
| 962 |
$dbh->do("DELETE FROM circulation_rules"); |
| 963 |
Koha::Biblios->delete(); |
| 964 |
|
| 965 |
t::lib::Mocks::mock_preference( 'LocalHoldsPriority', 1 ); |
| 966 |
t::lib::Mocks::mock_preference( 'LocalHoldsPriorityPatronControl', 'PickupLibrary' ); |
| 967 |
t::lib::Mocks::mock_preference( 'LocalHoldsPriorityItemControl', 'homebranch' ); |
| 968 |
my $branch = $builder->build_object( { class => 'Koha::Libraries' } ); |
| 969 |
my $branch2 = $builder->build_object( { class => 'Koha::Libraries' } ); |
| 970 |
my $patron = $builder->build_object( |
| 971 |
{ |
| 972 |
class => "Koha::Patrons", |
| 973 |
value => { |
| 974 |
branchcode => $branch->branchcode |
| 975 |
} |
| 976 |
} |
| 977 |
); |
| 978 |
my $biblio = $builder->build_sample_biblio(); |
| 979 |
my $item1 = $builder->build_sample_item( |
| 980 |
{ |
| 981 |
biblionumber => $biblio->biblionumber, |
| 982 |
library => $branch->branchcode, |
| 983 |
} |
| 984 |
); |
| 985 |
my $item2 = $builder->build_sample_item( |
| 986 |
{ |
| 987 |
biblionumber => $biblio->biblionumber, |
| 988 |
library => $branch->branchcode, |
| 989 |
} |
| 990 |
); |
| 991 |
|
| 992 |
my $item3 = $builder->build_sample_item( |
| 993 |
{ |
| 994 |
biblionumber => $biblio->biblionumber, |
| 995 |
library => $branch->branchcode, |
| 996 |
} |
| 997 |
); |
| 998 |
|
| 999 |
$reserve_id = |
| 1000 |
AddReserve( $item1->homebranch, $patron->borrowernumber, $biblio->id, '', |
| 1001 |
1, undef, undef, undef, undef, undef, undef, undef ); |
| 1002 |
|
| 1003 |
C4::HoldsQueue::CreateQueue(); |
| 1004 |
|
| 1005 |
my $queue_rs = $schema->resultset('TmpHoldsqueue'); |
| 1006 |
|
| 1007 |
is( $queue_rs->count(), 1, |
| 1008 |
"Hold queue contains one hold from chosen from three possible items" ); |
| 1009 |
}; |
| 821 |
|
1010 |
|
| 822 |
my $queue_rs = $schema->resultset('TmpHoldsqueue'); |
|
|
| 823 |
is( $queue_rs->count(), 1, "Hold queue contains one hold from chosen from three possible items" ); |
| 824 |
|
1011 |
|
| 825 |
subtest 'Trivial test for UpdateTransportCostMatrix' => sub { |
1012 |
subtest 'Trivial test for UpdateTransportCostMatrix' => sub { |
| 826 |
plan tests => 1; |
1013 |
plan tests => 1; |
| 827 |
- |
|
|