Bug 17047: subscriptions management with Mana-KB
[koha.git] / t / db_dependent / Serials / GetFictiveIssueNumber.t
1 #!/usr/bin/perl
2
3 use C4::Context;
4 use Test::More tests => 18;
5 use Modern::Perl;
6
7 my $dbh = C4::Context->dbh;
8 $dbh->{RaiseError} = 1;
9 $dbh->{AutoCommit} = 0;
10
11 use C4::Serials::Frequency;
12 use C4::Serials;
13
14 # TEST CASE - 1 issue per day, no irregularities
15 my $frequency = {
16     description   => "One issue per day",
17     unit          => 'day',
18     issuesperunit => 1,
19     unitsperissue => 1,
20 };
21
22 my $subscription = {
23     firstacquidate     => '1970-01-01',
24     irregularity       => '',
25     countissuesperunit => 1,
26 };
27 my $issueNumber;
28
29 $issueNumber =
30   C4::Serials::GetFictiveIssueNumber( $subscription, '1970-01-01', $frequency );
31 is( $issueNumber, '1' );
32
33 $issueNumber =
34   C4::Serials::GetFictiveIssueNumber( $subscription, '1970-01-02', $frequency );
35 is( $issueNumber, '2' );
36 $issueNumber =
37   C4::Serials::GetFictiveIssueNumber( $subscription, '1970-01-03', $frequency );
38 is( $issueNumber, '3' );
39
40 # TEST CASE - 2 issues per day, no irregularity
41 $frequency = {
42     description   => "Two issues per day",
43     unit          => 'day',
44     issuesperunit => 2,
45     unitsperissue => 1,
46 };
47 $subscription = {
48     firstacquidate     => '1970-01-01',
49     irregularity       => '',
50     countissuesperunit => 1,
51 };
52 $issueNumber =
53   C4::Serials::GetFictiveIssueNumber( $subscription, '1970-01-01', $frequency );
54 is( $issueNumber, '1' );
55 $issueNumber =
56   C4::Serials::GetFictiveIssueNumber( $subscription, '1970-01-02', $frequency );
57 is( $issueNumber, '3' );
58 $issueNumber =
59   C4::Serials::GetFictiveIssueNumber( $subscription, '1970-01-03', $frequency );
60 is( $issueNumber, '5' );
61
62 $subscription->{countissuesperunit} = 2;
63 $issueNumber =
64   C4::Serials::GetFictiveIssueNumber( $subscription, '1970-01-01', $frequency );
65 is( $issueNumber, '2' );
66 $issueNumber =
67   C4::Serials::GetFictiveIssueNumber( $subscription, '1970-01-02', $frequency );
68 is( $issueNumber, '4' );
69 $issueNumber =
70   C4::Serials::GetFictiveIssueNumber( $subscription, '1970-01-03', $frequency );
71 is( $issueNumber, '6' );
72
73 # TEST CASE - 1 issue every 2 days, no irregularity
74 $frequency = {
75     description   => "one issue every two days",
76     unit          => 'day',
77     issuesperunit => 1,
78     unitsperissue => 2,
79 };
80 $subscription = {
81     firstacquidate     => '1970-01-01',
82     irregularity       => '',
83     countissuesperunit => 1,
84 };
85 $issueNumber =
86   C4::Serials::GetFictiveIssueNumber( $subscription, '1970-01-01', $frequency );
87 is( $issueNumber, 1 );
88 $issueNumber =
89   C4::Serials::GetFictiveIssueNumber( $subscription, '1970-01-02', $frequency );
90 is( $issueNumber, 1 );
91 $issueNumber =
92   C4::Serials::GetFictiveIssueNumber( $subscription, '1970-01-03', $frequency );
93 is( $issueNumber, 2 );
94 $issueNumber =
95   C4::Serials::GetFictiveIssueNumber( $subscription, '1970-01-04', $frequency );
96 is( $issueNumber, 2 );
97 $issueNumber =
98   C4::Serials::GetFictiveIssueNumber( $subscription, '1970-01-05', $frequency );
99 is( $issueNumber, 3 );
100
101 # TEST CASE - 1 issue per week, no irregularity
102 $frequency = {
103     description   => "one issue per week",
104     unit          => 'week',
105     issuesperunit => 1,
106     unitsperissue => 1,
107 };
108 $subscription = {
109     firstacquidate     => '1970-01-01',
110     irregularity       => '',
111     countissuesperunit => 1,
112 };
113 $issueNumber =
114   C4::Serials::GetFictiveIssueNumber( $subscription, '1970-01-01', $frequency );
115 is( $issueNumber, 1 );
116 $issueNumber =
117   C4::Serials::GetFictiveIssueNumber( $subscription, '1970-01-02', $frequency );
118 is( $issueNumber, 1 );
119 $issueNumber =
120   C4::Serials::GetFictiveIssueNumber( $subscription, '1970-01-08', $frequency );
121 is( $issueNumber, 2 );
122 $issueNumber =
123   C4::Serials::GetFictiveIssueNumber( $subscription, '1970-01-15', $frequency );
124 is( $issueNumber, 3 );
125
126 $dbh->rollback;