Bugzilla – Attachment 79319 Details for
Bug 15486
Restrict number of holds placed by day
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 15486: Unit tests
Bug-15486-Unit-tests.patch (text/plain), 6.19 KB, created by
Tomás Cohen Arazi (tcohen)
on 2018-09-24 15:51:27 UTC
(
hide
)
Description:
Bug 15486: Unit tests
Filename:
MIME Type:
Creator:
Tomás Cohen Arazi (tcohen)
Created:
2018-09-24 15:51:27 UTC
Size:
6.19 KB
patch
obsolete
>From b7e0bdcd21f5fbd5ae37c6df73e5920558acacc2 Mon Sep 17 00:00:00 2001 >From: Tomas Cohen Arazi <tomascohen@theke.io> >Date: Wed, 19 Jul 2017 16:30:24 -0300 >Subject: [PATCH] Bug 15486: Unit tests > >This patch introduces unit tests for the new circulation rules option >that allows setting a max holds per day limit. > >To test: >- Apply the patch >- Run: > $ sudo koha-shell kohadev > k$ cd kohaclone > k$ prove t/db_dependent/Holds.t >=> FAIL: CanItemBeReserved doesn't check the amount of holds per day > and the introduced error code is not returned. OK is returned > instead. >--- > t/db_dependent/Holds.t | 134 ++++++++++++++++++++++++++++++++++++++++- > 1 file changed, 132 insertions(+), 2 deletions(-) > >diff --git a/t/db_dependent/Holds.t b/t/db_dependent/Holds.t >index 4c1be773ec..d24fa15ca3 100755 >--- a/t/db_dependent/Holds.t >+++ b/t/db_dependent/Holds.t >@@ -7,9 +7,8 @@ use t::lib::TestBuilder; > > use C4::Context; > >-use Test::More tests => 56; >+use Test::More tests => 57; > use MARC::Record; >-use Koha::Patrons; > use C4::Items; > use C4::Biblio; > use C4::Reserves; >@@ -19,8 +18,10 @@ use Koha::Database; > use Koha::DateUtils qw( dt_from_string output_pref ); > use Koha::Biblios; > use Koha::Holds; >+use Koha::IssuingRules; > use Koha::Items; > use Koha::Libraries; >+use Koha::Patrons; > > BEGIN { > use FindBin; >@@ -511,6 +512,135 @@ subtest 'Pickup location availability tests' => sub { > 'libraryNotFound', 'Cannot set unknown library as pickup location'); > }; > >+$schema->storage->txn_rollback; >+ >+subtest 'CanItemBeReserved / holds_per_day tests' => sub { >+ >+ plan tests => 9; >+ >+ $schema->storage->txn_begin; >+ >+ Koha::Holds->search->delete; >+ $dbh->do('DELETE FROM issues'); >+ Koha::Items->search->delete; >+ Koha::Biblios->search->delete; >+ >+ my $itemtype = $builder->build_object( { class => 'Koha::ItemTypes' } ); >+ my $library = $builder->build_object( { class => 'Koha::Libraries' } ); >+ my $patron = $builder->build_object( { class => 'Koha::Patrons' } ); >+ >+ # Create 3 biblios with items >+ my ($bibnum_1) = create_helper_biblio( $itemtype->itemtype ); >+ my ( undef, undef, $itemnumber_1 ) = AddItem( >+ { homebranch => $library->branchcode, >+ holdingbranch => $library->branchcode >+ }, >+ $bibnum >+ ); >+ my ($bibnum_2) = create_helper_biblio( $itemtype->itemtype ); >+ my ( undef, undef, $itemnumber_2 ) = AddItem( >+ { homebranch => $library->branchcode, >+ holdingbranch => $library->branchcode >+ }, >+ $bibnum_2 >+ ); >+ my ($bibnum_3) = create_helper_biblio( $itemtype->itemtype ); >+ my ( undef, undef, $itemnumber_3 ) = AddItem( >+ { homebranch => $library->branchcode, >+ holdingbranch => $library->branchcode >+ }, >+ $bibnum_3 >+ ); >+ >+ Koha::IssuingRules->search->delete; >+ my $issuingrule = Koha::IssuingRule->new( >+ { categorycode => '*', >+ branchcode => '*', >+ itemtype => $itemtype->itemtype, >+ reservesallowed => 1, >+ holds_per_record => 99, >+ holds_per_day => 2 >+ } >+ )->store; >+ >+ is_deeply( >+ CanItemBeReserved( $patron->borrowernumber, $itemnumber_1 ), >+ { status => 'OK' }, >+ 'Patron can reserve item with hold limit of 1, no holds placed' >+ ); >+ >+ AddReserve( $library->branchcode, $patron->borrowernumber, $bibnum_1, '', 1, ); >+ >+ is_deeply( >+ CanItemBeReserved( $patron->borrowernumber, $itemnumber_1 ), >+ { status => 'tooManyReserves', limit => 1 }, >+ 'Patron cannot reserve item with hold limit of 1, 1 bib level hold placed' >+ ); >+ >+ # Raise reservesallowed to avoid tooManyReserves from it >+ $issuingrule->set( { reservesallowed => 3 } )->store; >+ >+ is_deeply( >+ CanItemBeReserved( $patron->borrowernumber, $itemnumber_2 ), >+ { status => 'OK' }, >+ 'Patron can reserve item with 2 reserves daily cap' >+ ); >+ >+ # Add a second reserve >+ my $res_id = AddReserve( $library->branchcode, $patron->borrowernumber, $bibnum_2, '', 1, ); >+ is_deeply( >+ CanItemBeReserved( $patron->borrowernumber, $itemnumber_2 ), >+ { status => 'tooManyReservesToday', limit => 2 }, >+ 'Patron cannot a third item with 2 reserves daily cap' >+ ); >+ >+ # Update last hold so reservedate is in the past, so 2 holds, but different day >+ $hold = Koha::Holds->find($res_id); >+ my $yesterday = dt_from_string() - DateTime::Duration->new( days => 1 ); >+ $hold->reservedate($yesterday)->store; >+ >+ is_deeply( >+ CanItemBeReserved( $patron->borrowernumber, $itemnumber_2 ), >+ { status => 'OK' }, >+ 'Patron can reserve item with 2 bib level hold placed on different days, 2 reserves daily cap' >+ ); >+ >+ # Set holds_per_day to 0 >+ $issuingrule->set( { holds_per_day => 0 } )->store; >+ >+ # Delete existing holds >+ Koha::Holds->search->delete; >+ is_deeply( >+ CanItemBeReserved( $patron->borrowernumber, $itemnumber_2 ), >+ { status => 'tooManyReservesToday', limit => 0 }, >+ 'Patron cannot reserve if holds_per_day is 0 (i.e. 0 is 0)' >+ ); >+ >+ $issuingrule->set( { holds_per_day => undef } )->store; >+ Koha::Holds->search->delete; >+ is_deeply( >+ CanItemBeReserved( $patron->borrowernumber, $itemnumber_2 ), >+ { status => 'OK' }, >+ 'Patron can reserve if holds_per_day is undef (i.e. undef is unlimited daily cap)' >+ ); >+ AddReserve( $library->branchcode, $patron->borrowernumber, $bibnum_1, '', 1, ); >+ AddReserve( $library->branchcode, $patron->borrowernumber, $bibnum_2, '', 1, ); >+ is_deeply( >+ CanItemBeReserved( $patron->borrowernumber, $itemnumber_3 ), >+ { status => 'OK' }, >+ 'Patron can reserve if holds_per_day is undef (i.e. undef is unlimited daily cap)' >+ ); >+ AddReserve( $library->branchcode, $patron->borrowernumber, $bibnum_3, '', 1, ); >+ is_deeply( >+ CanItemBeReserved( $patron->borrowernumber, $itemnumber_3 ), >+ { status => 'tooManyReserves', limit => 3 }, >+ 'Unlimited daily holds, but reached reservesallowed' >+ ); >+ >+ $schema->storage->txn_rollback; >+}; >+ >+ > # Helper method to set up a Biblio. > sub create_helper_biblio { > my $itemtype = shift; >-- >2.19.0
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 15486
:
65128
|
65129
|
65130
|
65131
|
65132
|
65133
|
67202
|
67203
|
67204
|
67205
|
67206
|
67207
|
67337
|
67840
|
67841
|
67842
|
67843
|
67844
|
67845
|
68728
|
68729
|
68730
|
68731
|
68732
|
68733
|
68734
|
68735
|
68750
|
68751
|
68752
|
68791
|
71314
|
71315
|
71316
|
71317
|
71318
|
71319
|
72709
|
79318
|
79319
|
79320
|
79321
|
79322
|
79323
|
79324
|
79696
|
79697
|
79698
|
79699
|
79700
|
79701
|
79702
|
80478
|
80479
|
80480
|
80481
|
80482
|
80483
|
80484
|
81087