|
Lines 17-23
Link Here
|
| 17 |
|
17 |
|
| 18 |
use Modern::Perl; |
18 |
use Modern::Perl; |
| 19 |
|
19 |
|
| 20 |
use Test::More tests => 9; |
20 |
use Test::More tests => 10; |
|
|
21 |
use Test::MockModule; |
| 21 |
use Test::Mojo; |
22 |
use Test::Mojo; |
| 22 |
use t::lib::TestBuilder; |
23 |
use t::lib::TestBuilder; |
| 23 |
use t::lib::Mocks; |
24 |
use t::lib::Mocks; |
|
Lines 671-673
subtest 'add() tests (maxreserves behaviour)' => sub {
Link Here
|
| 671 |
|
672 |
|
| 672 |
$schema->storage->txn_rollback; |
673 |
$schema->storage->txn_rollback; |
| 673 |
}; |
674 |
}; |
| 674 |
- |
675 |
|
|
|
676 |
subtest 'pickup_locations() tests' => sub { |
| 677 |
|
| 678 |
plan tests => 6; |
| 679 |
|
| 680 |
$schema->storage->txn_begin; |
| 681 |
|
| 682 |
my $library_1 = $builder->build_object({ class => 'Koha::Libraries', value => { marcorgcode => 'A' } }); |
| 683 |
my $library_2 = $builder->build_object({ class => 'Koha::Libraries', value => { marcorgcode => 'B' } }); |
| 684 |
my $library_3 = $builder->build_object({ class => 'Koha::Libraries', value => { marcorgcode => 'C' } }); |
| 685 |
|
| 686 |
my $patron = $builder->build_object( |
| 687 |
{ |
| 688 |
class => 'Koha::Patrons', |
| 689 |
value => { userid => 'tomasito', flags => 1 } |
| 690 |
} |
| 691 |
); |
| 692 |
$patron->set_password( { password => $password, skip_validation => 1 } ); |
| 693 |
my $userid = $patron->userid; |
| 694 |
|
| 695 |
my $item_class = Test::MockModule->new('Koha::Item'); |
| 696 |
$item_class->mock( |
| 697 |
'pickup_locations', |
| 698 |
sub { |
| 699 |
my ( $self, $params ) = @_; |
| 700 |
my $mock_patron = $params->{patron}; |
| 701 |
is( $mock_patron->borrowernumber, |
| 702 |
$patron->borrowernumber, 'Patron passed correctly' ); |
| 703 |
return Koha::Libraries->search( |
| 704 |
{ |
| 705 |
branchcode => { |
| 706 |
'-in' => [ |
| 707 |
$library_1->branchcode, |
| 708 |
$library_2->branchcode |
| 709 |
] |
| 710 |
} |
| 711 |
}, |
| 712 |
{ # we make sure no surprises in the order of the result |
| 713 |
order_by => { '-asc' => 'marcorgcode' } |
| 714 |
} |
| 715 |
); |
| 716 |
} |
| 717 |
); |
| 718 |
|
| 719 |
my $biblio_class = Test::MockModule->new('Koha::Biblio'); |
| 720 |
$biblio_class->mock( |
| 721 |
'pickup_locations', |
| 722 |
sub { |
| 723 |
my ( $self, $params ) = @_; |
| 724 |
my $mock_patron = $params->{patron}; |
| 725 |
is( $mock_patron->borrowernumber, |
| 726 |
$patron->borrowernumber, 'Patron passed correctly' ); |
| 727 |
return Koha::Libraries->search( |
| 728 |
{ |
| 729 |
branchcode => { |
| 730 |
'-in' => [ |
| 731 |
$library_2->branchcode, |
| 732 |
$library_3->branchcode |
| 733 |
] |
| 734 |
} |
| 735 |
}, |
| 736 |
{ # we make sure no surprises in the order of the result |
| 737 |
order_by => { '-asc' => 'marcorgcode' } |
| 738 |
} |
| 739 |
); |
| 740 |
} |
| 741 |
); |
| 742 |
|
| 743 |
my $item = $builder->build_sample_item; |
| 744 |
|
| 745 |
# biblio-level hold |
| 746 |
my $hold_1 = $builder->build_object( |
| 747 |
{ |
| 748 |
class => 'Koha::Holds', |
| 749 |
value => { |
| 750 |
itemnumber => undef, |
| 751 |
biblionumber => $item->biblionumber, |
| 752 |
borrowernumber => $patron->borrowernumber |
| 753 |
} |
| 754 |
} |
| 755 |
); |
| 756 |
# item-level hold |
| 757 |
my $hold_2 = $builder->build_object( |
| 758 |
{ |
| 759 |
class => 'Koha::Holds', |
| 760 |
value => { |
| 761 |
itemnumber => $item->itemnumber, |
| 762 |
biblionumber => $item->biblionumber, |
| 763 |
borrowernumber => $patron->borrowernumber |
| 764 |
} |
| 765 |
} |
| 766 |
); |
| 767 |
|
| 768 |
$t->get_ok( "//$userid:$password@/api/v1/holds/" |
| 769 |
. $hold_1->id |
| 770 |
. "/pickup_locations" ) |
| 771 |
->json_is( [ $library_2->to_api, $library_3->to_api ] ); |
| 772 |
|
| 773 |
$t->get_ok( "//$userid:$password@/api/v1/holds/" |
| 774 |
. $hold_2->id |
| 775 |
. "/pickup_locations" ) |
| 776 |
->json_is( [ $library_1->to_api, $library_2->to_api ] ); |
| 777 |
|
| 778 |
$schema->storage->txn_rollback; |
| 779 |
}; |