Lines 790-802
subtest 'pickup_locations() tests' => sub {
Link Here
|
790 |
|
790 |
|
791 |
subtest 'PUT /holds/{hold_id}/pickup_location tests' => sub { |
791 |
subtest 'PUT /holds/{hold_id}/pickup_location tests' => sub { |
792 |
|
792 |
|
793 |
plan tests => 4; |
793 |
plan tests => 16; |
794 |
|
794 |
|
795 |
$schema->storage->txn_begin; |
795 |
$schema->storage->txn_begin; |
796 |
|
796 |
|
797 |
my $password = 'AbcdEFG123'; |
797 |
my $password = 'AbcdEFG123'; |
798 |
|
798 |
|
799 |
my $library_1 = $builder->build_object({ class => 'Koha::Libraries' }); |
799 |
my $library_1 = $builder->build_object({ class => 'Koha::Libraries' }); |
800 |
my $library_2 = $builder->build_object({ class => 'Koha::Libraries' }); |
800 |
my $library_2 = $builder->build_object({ class => 'Koha::Libraries' }); |
801 |
|
801 |
|
802 |
my $patron = $builder->build_object( |
802 |
my $patron = $builder->build_object( |
Lines 818-824
subtest 'PUT /holds/{hold_id}/pickup_location tests' => sub {
Link Here
|
818 |
t::lib::Mocks::mock_preference( 'HoldsLog', 0 ); |
818 |
t::lib::Mocks::mock_preference( 'HoldsLog', 0 ); |
819 |
t::lib::Mocks::mock_preference( 'RESTBasicAuth', 1 ); |
819 |
t::lib::Mocks::mock_preference( 'RESTBasicAuth', 1 ); |
820 |
|
820 |
|
|
|
821 |
my $libraries_rs = Koha::Libraries->search( |
822 |
{ |
823 |
branchcode => { |
824 |
'-in' => [ $library_1->branchcode, $library_2->branchcode ] |
825 |
} |
826 |
} |
827 |
); |
828 |
|
829 |
my $mocked_biblio = Test::MockModule->new('Koha::Biblio'); |
830 |
$mocked_biblio->mock( 'pickup_locations', sub { |
831 |
return $libraries_rs; |
832 |
}); |
833 |
|
834 |
my $mocked_item = Test::MockModule->new('Koha::Item'); |
835 |
$mocked_item->mock( 'pickup_locations', sub { |
836 |
return $libraries_rs; |
837 |
}); |
838 |
|
821 |
my $biblio = $builder->build_sample_biblio; |
839 |
my $biblio = $builder->build_sample_biblio; |
|
|
840 |
my $item = $builder->build_sample_item( |
841 |
{ |
842 |
biblionumber => $biblio->biblionumber, |
843 |
library => $library_1->branchcode |
844 |
} |
845 |
); |
846 |
|
847 |
# biblio-level hold |
822 |
my $hold = Koha::Holds->find( |
848 |
my $hold = Koha::Holds->find( |
823 |
AddReserve( |
849 |
AddReserve( |
824 |
{ |
850 |
{ |
Lines 826-838
subtest 'PUT /holds/{hold_id}/pickup_location tests' => sub {
Link Here
|
826 |
borrowernumber => $patron->borrowernumber, |
852 |
borrowernumber => $patron->borrowernumber, |
827 |
biblionumber => $biblio->biblionumber, |
853 |
biblionumber => $biblio->biblionumber, |
828 |
priority => 1, |
854 |
priority => 1, |
|
|
855 |
itemnumber => undef, |
829 |
} |
856 |
} |
830 |
) |
857 |
) |
831 |
); |
858 |
); |
832 |
|
859 |
|
833 |
$t->put_ok( "//$userid:$password@/api/v1/holds/" |
860 |
$t->put_ok( "//$userid:$password@/api/v1/holds/" |
834 |
. $hold->id |
861 |
. $hold->id |
835 |
. "/pickup_location" => json => $library_2->branchcode )->status_is(200)->json_is($library_2->branchcode); |
862 |
. "/pickup_location" => json => { pickup_library_id => $library_2->branchcode } ) |
|
|
863 |
->status_is(200) |
864 |
->json_is({ pickup_library_id => $library_2->branchcode }); |
865 |
|
866 |
is( $hold->discard_changes->branchcode->branchcode, $library_2->branchcode, 'pickup library adjusted correctly' ); |
867 |
|
868 |
$libraries_rs = Koha::Libraries->search({ branchcode => $library_1->branchcode }); |
869 |
|
870 |
$t->put_ok( "//$userid:$password@/api/v1/holds/" |
871 |
. $hold->id |
872 |
. "/pickup_location" => json => { pickup_library_id => $library_2->branchcode } ) |
873 |
->status_is(400) |
874 |
->json_is({ error => 'Invalid pickup location passed' }); |
875 |
|
876 |
is( $hold->discard_changes->branchcode->branchcode, $library_1->branchcode, 'pickup library unchanged' ); |
877 |
|
878 |
# item-level hold |
879 |
$hold = Koha::Holds->find( |
880 |
AddReserve( |
881 |
{ |
882 |
branchcode => $library_1->branchcode, |
883 |
borrowernumber => $patron->borrowernumber, |
884 |
biblionumber => $biblio->biblionumber, |
885 |
priority => 1, |
886 |
itemnumber => $item->itemnumber, |
887 |
} |
888 |
) |
889 |
); |
890 |
|
891 |
$libraries_rs = Koha::Libraries->search({ branchcode => $library_1->branchcode }); |
892 |
|
893 |
# Attempt to use an invalid pickup locations ends in 400 |
894 |
$t->put_ok( "//$userid:$password@/api/v1/holds/" |
895 |
. $hold->id |
896 |
. "/pickup_location" => json => { pickup_library_id => $library_2->branchcode } ) |
897 |
->status_is(400) |
898 |
->json_is({ error => 'Invalid pickup location passed' }); |
899 |
|
900 |
is( $hold->discard_changes->branchcode->branchcode, $library_1->branchcode, 'pickup library unchanged' ); |
901 |
|
902 |
$libraries_rs = Koha::Libraries->search( |
903 |
{ |
904 |
branchcode => { |
905 |
'-in' => [ $library_1->branchcode, $library_2->branchcode ] |
906 |
} |
907 |
} |
908 |
); |
909 |
|
910 |
$t->put_ok( "//$userid:$password@/api/v1/holds/" |
911 |
. $hold->id |
912 |
. "/pickup_location" => json => { pickup_library_id => $library_2->branchcode } ) |
913 |
->status_is(200) |
914 |
->json_is({ pickup_library_id => $library_2->branchcode }); |
836 |
|
915 |
|
837 |
is( $hold->discard_changes->branchcode->branchcode, $library_2->branchcode, 'pickup library adjusted correctly' ); |
916 |
is( $hold->discard_changes->branchcode->branchcode, $library_2->branchcode, 'pickup library adjusted correctly' ); |
838 |
|
917 |
|
839 |
- |
|
|