From e65ea5819884e481db6e91fae922a6db987ed72b Mon Sep 17 00:00:00 2001 From: Agustin Moyano Date: Thu, 22 Jul 2021 00:54:41 +0000 Subject: [PATCH] Bug 27945: Add tests Signed-off-by: David Nind --- t/db_dependent/ArticleRequests.t | 95 +++++++++++++++++++++++++++++++- 1 file changed, 94 insertions(+), 1 deletion(-) mode change 100755 => 100644 t/db_dependent/ArticleRequests.t diff --git a/t/db_dependent/ArticleRequests.t b/t/db_dependent/ArticleRequests.t old mode 100755 new mode 100644 index 3f0ec37cd3..987de75639 --- a/t/db_dependent/ArticleRequests.t +++ b/t/db_dependent/ArticleRequests.t @@ -19,7 +19,7 @@ use Modern::Perl; use POSIX qw(strftime); -use Test::More tests => 54; +use Test::More tests => 55; use t::lib::TestBuilder; use t::lib::Mocks; @@ -31,6 +31,8 @@ use Koha::Patron; use Koha::Library::Group; use Koha::CirculationRules; use Koha::Caches; +use Koha::DateUtils qw( dt_from_string ); +use Try::Tiny; BEGIN { use_ok('Koha::ArticleRequest'); @@ -252,4 +254,95 @@ subtest 'may_article_request' => sub { $cache->clear_from_cache( Koha::CirculationRules::GUESSED_ITEMTYPES_KEY ); }; + +subtest 'article request limit' => sub { + plan tests => 12; + + t::lib::Mocks::mock_preference('ArticleRequests', 1); + + my $item = $builder->build_sample_item; + + my $category = $builder->build_object( + { + class => 'Koha::Patron::Categories', + value => { + article_request_limit => 1 + } + } + ); + my $patron = $builder->build_object( + { + class => 'Koha::Patrons', + value => { + categorycode => $category->categorycode + }, + } + ); + $patron->article_requests->delete(); + + is($patron->can_request_article, 1, 'Patron can request more articles'); + + my $article_request_1 = Koha::ArticleRequest->new( + { + borrowernumber => $patron->id, + biblionumber => $item->biblionumber, + itemnumber => $item->itemnumber, + title => 'an article request', + } + )->store(); + + is($patron->can_request_article, 0, 'Patron cannot request more articles'); + is($patron->article_requests->count, 1, 'There is one current article request'); + + try { + Koha::ArticleRequest->new( + { + borrowernumber => $patron->id, + biblionumber => $item->biblionumber, + itemnumber => $item->itemnumber, + title => 'an second article request', + } + )->store(); + } + catch { + is(ref($_), 'Koha::Exceptions::ArticleRequest::LimitReached', 'Limit reached thrown'); + }; + + is($patron->can_request_article, 0, 'Patron cannot request more articles'); + is($patron->article_requests->count, 1, 'There is still one article request'); + + $article_request_1->created_on(dt_from_string->add(days => -1))->store(); + + is($patron->can_request_article, 1, 'Patron can request more articles'); + + my $article_request_3 = Koha::ArticleRequest->new( + { + borrowernumber => $patron->id, + biblionumber => $item->biblionumber, + itemnumber => $item->itemnumber, + title => 'an third article request', + } + )->store(); + + is($patron->can_request_article, 0, 'Patron cannot request more articles'); + is($patron->article_requests->count, 2, 'There are 2 article requests'); + + $article_request_3->cancel(); + + is($patron->can_request_article, 1, 'Patron can request more articles'); + + Koha::ArticleRequest->new( + { + borrowernumber => $patron->id, + biblionumber => $item->biblionumber, + itemnumber => $item->itemnumber, + title => 'an fourth article request', + } + )->store(); + + is($patron->can_request_article, 0, 'Patron cannot request more articles'); + is($patron->article_requests->count, 3, 'There are 3 current article requests'); + +}; + $schema->storage->txn_rollback(); -- 2.20.1