@@ -, +, @@ $ kshell k$ prove t/db_dependent/ArticleRequests.t \ t/db_dependent/Koha/Biblio.t --- t/db_dependent/ArticleRequests.t | 24 +----- t/db_dependent/Koha/Biblio.t | 122 ++++++++++++++++++++++++++++++- 2 files changed, 122 insertions(+), 24 deletions(-) --- a/t/db_dependent/ArticleRequests.t +++ a/t/db_dependent/ArticleRequests.t @@ -19,7 +19,7 @@ use Modern::Perl; use POSIX qw(strftime); -use Test::More tests => 46; +use Test::More tests => 37; 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, --- a/t/db_dependent/Koha/Biblio.t +++ a/t/db_dependent/Koha/Biblio.t @@ -17,7 +17,7 @@ use Modern::Perl; -use Test::More tests => 14; +use Test::More tests => 17; use C4::Biblio qw( AddBiblio ModBiblio ); use Koha::Database; @@ -637,3 +637,123 @@ subtest 'get_marc_notes() UNIMARC 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; +}; --