From 40404451cf19617ff4e3858a2c60dd1401855b58 Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Wed, 22 Sep 2021 16:11:14 -0300 Subject: [PATCH] Bug 29084: Unit tests This patch adds missing tests for Koha::Biblio->article_requests and reorganizes (and extends) the tests for 'article_requests_current' and 'article_requests_finished' that were originally in ArticleRequests.t into Koha/Biblio.t as we do now. To test: 1. Apply this patch 2. Run: $ kshell k$ prove t/db_dependent/ArticleRequests.t \ t/db_dependent/Koha/Biblio.t => SUCCESS: Tests pass! Signed-off-by: Tomas Cohen Arazi Signed-off-by: Martin Renvoize --- t/db_dependent/ArticleRequests.t | 24 +----- t/db_dependent/Koha/Biblio.t | 122 ++++++++++++++++++++++++++++++- 2 files changed, 122 insertions(+), 24 deletions(-) diff --git a/t/db_dependent/ArticleRequests.t b/t/db_dependent/ArticleRequests.t index acc5704121..c1e16d9424 100755 --- 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 => 45; +use Test::More tests => 36; use Test::MockModule; use t::lib::TestBuilder; @@ -110,28 +110,6 @@ 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 = $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' ); - -is( $biblio->article_requests_current()->count(), 1, 'Open request returned for article_requests_current' ); -$article_request->process(); -is( $biblio->article_requests_current()->count(), 1, 'Processing request returned for article_requests_current' ); -$article_request->complete(); -is( $biblio->article_requests_current()->count(), 0, 'Completed request not returned for article_requests_current' ); -$article_request->cancel(); -is( $biblio->article_requests_current()->count(), 0, 'Canceled request not returned for article_requests_current' ); - -$article_request->status(Koha::ArticleRequest::Status::Pending); -$article_request->store(); - -is( $biblio->article_requests_finished()->count(), 0, 'Open request returned for article_requests_finished' ); -$article_request->process(); -is( $biblio->article_requests_finished()->count(), 0, 'Processing request returned for article_requests_finished' ); -$article_request->complete(); -$article_request->cancel(); -is( $biblio->article_requests_finished()->count(), 1, 'Canceled request not returned for article_requests_finished' ); - my $rule = Koha::CirculationRules->set_rule( { categorycode => undef, diff --git a/t/db_dependent/Koha/Biblio.t b/t/db_dependent/Koha/Biblio.t index a9ed0ad98d..ce16b9bd3a 100755 --- a/t/db_dependent/Koha/Biblio.t +++ b/t/db_dependent/Koha/Biblio.t @@ -17,7 +17,7 @@ use Modern::Perl; -use Test::More tests => 15; +use Test::More tests => 18; use C4::Biblio qw( AddBiblio ModBiblio ); use Koha::Database; @@ -690,3 +690,123 @@ subtest 'host_items() tests' => sub { $schema->storage->txn_rollback; }; + +subtest 'article_requests() tests' => sub { + + plan tests => 3; + + $schema->storage->txn_begin; + + my $item = $builder->build_sample_item; + my $biblio = $item->biblio; + + my $article_requests = $biblio->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 $patron = $builder->build_object( { class => 'Koha::Patrons' } ); + + Koha::ArticleRequest->new( + { + borrowernumber => $patron->id, + biblionumber => $biblio->id, + itemnumber => $item->id, + title => $biblio->title, + } + )->request; + } + + $article_requests = $biblio->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 $biblio = $item->biblio; + + my $article_request = Koha::ArticleRequest->new( + { + borrowernumber => $patron->id, + biblionumber => $biblio->id, + itemnumber => $item->id, + title => $biblio->title, + } + )->request(); + + 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' ); + + is( $biblio->article_requests_current()->count(), + 1, 'Open request returned for article_requests_current' ); + $article_request->set_pending(); + is( $biblio->article_requests_current()->count(), + 1, 'Pending request returned for article_requests_current' ); + $article_request->process(); + is( $biblio->article_requests_current()->count(), + 1, 'Processing request returned for article_requests_current' ); + $article_request->complete(); + is( $biblio->article_requests_current()->count(), + 0, 'Completed request not returned for article_requests_current' ); + $article_request->cancel(); + is( $biblio->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 $biblio = $item->biblio; + + my $article_request = Koha::ArticleRequest->new( + { + borrowernumber => $patron->id, + biblionumber => $biblio->id, + itemnumber => $item->id, + title => $biblio->title, + } + )->request(); + + 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' ); + + is( $biblio->article_requests_finished->count, + 0, 'Open request returned for article_requests_finished' ); + $article_request->set_pending(); + is( $biblio->article_requests_finished->count, + 0, 'Pending request returned for article_requests_finished' ); + $article_request->process(); + is( $biblio->article_requests_finished->count, + 0, 'Processing request returned for article_requests_finished' ); + $article_request->complete(); + is( $biblio->article_requests_finished->count, + 1, 'Completed request returned for article_requests_finished' ); + $article_request->cancel(); + is( $biblio->article_requests_finished->count, + 1, 'Cancelled request not returned for article_requests_finished' ); + + $schema->storage->txn_rollback; +}; -- 2.32.0