X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=t%2Fdb_dependent%2FSerials%2FGetNextDate.t;h=bcbb76c1ade8ce6c698b720aeb982e84cc477ba1;hb=f1f9c6dc746db9c58ce4eaca10ee9a4a7137c6f4;hp=a0422d7ce4f244d493aacba6e3bbfde2b135e574;hpb=e25f4670f36e53db44931cbbcfb3c5df2125c71a;p=koha-ffzg.git diff --git a/t/db_dependent/Serials/GetNextDate.t b/t/db_dependent/Serials/GetNextDate.t old mode 100644 new mode 100755 index a0422d7ce4..bcbb76c1ad --- a/t/db_dependent/Serials/GetNextDate.t +++ b/t/db_dependent/Serials/GetNextDate.t @@ -19,552 +19,525 @@ my $frequency = { issuesperunit => 1, unitsperissue => 1, }; -my $id = AddSubscriptionFrequency($frequency); my $subscription = { - periodicity => $id, firstacquidate => '1970-01-01', irregularity => '', countissuesperunit => 1, }; my $publisheddate = $subscription->{firstacquidate}; -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-02'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-03'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-04'); # TEST CASE - 1 issue per day, irregularities $subscription = { - periodicity => $id, firstacquidate => '1970-01-01', irregularity => '2;4', # Skip the second and fourth issues countissuesperunit => 1, }; $publisheddate = $subscription->{firstacquidate}; -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-03'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-05'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-06'); # TEST CASE - 2 issues per day, no irregularity -$id = AddSubscriptionFrequency({ +$frequency = { description => "Two issues per day", unit => 'day', issuesperunit => 2, unitsperissue => 1, -}); +}; $subscription = { - periodicity => $id, firstacquidate => '1970-01-01', irregularity => '', countissuesperunit => 1, }; $publisheddate = $subscription->{firstacquidate}; -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-01'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-02'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-02'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-03'); # TEST CASE - 2 issues per day, irregularities $subscription = { - periodicity => $id, firstacquidate => '1970-01-01', irregularity => '3;5;6', countissuesperunit => 1, }; $publisheddate = $subscription->{firstacquidate}; -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-01'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-02'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-04'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-04'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-05'); # TEST CASE - 1 issue every 2 days, no irregularity -$id = AddSubscriptionFrequency({ +$frequency = { description => "one issue every two days", unit => 'day', issuesperunit => 1, unitsperissue => 2, -}); +}; $subscription = { - periodicity => $id, firstacquidate => '1970-01-01', irregularity => '', countissuesperunit => 1, }; $publisheddate = $subscription->{firstacquidate}; -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-03'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-05'); # TEST CASE - 1 issue every 2 days, irregularities $subscription = { - periodicity => $id, firstacquidate => '1970-01-01', irregularity => '3', countissuesperunit => 1, }; $publisheddate = $subscription->{firstacquidate}; -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-03'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-07'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-09'); # TEST CASE - 1 issue per week, no irregularity -$id = AddSubscriptionFrequency({ +$frequency = { description => "one issue per week", unit => 'week', issuesperunit => 1, unitsperissue => 1, -}); +}; $subscription = { - periodicity => $id, firstacquidate => '1970-01-01', irregularity => '', countissuesperunit => 1, }; $publisheddate = $subscription->{firstacquidate}; -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-08'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-15'); # TEST CASE - 1 issue per week, irregularities $subscription = { - periodicity => $id, firstacquidate => '1970-01-01', irregularity => '3', countissuesperunit => 1, }; $publisheddate = $subscription->{firstacquidate}; -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-08'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-22'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-29'); # TEST CASE - 1 issue every 2 weeks, no irregularity -$id = AddSubscriptionFrequency({ +$frequency = { description => "one issue every 2 weeks", unit => 'week', issuesperunit => 1, unitsperissue => 2, -}); +}; $subscription = { - periodicity => $id, firstacquidate => '1970-01-01', irregularity => '', countissuesperunit => 1, }; $publisheddate = $subscription->{firstacquidate}; -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-15'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-29'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-02-12'); # TEST CASE - 1 issue every 2 weeks, irregularities $subscription = { - periodicity => $id, firstacquidate => '1970-01-01', irregularity => '3', countissuesperunit => 1, }; $publisheddate = $subscription->{firstacquidate}; -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-15'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-02-12'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-02-26'); # TEST CASE - 2 issues per week, no irregularity -$id = AddSubscriptionFrequency({ +$frequency = { description => "two issues per week", unit => 'week', issuesperunit => 2, unitsperissue => 1, -}); +}; $subscription = { - periodicity => $id, firstacquidate => '1970-01-01', irregularity => '', countissuesperunit => 1, }; $publisheddate = $subscription->{firstacquidate}; -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-04'); -$publisheddate = GetNextDate($subscription, $publisheddate); +# when more than 1 issue per week, date is automatically set to the same day of +# week as firstacquidate +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-08'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-11'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-15'); # TEST CASE - 2 issues per week, irregularities $subscription = { - periodicity => $id, firstacquidate => '1970-01-01', irregularity => '3;5;6', countissuesperunit => 1, }; $publisheddate = $subscription->{firstacquidate}; -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-04'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-11'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-22'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-25'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-29'); # TEST CASE - 6 issues per week, no irregularity -$id = AddSubscriptionFrequency({ +$frequency = { description => "six issues per week", unit => 'week', issuesperunit => 6, unitsperissue => 1, -}); +}; $subscription = { - periodicity => $id, firstacquidate => '1970-01-06', irregularity => '', countissuesperunit => 1, }; $publisheddate = $subscription->{firstacquidate}; -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-07'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-08'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-09'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-10'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-11'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-13'); # TEST CASE - 6 issues per week, irregularities $subscription = { - periodicity => $id, firstacquidate => '1970-01-06', irregularity => '3;5;6', countissuesperunit => 1, }; $publisheddate = $subscription->{firstacquidate}; -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-07'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-09'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-13'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-01-14'); # TEST CASE - 1 issue per month, no irregularity -$id = AddSubscriptionFrequency({ +$frequency = { description => "1 issue per month", unit => 'month', issuesperunit => 1, unitsperissue => 1, -}); +}; $subscription = { - periodicity => $id, firstacquidate => '1970-01-01', irregularity => '', countissuesperunit => 1, }; $publisheddate = $subscription->{firstacquidate}; -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-02-01'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-03-01'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-04-01'); # TEST CASE - 1 issue per month, irregularities $subscription = { - periodicity => $id, firstacquidate => '1970-01-01', irregularity => '2;4', countissuesperunit => 1, }; $publisheddate = $subscription->{firstacquidate}; -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-03-01'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-05-01'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-06-01'); # TEST CASE - 1 issue every 2 months, no irregularity -$id = AddSubscriptionFrequency({ +$frequency = { description => "1 issue every 2 months", unit => 'month', issuesperunit => 1, unitsperissue => 2, -}); +}; $subscription = { - periodicity => $id, firstacquidate => '1970-01-01', irregularity => '', countissuesperunit => 1, }; $publisheddate = $subscription->{firstacquidate}; -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-03-01'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-05-01'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-07-01'); # TEST CASE - 1 issue every 2 months, irregularities $subscription = { - periodicity => $id, firstacquidate => '1970-01-01', irregularity => '2;3', countissuesperunit => 1, }; $publisheddate = $subscription->{firstacquidate}; -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-07-01'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-09-01'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-11-01'); # TEST CASE - 2 issues per month, no irregularity -$id = AddSubscriptionFrequency({ +$frequency = { description => "2 issues per month", unit => 'month', issuesperunit => 2, unitsperissue => 1, -}); +}; $subscription = { - periodicity => $id, firstacquidate => '1970-01-01', irregularity => '', countissuesperunit => 1, }; $publisheddate = $subscription->{firstacquidate}; -$publisheddate = GetNextDate($subscription, $publisheddate); -is($publisheddate, '1970-01-16', 'Jan 16'); -$publisheddate = GetNextDate($subscription, $publisheddate); -is($publisheddate, '1970-02-01', 'Feb 1'); -$publisheddate = GetNextDate($subscription, $publisheddate); -is($publisheddate, '1970-02-16', 'Feb 16'); -$publisheddate = GetNextDate($subscription, $publisheddate); -is($publisheddate, '1970-03-01', 'Mar 1' ); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); +is($publisheddate, '1970-01-16', 'January has 31 days'); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); +is($publisheddate, '1970-02-01'); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); +is($publisheddate, '1970-02-16', 'February has only 28 days'); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); +is($publisheddate, '1970-03-01'); # TEST CASE - 2 issues per month, irregularities $subscription = { - periodicity => $id, firstacquidate => '1970-01-01', irregularity => '3;5;6', countissuesperunit => 1, }; $publisheddate = $subscription->{firstacquidate}; -$publisheddate = GetNextDate($subscription, $publisheddate); -is($publisheddate, '1970-01-16', 'Jan 16' ); -$publisheddate = GetNextDate($subscription, $publisheddate); -is($publisheddate, '1970-02-16', 'Feb 16 (skipping Feb 1)' ); -$publisheddate = GetNextDate($subscription, $publisheddate); -is($publisheddate, '1970-04-01', 'Apr 1 (skipping Mar 1 and 16)' ); -$publisheddate = GetNextDate($subscription, $publisheddate); -is($publisheddate, '1970-04-16', 'Apr 16' ); -$publisheddate = GetNextDate($subscription, $publisheddate); -is($publisheddate, '1970-05-01', 'May 1' ); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); +is($publisheddate, '1970-01-16', 'January has 31 days'); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); +is($publisheddate, '1970-02-16', 'February has only 28 days'); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); +is($publisheddate, '1970-04-01'); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); +is($publisheddate, '1970-04-16', 'April has 30 days'); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); +is($publisheddate, '1970-05-01'); # TEST CASE - 1 issue per year, no irregularity -$id = AddSubscriptionFrequency({ +$frequency = { description => "1 issue per year", unit => 'year', issuesperunit => 1, unitsperissue => 1, -}); +}; $subscription = { - periodicity => $id, firstacquidate => '1970-01-01', irregularity => '', countissuesperunit => 1, }; $publisheddate = $subscription->{firstacquidate}; -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1971-01-01'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1972-01-01'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1973-01-01'); # TEST CASE - 1 issue per year, irregularities $subscription = { - periodicity => $id, firstacquidate => '1970-01-01', irregularity => '2;4', countissuesperunit => 1, }; $publisheddate = $subscription->{firstacquidate}; -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1972-01-01'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1974-01-01'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1975-01-01'); # TEST CASE - 1 issue every 2 years, no irregularity -$id = AddSubscriptionFrequency({ +$frequency = { description => "1 issue every 2 years", unit => 'year', issuesperunit => 1, unitsperissue => 2, -}); +}; $subscription = { - periodicity => $id, firstacquidate => '1970-01-01', irregularity => '', countissuesperunit => 1, }; $publisheddate = $subscription->{firstacquidate}; -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1972-01-01'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1974-01-01'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1976-01-01'); # TEST CASE - 1 issue every 2 years, irregularities $subscription = { - periodicity => $id, firstacquidate => '1970-01-01', irregularity => '2;4', countissuesperunit => 1, }; $publisheddate = $subscription->{firstacquidate}; -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1974-01-01'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1978-01-01'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1980-01-01'); # Move publisheddate to Feb 29 (leap year 1980) $publisheddate = '1980-02-29'; -$publisheddate = GetNextDate( $subscription, $publisheddate ); +$publisheddate = GetNextDate( $subscription, $publisheddate, $frequency ); is( $publisheddate, '1982-02-28', 'Test +2 year from Feb 29' ); # TEST CASE - 2 issues per year, no irregularity -$id = AddSubscriptionFrequency({ - description => "2 issues per year", +$frequency = { + description => "1 issue every 2 years", unit => 'year', issuesperunit => 2, unitsperissue => 1, -}); +}; $subscription = { - periodicity => $id, firstacquidate => '1970-01-01', irregularity => '', countissuesperunit => 1, }; $publisheddate = $subscription->{firstacquidate}; -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-07-02'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1971-01-01'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1971-07-02'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1972-01-01'); # TEST CASE - 2 issues per year, irregularities $subscription = { - periodicity => $id, firstacquidate => '1970-01-01', irregularity => '3;5;6', countissuesperunit => 1, }; $publisheddate = $subscription->{firstacquidate}; -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1970-07-02'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1971-07-02'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1973-01-01'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1973-07-02'); -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, '1974-01-01'); # TEST CASE - 9 issues per year, dates spread throughout month -$id = AddSubscriptionFrequency({ +$frequency = { description => "9 issues per year", unit => 'year', issuesperunit => 9, unitsperissue => 1, -}); +}; $subscription = { - periodicity => $id, firstacquidate => '1970-08-10', irregularity => '', countissuesperunit => 1, }; my @dates = ( $subscription->{firstacquidate} ); foreach(1..27) { - push @dates, GetNextDate( $subscription, $dates[-1] ); + push @dates, GetNextDate( $subscription, $dates[-1], $frequency ); } is( $dates[9], '1971-08-10', 'Freq 9/yr, 1 year passed' ); is( $dates[18], '1972-08-10', 'Freq 9/yr, 2 years passed (leap year)' ); is( $dates[27], '1973-08-10', 'Freq 9/yr, 3 years passed' ); # Keep (first) position in cycle, but shift back 9 days -is( GetNextDate( $subscription, '1973-08-01' ), '1973-09-10', 'Back 9 days, without annual correction' ); +is( GetNextDate( $subscription, '1973-08-01', $frequency ), '1973-09-10', 'Back 9 days, without annual correction' ); # Set position to last in cycle, and shift back 9 days; annual correction $subscription->{countissuesperunit} = 9; -is( GetNextDate( $subscription, '1973-08-01' ), '1973-09-15', 'Last in cycle, back 9 days, expect annual correction' ); +is( GetNextDate( $subscription, '1973-08-01', $frequency ), '1973-09-15', 'Last in cycle, back 9 days, expect annual correction' ); # TEST CASE - Irregular -$id = AddSubscriptionFrequency({ +$frequency = { description => "Irregular", unit => undef, issuesperunit => 1, unitsperissue => 1, -}); +}; $subscription = { - periodicity => $id, firstacquidate => '1970-01-01', irregularity => '', countissuesperunit => 1, }; $publisheddate = $subscription->{firstacquidate}; # GetNextDate always return undef if subscription is irregular -$publisheddate = GetNextDate($subscription, $publisheddate); +$publisheddate = GetNextDate($subscription, $publisheddate, $frequency); is($publisheddate, undef); # GetNextDate returns undef if one of two first parameters is undef -$publisheddate = GetNextDate($subscription, undef); +$publisheddate = GetNextDate($subscription, undef, $frequency); is($publisheddate, undef); -$publisheddate = GetNextDate(undef, $subscription->{firstacquidate}); +$publisheddate = GetNextDate(undef, $subscription->{firstacquidate}, $frequency); is($publisheddate, undef); -$publisheddate = GetNextDate(undef, undef); +$publisheddate = GetNextDate(undef, undef, $frequency); is($publisheddate, undef); $schema->storage->txn_rollback;