From a067af7fe2e1a1f0beefadbb319a2bf2e9b9884f Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Wed, 5 Apr 2017 16:42:35 -0300 Subject: [PATCH] Bug 18402: Add the Koha::Item->checkout method MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Return the current checkout for a given item. Note it may not exist. Test plan: prove t/db_dependent/Koha/Items.t should return green Signed-off-by: Marc Véron Signed-off-by: Nick Clemens Signed-off-by: Kyle M Hall --- Koha/Item.pm | 16 ++++++++++++++++ t/db_dependent/Koha/Items.t | 30 +++++++++++++++++++++++++++++- 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/Koha/Item.pm b/Koha/Item.pm index 44dc2f5348..bea05f8317 100644 --- a/Koha/Item.pm +++ b/Koha/Item.pm @@ -25,6 +25,7 @@ use Koha::Database; use Koha::DateUtils qw( dt_from_string ); use C4::Context; +use Koha::Checkouts; use Koha::IssuingRules; use Koha::Item::Transfer; use Koha::Patrons; @@ -106,6 +107,21 @@ sub biblioitem { return Koha::Biblioitem->_new_from_dbic( $biblioitem_rs ); } +=head3 checkout + +my $checkout = $item->checkout; + +Return the checkout for this item + +=cut + +sub checkout { + my ( $self ) = @_; + my $checkout_rs = $self->_result->issue; + return unless $checkout_rs; + return Koha::Checkout->_new_from_dbic( $checkout_rs ); +} + =head3 get_transfer my $transfer = $item->get_transfer; diff --git a/t/db_dependent/Koha/Items.t b/t/db_dependent/Koha/Items.t index 6452c4e57d..fd445b54af 100644 --- a/t/db_dependent/Koha/Items.t +++ b/t/db_dependent/Koha/Items.t @@ -19,7 +19,7 @@ use Modern::Perl; -use Test::More tests => 7; +use Test::More tests => 8; use C4::Circulation; use Koha::Item; @@ -41,6 +41,7 @@ my $new_item_1 = Koha::Item->new( homebranch => $library->{branchcode}, holdingbranch => $library->{branchcode}, barcode => "a_barcode_for_t", + itype => 'BK', } )->store; my $new_item_2 = Koha::Item->new( @@ -49,9 +50,13 @@ my $new_item_2 = Koha::Item->new( homebranch => $library->{branchcode}, holdingbranch => $library->{branchcode}, barcode => "another_barcode_for_t", + itype => 'BK', } )->store; +C4::Context->_new_userenv('xxx'); +C4::Context->set_userenv(0,0,0,'firstname','surname', $library->{branchcode}, 'Midway Public Library', '', '', ''); + like( $new_item_1->itemnumber, qr|^\d+$|, 'Adding a new item should have set the itemnumber' ); is( Koha::Items->search->count, $nb_of_items + 2, 'The 2 items should have been added' ); @@ -90,6 +95,29 @@ subtest 'biblioitem' => sub { is( $biblioitem->biblionumber, $retrieved_item_1->biblionumber, 'Koha::Item->biblioitem should return the correct biblioitem' ); }; +subtest 'checkout' => sub { + plan tests => 5; + my $item = Koha::Items->find( $new_item_1->itemnumber ); + # No checkout yet + my $checkout = $item->checkout; + is( $checkout, undef, 'Koha::Item->checkout should return undef if there is no current checkout on this item' ); + + # Add a checkout + my $patron = $builder->build({ source => 'Borrower' }); + C4::Circulation::AddIssue( $patron, $item->barcode ); + $checkout = $retrieved_item_1->checkout; + is( ref( $checkout ), 'Koha::Checkout', 'Koha::Item->checkout should return a Koha::Checkout' ); + is( $checkout->itemnumber, $item->itemnumber, 'Koha::Item->checkout should return the correct checkout' ); + is( $checkout->borrowernumber, $patron->{borrowernumber}, 'Koha::Item->checkout should return the correct checkout' ); + + # Do the return + C4::Circulation::AddReturn( $item->barcode ); + + # There is no more checkout on this item, making sure it will not return old checkouts + $checkout = $item->checkout; + is( $checkout, undef, 'Koha::Item->checkout should return undef if there is no *current* checkout on this item' ); +}; + $retrieved_item_1->delete; is( Koha::Items->search->count, $nb_of_items + 1, 'Delete should have deleted the item' ); -- 2.39.5