X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=t%2Fdb_dependent%2FSerials.t;h=ab466e6c391c983bf16ece17894004372ff1ed6a;hb=bcf27a9cf0f80654f134621c17cdf4adef5987f3;hp=64fc4e766315253904e995debc23f64351276e4a;hpb=d93ec41012fb7c30effecb66eab41c6c14805c29;p=koha_fer diff --git a/t/db_dependent/Serials.t b/t/db_dependent/Serials.t index 64fc4e7663..ab466e6c39 100644 --- a/t/db_dependent/Serials.t +++ b/t/db_dependent/Serials.t @@ -9,14 +9,73 @@ use YAML; use CGI; use C4::Serials; use C4::Serials::Frequency; +use C4::Serials::Numberpattern; use C4::Debug; -use Test::More tests => 35; +use C4::Bookseller; +use C4::Biblio; +use C4::Budgets; +use Koha::DateUtils; +use Test::More tests => 44; BEGIN { use_ok('C4::Serials'); } -my $subscriptionid = 1; +my $dbh = C4::Context->dbh; + +# Start transaction +$dbh->{AutoCommit} = 0; +$dbh->{RaiseError} = 1; + +my $booksellerid = C4::Bookseller::AddBookseller( + { + name => "my vendor", + address1 => "bookseller's address", + phone => "0123456", + active => 1 + } +); + +my ($biblionumber, $biblioitemnumber) = AddBiblio(MARC::Record->new, ''); + +my $budgetid; +my $bpid = AddBudgetPeriod({ + budget_period_startdate => '01-01-2015', + budget_period_enddate => '31-12-2015', + budget_description => "budget desc" +}); + +my $budget_id = AddBudget({ + budget_code => "ABCD", + budget_amount => "123.132", + budget_name => "Périodiques", + budget_notes => "This is a note", + budget_description => "Serials", + budget_active => 1, + budget_period_id => $bpid +}); + +my $frequency_id = AddSubscriptionFrequency({ description => "Test frequency 1" }); +my $pattern_id = AddSubscriptionNumberpattern({ + label => 'Test numberpattern 1', + numberingmethod => '{X}', + label1 => q{}, + add1 => 1, + every1 => 1, + every1 => 1, + numbering1 => 1, + whenmorethan1 => 1, +}); + +my $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 $subscriptioninformation = GetSubscription( $subscriptionid ); my @subscriptions = GetSubscriptions( $$subscriptioninformation{bibliotitle} ); @@ -52,7 +111,7 @@ if (not $frequency->{unit}) { )} ); } my $expirationdate = GetExpirationDate($subscriptionid) ; -ok( $expirationdate, "not NULL" ); +ok( $expirationdate, "expiration date is not NULL" ); is(C4::Serials::GetLateIssues(), undef, 'test getting late issues'); @@ -127,3 +186,61 @@ is(C4::Serials::getsupplierbyserialid(),undef, 'test getting supplier idea'); 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 ( @arrived_missing ) { + if ( grep {/^$am->{status}$/} qw( 4 41 42 43 44 ) ) { + push @serialseqs, $am->{serialseq} + } elsif ( grep {/^$am->{status}$/} qw( 5 ) ) { + push @serialseqs, 'not issued ' . $am->{serialseq}; + } +} +is( $subscription->{missinglist}, join('; ', @serialseqs), "subscription missinglist is updated after ModSerialStatus" ); + +$dbh->rollback;