From 4b15bf0082f5224838364bb7e5006c4a8a741973 Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Wed, 22 Sep 2021 15:46:26 -0300 Subject: [PATCH] Bug 29083: Unit tests This patch adds missing tests for Koha::Patron->article_requests and moves (and extends) tests for 'article_requests_current' and 'article_requests_finished' that were originally in ArticleRequests.t into Koha/Patron.t as we now do. To test: 1. Apply this patch 2. Run: $ kshell k$ prove t/db_dependent/ArticleRequests.t \ t/db_dependent/Koha/Patron.t => SUCCESS: Tests pass! Signed-off-by: Martin Renvoize Signed-off-by: Nick Clemens --- t/db_dependent/ArticleRequests.t | 27 +------ t/db_dependent/Koha/Patron.t | 119 ++++++++++++++++++++++++++++++- 2 files changed, 120 insertions(+), 26 deletions(-) diff --git a/t/db_dependent/ArticleRequests.t b/t/db_dependent/ArticleRequests.t index 6fa935b0c2..cb25c00b95 100644 --- 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 => 55; +use Test::More tests => 46; use Test::MockModule; use t::lib::TestBuilder; @@ -110,30 +110,7 @@ is( $article_request->biblio->id, $biblio->id, '$ar->biblio() gets correspondi is( $article_request->item->id, $item->id, '$ar->item() gets corresponding Koha::Item object' ); is( $article_request->borrower->id, $patron->id, '$ar->borrower() gets corresponding Koha::Patron object' ); -my $ar = $patron->article_requests(); -is( ref($ar), 'Koha::ArticleRequests', '$patron->article_requests returns Koha::ArticleRequests object' ); -is( $ar->next->id, $article_request->id, 'Returned article request matches' ); - -is( $patron->article_requests_current()->count(), 1, 'Open request returned for article_requests_current' ); -$article_request->process(); -is( $patron->article_requests_current()->count(), 1, 'Processing request returned for article_requests_current' ); -$article_request->complete(); -is( $patron->article_requests_current()->count(), 0, 'Completed request not returned for article_requests_current' ); -$article_request->cancel(); -is( $patron->article_requests_current()->count(), 0, 'Canceled request not returned for article_requests_current' ); - -$article_request->set_pending(); - -is( $patron->article_requests_finished()->count(), 0, 'Open request returned for article_requests_finished' ); -$article_request->process(); -is( $patron->article_requests_finished()->count(), 0, 'Processing request returned for article_requests_finished' ); -$article_request->complete(); -$article_request->cancel(); -is( $patron->article_requests_finished()->count(), 1, 'Canceled request not returned for article_requests_finished' ); - -$article_request->set_pending(); - -$ar = $biblio->article_requests(); +my $ar = $biblio->article_requests(); is( ref($ar), 'Koha::ArticleRequests', '$biblio->article_requests returns Koha::ArticleRequests object' ); is( $ar->next->id, $article_request->id, 'Returned article request matches' ); diff --git a/t/db_dependent/Koha/Patron.t b/t/db_dependent/Koha/Patron.t index b088d2a5b2..b055d21d70 100755 --- a/t/db_dependent/Koha/Patron.t +++ b/t/db_dependent/Koha/Patron.t @@ -19,7 +19,7 @@ use Modern::Perl; -use Test::More tests => 9; +use Test::More tests => 12; use Test::Exception; use Test::Warn; @@ -831,3 +831,120 @@ subtest 'can_request_article() tests' => sub { $schema->storage->txn_rollback; }; + +subtest 'article_requests() tests' => sub { + + plan tests => 3; + + $schema->storage->txn_begin; + + my $patron = $builder->build_object( { class => 'Koha::Patrons' } ); + + my $article_requests = $patron->article_requests; + is( ref($article_requests), 'Koha::ArticleRequests', + 'In scalar context, type is correct' ); + is( $article_requests->count, 0, 'No article requests' ); + + foreach my $i ( 0 .. 3 ) { + + my $item = $builder->build_sample_item; + + Koha::ArticleRequest->new( + { + borrowernumber => $patron->id, + biblionumber => $item->biblionumber, + itemnumber => $item->id, + title => "Title", + } + )->request; + } + + $article_requests = $patron->article_requests; + is( $article_requests->count, 4, '4 article requests' ); + + $schema->storage->txn_rollback; +}; + +subtest 'article_requests_current() tests' => sub { + + plan tests => 7; + + $schema->storage->txn_begin; + + my $patron = $builder->build_object( { class => 'Koha::Patrons' } ); + my $item = $builder->build_sample_item; + + my $article_request = Koha::ArticleRequest->new( + { + borrowernumber => $patron->id, + biblionumber => $item->biblionumber, + itemnumber => $item->itemnumber, + title => "Boo", + } + )->request(); + + my $ar = $patron->article_requests(); + is( ref($ar), 'Koha::ArticleRequests', + '$patron->article_requests returns Koha::ArticleRequests object' ); + is( $ar->next->id, $article_request->id, + 'Returned article request matches' ); + + is( $patron->article_requests_current()->count(), + 1, 'Open request returned for article_requests_current' ); + $article_request->set_pending(); + is( $patron->article_requests_current()->count(), + 1, 'Pending request returned for article_requests_current' ); + $article_request->process(); + is( $patron->article_requests_current()->count(), + 1, 'Processing request returned for article_requests_current' ); + $article_request->complete(); + is( $patron->article_requests_current()->count(), + 0, 'Completed request not returned for article_requests_current' ); + $article_request->cancel(); + is( $patron->article_requests_current()->count(), + 0, 'Canceled request not returned for article_requests_current' ); + + $schema->storage->txn_rollback; +}; + +subtest 'article_requests_finished() tests' => sub { + + plan tests => 7; + + $schema->storage->txn_begin; + + my $patron = $builder->build_object( { class => 'Koha::Patrons' } ); + my $item = $builder->build_sample_item; + + my $article_request = Koha::ArticleRequest->new( + { + borrowernumber => $patron->id, + biblionumber => $item->biblionumber, + itemnumber => $item->itemnumber, + title => "Boo", + } + )->request(); + + my $ar = $patron->article_requests(); + is( ref($ar), 'Koha::ArticleRequests', + '$patron->article_requests returns Koha::ArticleRequests object' ); + is( $ar->next->id, $article_request->id, + 'Returned article request matches' ); + + is( $patron->article_requests_finished->count, + 0, 'Open request returned for article_requests_finished' ); + $article_request->set_pending(); + is( $patron->article_requests_finished->count, + 0, 'Pending request returned for article_requests_finished' ); + $article_request->process(); + is( $patron->article_requests_finished->count, + 0, 'Processing request returned for article_requests_finished' ); + $article_request->complete(); + is( $patron->article_requests_finished->count, + 1, 'Completed request returned for article_requests_finished' ); + $article_request->cancel(); + is( $patron->article_requests_finished->count, + 1, 'Cancelled request not returned for article_requests_finished' ); + + $schema->storage->txn_rollback; +}; -- 2.20.1