Bug 23820: Add test for new behaviour
authorAgustin Moyano <agustinmoyano@theke.io>
Fri, 29 May 2020 16:16:29 +0000 (13:16 -0300)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Mon, 20 Jul 2020 15:45:31 +0000 (17:45 +0200)
To test:
1. prove t/db_dependent/api/v1/clubs_holds.t
2. Sign off

Sponsored-by: Southeast Kansas Library - SEKLS

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>

t/db_dependent/api/v1/clubs_holds.t

index 352e2f1..240018f 100644 (file)
@@ -18,7 +18,7 @@
 
 use Modern::Perl;
 
-use Test::More tests => 1;
+use Test::More tests => 2;
 use Test::Mojo;
 use Test::Warn;
 
@@ -26,10 +26,15 @@ use t::lib::TestBuilder;
 use t::lib::Mocks;
 
 use C4::Auth;
+use C4::Context;
 use Koha::Database;
+use Koha::Holds;
+use Koha::Patrons;
+use JSON qw( decode_json );
 
 my $schema  = Koha::Database->new->schema;
 my $builder = t::lib::TestBuilder->new;
+my $dbh = C4::Context->dbh;
 
 # FIXME: sessionStorage defaults to mysql, but it seems to break transaction handling
 # this affects the other REST api tests
@@ -82,6 +87,39 @@ subtest 'add() tests' => sub {
     };
 };
 
+subtest "default patron home" => sub {
+    plan tests => 8;
+
+    $schema->storage->txn_begin;
+
+    my ($club_with_enrollments, $club_without_enrollments, $item, @enrollments) = create_test_data();
+
+    my ( undef, $session_id ) = create_user_and_session({ authorized => 1 });
+    my $data = {
+        biblio_id => $item->biblionumber,
+        pickup_library_id => $item->home_branch->branchcode,
+        default_patron_home => 1
+    };
+
+    my $tx = $t->ua->build_tx(POST => "/api/v1/clubs/".$club_with_enrollments->id."/holds" => json => $data);
+    $tx->req->cookies({ name => 'CGISESSID', value => $session_id });
+    $t->request_ok($tx)
+        ->status_is(201, 'Created Hold');
+
+    my $json_response = decode_json $t->tx->res->content->get_body_chunk;
+
+    my $sth = $dbh->prepare(
+        "select patron_id, hold_id from club_holds_to_patron_holds where club_hold_id = ?"
+    );
+    $sth->execute($json_response->{club_hold_id});
+    while (my $test = $sth->fetchrow_hashref()) {
+        my $hold = Koha::Holds->find($test->{hold_id});
+        my $patron = Koha::Patrons->find($test->{patron_id});
+        is($hold->branchcode, $patron->branchcode, 'Pickup location should be patrons home branch');
+    }
+    $schema->storage->txn_rollback;
+};
+
 sub unauthorized_access_tests {
     my ($verb, $endpoint, $club_hold_id, $json) = @_;
 
@@ -138,12 +176,25 @@ sub create_user_and_session {
 sub create_test_data {
     my $club_with_enrollments = $builder->build_object( { class => 'Koha::Clubs' } );
     my $club_without_enrollments = $builder->build_object( { class => 'Koha::Clubs' } );
-    my $enrollment1 = $builder->build_object( { class => 'Koha::Club::Enrollments', value => { club_id => $club_with_enrollments->id, date_canceled => undef } } );
-    my $enrollment2 = $builder->build_object( { class => 'Koha::Club::Enrollments', value => { club_id => $club_with_enrollments->id, date_canceled => undef } } );
-    my $enrollment3 = $builder->build_object( { class => 'Koha::Club::Enrollments', value => { club_id => $club_with_enrollments->id, date_canceled => undef } } );
-    my $enrollment4 = $builder->build_object( { class => 'Koha::Club::Enrollments', value => { club_id => $club_with_enrollments->id, date_canceled => undef } } );
-    my $enrollment5 = $builder->build_object( { class => 'Koha::Club::Enrollments', value => { club_id => $club_with_enrollments->id, date_canceled => undef } } );
-    my $enrollment6 = $builder->build_object( { class => 'Koha::Club::Enrollments', value => { club_id => $club_with_enrollments->id, date_canceled => undef } } );
-    my $item        = $builder->build_sample_item();
+    my $lib = $builder->build_object({ class => 'Koha::Libraries', value => {pickup_location => 1}});
+    my $patron = $builder->build_object({ class => 'Koha::Patrons', value => {branchcode => $lib->branchcode}});
+    my $enrollment1 = $builder->build_object( { class => 'Koha::Club::Enrollments', value => { club_id => $club_with_enrollments->id, date_canceled => undef, borrowernumber => $patron->borrowernumber } } );
+    $lib = $builder->build_object({ class => 'Koha::Libraries', value => {pickup_location => 1}});
+    $patron = $builder->build_object({ class => 'Koha::Patrons', value => {branchcode => $lib->branchcode}});
+    my $enrollment2 = $builder->build_object( { class => 'Koha::Club::Enrollments', value => { club_id => $club_with_enrollments->id, date_canceled => undef, borrowernumber => $patron->borrowernumber } } );
+    $lib = $builder->build_object({ class => 'Koha::Libraries', value => {pickup_location => 1}});
+    $patron = $builder->build_object({ class => 'Koha::Patrons', value => {branchcode => $lib->branchcode}});
+    my $enrollment3 = $builder->build_object( { class => 'Koha::Club::Enrollments', value => { club_id => $club_with_enrollments->id, date_canceled => undef, borrowernumber => $patron->borrowernumber } } );
+    $lib = $builder->build_object({ class => 'Koha::Libraries', value => {pickup_location => 1}});
+    $patron = $builder->build_object({ class => 'Koha::Patrons', value => {branchcode => $lib->branchcode}});
+    my $enrollment4 = $builder->build_object( { class => 'Koha::Club::Enrollments', value => { club_id => $club_with_enrollments->id, date_canceled => undef, borrowernumber => $patron->borrowernumber } } );
+    $lib = $builder->build_object({ class => 'Koha::Libraries', value => {pickup_location => 1}});
+    $patron = $builder->build_object({ class => 'Koha::Patrons', value => {branchcode => $lib->branchcode}});
+    my $enrollment5 = $builder->build_object( { class => 'Koha::Club::Enrollments', value => { club_id => $club_with_enrollments->id, date_canceled => undef, borrowernumber => $patron->borrowernumber } } );
+    $lib = $builder->build_object({ class => 'Koha::Libraries', value => {pickup_location => 1}});
+    $patron = $builder->build_object({ class => 'Koha::Patrons', value => {branchcode => $lib->branchcode}});
+    my $enrollment6 = $builder->build_object( { class => 'Koha::Club::Enrollments', value => { club_id => $club_with_enrollments->id, date_canceled => undef, borrowernumber => $patron->borrowernumber } } );
+    $lib = $builder->build_object({ class => 'Koha::Libraries', value => {pickup_location => 1}});
+    my $item        = $builder->build_sample_item({homebranch => $lib->branchcode});
     return ( $club_with_enrollments, $club_without_enrollments, $item, [ $enrollment1, $enrollment2, $enrollment3, $enrollment4, $enrollment5, $enrollment6 ] );
 }
\ No newline at end of file