Bug 19513: Re-add AnonymousPatron-related tests
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Tue, 24 Oct 2017 17:53:36 +0000 (14:53 -0300)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Wed, 25 Oct 2017 15:14:40 +0000 (12:14 -0300)
These tests are still useful

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
The AddMember call is considerably slowing it down. A call to TestBuilder
would be an improvement for performance.

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
t/db_dependent/Circulation/MarkIssueReturned.t

index d2cf238..403b1d8 100644 (file)
@@ -25,6 +25,8 @@ use t::lib::TestBuilder;
 
 use C4::Circulation;
 use C4::Context;
+use C4::Members;
+use Koha::Checkouts;
 use Koha::Database;
 
 my $schema = Koha::Database->schema;
@@ -32,8 +34,6 @@ $schema->storage->txn_begin;
 
 my $builder = t::lib::TestBuilder->new;
 
-t::lib::Mocks::mock_preference('AnonymousPatron', '');
-
 my $library = $builder->build({ source => 'Branch' });
 
 C4::Context->_new_userenv('xxx');
@@ -56,18 +56,31 @@ my $item = $builder->build(
         }
     }
 );
-my $issue = C4::Circulation::AddIssue( $patron, $item->{barcode} );
-
-eval { C4::Circulation::MarkIssueReturned( $patron->{borrowernumber}, $item->{itemnumber}, 'dropbox_branch', 'returndate', 2 ) };
-like ( $@, qr<Fatal error: the patron \(\d+\) .* AnonymousPatron>, 'Fatal error on anonymization' );
 
+subtest 'anonymous patron' => sub {
+    plan tests => 2;
+    # The next call will raise an error, because data are not correctly set
+    t::lib::Mocks::mock_preference('AnonymousPatron', '');
+    my $issue = C4::Circulation::AddIssue( $patron, $item->{barcode} );
+    eval { C4::Circulation::MarkIssueReturned( $patron->{borrowernumber}, $item->{itemnumber}, 'dropbox_branch', 'returndate', 2 ) };
+    like ( $@, qr<Fatal error: the patron \(\d+\) .* AnonymousPatron>, 'AnonymousPatron is not set - Fatal error on anonymization' );
+    Koha::Checkouts->find( $issue->issue_id )->delete;
+
+    my $anonymous_borrowernumber = C4::Members::AddMember( categorycode => $patron_category->{categorycode}, branchcode => $library->{branchcode} );
+    t::lib::Mocks::mock_preference('AnonymousPatron', $anonymous_borrowernumber);
+    $issue = C4::Circulation::AddIssue( $patron, $item->{barcode} );
+    eval { C4::Circulation::MarkIssueReturned( $patron->{borrowernumber}, $item->{itemnumber}, 'dropbox_branch', 'returndate', 2 ) };
+    is ( $@, q||, 'AnonymousPatron is set correctly - no error expected');
+};
+
+my ( $issue_id, $issue );
 # The next call will return undef for invalid item number
-my $issue_id;
 eval { $issue_id = C4::Circulation::MarkIssueReturned( $patron->{borrowernumber}, 'invalid_itemnumber', 'dropbox_branch', 'returndate', 0 ) };
 is( $@, '', 'No die triggered by invalid itemnumber' );
 is( $issue_id, undef, 'No issue_id returned' );
 
 # In the next call we return the item and try it another time
+$issue = C4::Circulation::AddIssue( $patron, $item->{barcode} );
 eval { $issue_id = C4::Circulation::MarkIssueReturned( $patron->{borrowernumber}, $item->{itemnumber}, undef, undef, 0 ) };
 is( $issue_id, $issue->issue_id, "Item has been returned (issue $issue_id)" );
 eval { $issue_id = C4::Circulation::MarkIssueReturned( $patron->{borrowernumber}, $item->{itemnumber}, undef, undef, 0 ) };