8b94c89f0b
This guess uses the following algorithm 1/ Get the number of days remaining from first issue of this unit of time until the end of the unit of time (using 7 days for week, 28 for month and 365 for year) 2/ Divide it by the number of issues per unit 3/ Take the integer part of the result, this is the number of days to add to previous serial published date This patch also try to guess the date of the first issue of a unit of time. Before that, it was: - for week: monday of week - for month: 1st day of month - for year: 1st day of year Now it uses firstacquidate. Example: firstacquidate = 1970-01-07 (wednesday) unit = week issuesperunit = 2 (2 issues per week) From wednesday to sunday, there are 4 days so we add 2 days to get the next date. The next dates should be: - 1970-01-09 (+ 2 days) - 1970-01-14 (wednesday of next week) - 1970-01-16 (+ 2 days) - ... and so on Test plan: 1/ Go to numbering pattern creation page (Serials -> Manager numbering patterns -> New numbering pattern) 2/ In "Test prediction pattern" fieldset, set subscription length to 50 issues (this avoid to compute the next 1000 dates, which can take time) 3/ Fill first issue publication date 4/ Choose the frequency you want to test 5/ click on "Test pattern" button 6/ Check that the dates are correct 7/ Repeat steps 3-7 until you think you have tested enough cases Interesting frequencies to test: - 1/day - 1/week - 2/week - 6/week (firstacquidate should be monday or tuesday, or the generated dates will be the same for all the week) - 1/month - 2/month - 3/month - 1/year - 2/year - 3/year ---------------- Sign off report: ---------------- -Followed the test plan. Unit tests work. Also trying some more strange frequencies with our librarians: 5/year, 43/year, 10/year. -Received all serials for a subscription and found no errors. -Received some serials with frequency 2/month pre-patch, getting publication date as 1st of every month for each magazine. Having applied the patch, publication dates started working mid-subscription for new magazines. -Works well and fine! Signed-off-by: Olli-Antti Kivilahti <olli-antti.kivilahti@jns.fi> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
541 lines
18 KiB
Perl
541 lines
18 KiB
Perl
#!/usr/bin/perl
|
|
|
|
use C4::Context;
|
|
use Test::More tests => 96;
|
|
use Modern::Perl;
|
|
|
|
my $dbh = C4::Context->dbh;
|
|
$dbh->{RaiseError} = 1;
|
|
$dbh->{AutoCommit} = 0;
|
|
|
|
use C4::Serials::Frequency;
|
|
use C4::Serials;
|
|
|
|
# TEST CASE - 1 issue per day, no irregularities
|
|
my $frequency = {
|
|
description => "One issue per day",
|
|
unit => 'day',
|
|
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);
|
|
is($publisheddate, '1970-01-02');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-01-03');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
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);
|
|
is($publisheddate, '1970-01-03');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-01-05');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-01-06');
|
|
|
|
# TEST CASE - 2 issues per day, no irregularity
|
|
$id = AddSubscriptionFrequency({
|
|
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);
|
|
is($publisheddate, '1970-01-01');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-01-02');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-01-02');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
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);
|
|
is($publisheddate, '1970-01-01');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-01-02');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-01-04');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-01-04');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-01-05');
|
|
|
|
# TEST CASE - 1 issue every 2 days, no irregularity
|
|
$id = AddSubscriptionFrequency({
|
|
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);
|
|
is($publisheddate, '1970-01-03');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
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);
|
|
is($publisheddate, '1970-01-03');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-01-07');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-01-09');
|
|
|
|
# TEST CASE - 1 issue per week, no irregularity
|
|
$id = AddSubscriptionFrequency({
|
|
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);
|
|
is($publisheddate, '1970-01-08');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
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);
|
|
is($publisheddate, '1970-01-08');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-01-22');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-01-29');
|
|
|
|
# TEST CASE - 1 issue every 2 weeks, no irregularity
|
|
$id = AddSubscriptionFrequency({
|
|
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);
|
|
is($publisheddate, '1970-01-15');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-01-29');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
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);
|
|
is($publisheddate, '1970-01-15');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-02-12');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-02-26');
|
|
|
|
# TEST CASE - 2 issues per week, no irregularity
|
|
$id = AddSubscriptionFrequency({
|
|
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);
|
|
is($publisheddate, '1970-01-03');
|
|
# when more than 1 issue per week, date is automatically set to the same day of
|
|
# week as firstacquidate
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-01-08');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-01-10');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
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);
|
|
is($publisheddate, '1970-01-03');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-01-10');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-01-22');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-01-24');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-01-29');
|
|
|
|
# TEST CASE - 6 issues per week, no irregularity
|
|
$id = AddSubscriptionFrequency({
|
|
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);
|
|
is($publisheddate, '1970-01-07');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-01-08');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-01-09');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-01-10');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-01-11');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
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);
|
|
is($publisheddate, '1970-01-07');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-01-09');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-01-13');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-01-14');
|
|
|
|
# TEST CASE - 1 issue per month, no irregularity
|
|
$id = AddSubscriptionFrequency({
|
|
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);
|
|
is($publisheddate, '1970-02-01');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-03-01');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
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);
|
|
is($publisheddate, '1970-03-01');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-05-01');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-06-01');
|
|
|
|
# TEST CASE - 1 issue every 2 months, no irregularity
|
|
$id = AddSubscriptionFrequency({
|
|
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);
|
|
is($publisheddate, '1970-03-01');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-05-01');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
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);
|
|
is($publisheddate, '1970-07-01');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-09-01');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-11-01');
|
|
|
|
# TEST CASE - 2 issues per month, no irregularity
|
|
$id = AddSubscriptionFrequency({
|
|
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-15');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-02-01');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-02-15');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
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-15');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-02-15');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-04-01');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-04-15');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1970-05-01');
|
|
|
|
# TEST CASE - 1 issue per year, no irregularity
|
|
$id = AddSubscriptionFrequency({
|
|
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);
|
|
is($publisheddate, '1971-01-01');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1972-01-01');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
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);
|
|
is($publisheddate, '1972-01-01');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1974-01-01');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1975-01-01');
|
|
|
|
# TEST CASE - 1 issue every 2 years, no irregularity
|
|
$id = AddSubscriptionFrequency({
|
|
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);
|
|
is($publisheddate, '1972-01-01');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1974-01-01');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
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);
|
|
is($publisheddate, '1974-01-01');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1978-01-01');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1980-01-01');
|
|
|
|
# TEST CASE - 2 issues per year, no irregularity
|
|
$id = AddSubscriptionFrequency({
|
|
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);
|
|
is($publisheddate, '1970-07-02');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1971-01-01');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1971-07-02');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
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);
|
|
is($publisheddate, '1970-07-02');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1971-07-02');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1973-01-01');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1973-07-02');
|
|
$publisheddate = GetNextDate($subscription, $publisheddate);
|
|
is($publisheddate, '1974-01-01');
|
|
|
|
# TEST CASE - Irregular
|
|
$id = AddSubscriptionFrequency({
|
|
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);
|
|
is($publisheddate, undef);
|
|
|
|
# GetNextDate returns undef if one of two first parameters is undef
|
|
$publisheddate = GetNextDate($subscription, undef);
|
|
is($publisheddate, undef);
|
|
$publisheddate = GetNextDate(undef, $subscription->{firstacquidate});
|
|
is($publisheddate, undef);
|
|
$publisheddate = GetNextDate(undef, undef);
|
|
is($publisheddate, undef);
|
|
|
|
$dbh->rollback;
|