From a9f1c3a66f924b7d9162b9471b2e2a6136943ce6 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Thu, 27 Feb 2014 13:12:16 +0100 Subject: [PATCH] Bug 11689: Add unit tests for serials statuses prove t/db_dependent/Serials.t Signed-off-by: Jonathan Druart Signed-off-by: Katrin Fischer Signed-off-by: Galen Charlton --- t/db_dependent/Serials.t | 57 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/t/db_dependent/Serials.t b/t/db_dependent/Serials.t index e9429826bc..a363999cb7 100644 --- a/t/db_dependent/Serials.t +++ b/t/db_dependent/Serials.t @@ -14,7 +14,8 @@ use C4::Debug; use C4::Bookseller; use C4::Biblio; use C4::Budgets; -use Test::More tests => 35; +use Koha::DateUtils; +use Test::More tests => 44; BEGIN { use_ok('C4::Serials'); @@ -180,4 +181,58 @@ is(C4::Serials::check_routing(), undef, 'test checking route'); is(C4::Serials::addroutingmember(),undef, 'test adding route member'); + +# Unit tests for statuses management (Bug 11689) +$subscriptionid = NewSubscription( + undef, "", undef, undef, $budget_id, $biblionumber, + '2013-01-01', $frequency_id, undef, undef, undef, + undef, undef, undef, undef, undef, undef, + 1, "notes",undef, '2013-01-01', undef, $pattern_id, + undef, undef, 0, "intnotes", 0, + undef, undef, 0, undef, '2013-12-31', 0 +); +my $total_issues; +( $total_issues, @serials ) = C4::Serials::GetSerials( $subscriptionid ); +is( $total_issues, 1, "NewSubscription created a first serial" ); +is( @serials, 1, "GetSerials returns the serial" ); +my $subscription = C4::Serials::GetSubscription($subscriptionid); +my $pattern = C4::Serials::Numberpattern::GetSubscriptionNumberpattern($subscription->{numberpattern}); +( $total_issues, @serials ) = C4::Serials::GetSerials( $subscriptionid ); +my $publisheddate = output_pref({ dt => dt_from_string, dateformat => 'iso', dateonly => 1 }); +( $total_issues, @serials ) = C4::Serials::GetSerials( $subscriptionid ); +my $nextpublisheddate = C4::Serials::GetNextDate($subscription, $publisheddate, 1); +my @statuses = qw( 2 2 3 3 3 3 3 4 4 41 42 43 44 5 ); +# Add 14 serials +my $counter = 0; +for my $status ( @statuses ) { + my $serialseq = "No.".$counter; + my ( $expected_serial ) = GetSerials2( $subscriptionid, 1 ); + C4::Serials::ModSerialStatus( $expected_serial->{serialid}, $serialseq, $publisheddate, $publisheddate, $statuses[$counter], 'an useless note' ); + $counter++; +} +# Here we have 15 serials with statuses : 2*2 + 5*3 + 2*4 + 1*41 + 1*42 + 1*43 + 1*44 + 1*5 + 1*1 +( $total_issues, @serials ) = C4::Serials::GetSerials( $subscriptionid ); +is( $total_issues, @statuses + 1, "GetSerials returns total_issues" ); +my @arrived_missing = map { my $status = $_->{status}; ( grep { /^$status$/ } qw( 2 4 41 42 43 44 5 ) ) ? $_ : () } @serials; +my @others = map { my $status = $_->{status}; ( grep { /^$status$/ } qw( 2 4 41 42 43 44 5 ) ) ? () : $_ } @serials; +is( @arrived_missing, 5, "GetSerials returns 5 arrived/missing by default" ); +is( @others, 6, "GetSerials returns all serials not arrived and not missing" ); + +( $total_issues, @serials ) = C4::Serials::GetSerials( $subscriptionid, 10 ); +is( $total_issues, @statuses + 1, "GetSerials returns total_issues" ); +@arrived_missing = map { my $status = $_->{status}; ( grep { /^$status$/ } qw( 2 4 41 42 43 44 5 ) ) ? $_ : () } @serials; +@others = map { my $status = $_->{status}; ( grep { /^$status$/ } qw( 2 4 41 42 43 44 5 ) ) ? () : $_ } @serials; +is( @arrived_missing, 9, "GetSerials returns all arrived/missing if count given" ); +is( @others, 6, "GetSerials returns all serials not arrived and not missing if count given" ); + +$subscription = C4::Serials::GetSubscription($subscriptionid); # Retrieve the updated subscription + +my @serialseqs; +for my $am ( reverse @arrived_missing ) { + if ( grep {/^$am->{status}$/} qw( 4 41 42 43 44 5 ) ) { + push @serialseqs, $am->{serialseq} + } +} +is( $subscription->{missinglist}, 'not issued ' . join('; ', @serialseqs), "subscription missinglist is updated after ModSerialStatus" ); + $dbh->rollback;