4 use Test
::More tests
=> 32;
8 my $schema = Koha
::Database
->new->schema;
9 $schema->storage->txn_begin;
11 use C4
::Serials
::Frequency
;
15 description
=> "One issue per day",
20 my $id = AddSubscriptionFrequency
($frequency);
22 # TEST CASE 1 - 1 variable, from 1 to 4
24 add1
=> 1, add2
=> 0, add3
=> 0,
25 every1
=> 1, every2
=> 0, every3
=> 0,
26 whenmorethan1
=> 4, whenmorethan2
=> 0, whenmorethan3
=> 0,
27 setto1
=> 1, setto2
=> 0, setto3
=> 0,
28 numberingmethod
=> 'X: {X}',
36 firstacquidate
=> '1970-01-01',
37 lastvalue1
=> 1, lastvalue2
=> 1, lastvalue3
=> 1,
38 innerloop1
=> 0, innerloop2
=> 0, innerloop3
=> 0,
40 irregularity
=> '3;5',
41 countissuesperunit
=> 1,
44 my $publisheddate = $subscription->{firstacquidate
};
46 my $seq = _next_seq
($subscription, $pattern, $frequency, $publisheddate);
48 $publisheddate = GetNextDate
($subscription, $publisheddate, $frequency);
49 $seq = _next_seq
($subscription, $pattern, $frequency, $publisheddate);
51 $publisheddate = GetNextDate
($subscription, $publisheddate, $frequency);
52 $seq = _next_seq
($subscription, $pattern, $frequency, $publisheddate);
54 $publisheddate = GetNextDate
($subscription, $publisheddate, $frequency);
55 $seq = _next_seq
($subscription, $pattern, $frequency, $publisheddate);
58 # TEST CASE 2 - 1 variable, use 'dayname' numbering, from 1 to 7
61 firstacquidate
=> '1970-01-01',
62 lastvalue1
=> 1, lastvalue2
=> 1, lastvalue3
=> 1,
63 innerloop1
=> 0, innerloop2
=> 0, innerloop3
=> 0,
65 irregularity
=> '3;4;6',
66 countissuesperunit
=> 1,
70 add1
=> 1, add2
=> 0, add3
=> 0,
71 every1
=> 1, every2
=> 0, every3
=> 0,
72 whenmorethan1
=> 7, whenmorethan2
=> 0, whenmorethan3
=> 0,
73 setto1
=> 1, setto2
=> 0, setto3
=> 0,
74 numberingmethod
=> 'X: {X}',
75 numbering1
=> 'dayname',
80 $publisheddate = $subscription->{firstacquidate
};
82 $seq = _next_seq
($subscription, $pattern, $frequency, $publisheddate);
83 is
($seq, 'X: Tuesday');
84 $publisheddate = GetNextDate
($subscription, $publisheddate, $frequency);
85 $seq = _next_seq
($subscription, $pattern, $frequency, $publisheddate);
86 is
($seq, 'X: Friday');
87 $publisheddate = GetNextDate
($subscription, $publisheddate, $frequency);
88 $seq = _next_seq
($subscription, $pattern, $frequency, $publisheddate);
89 is
($seq, 'X: Sunday');
90 $publisheddate = GetNextDate
($subscription, $publisheddate, $frequency);
91 $seq = _next_seq
($subscription, $pattern, $frequency, $publisheddate);
92 is
($seq, 'X: Monday');
93 $publisheddate = GetNextDate
($subscription, $publisheddate, $frequency);
94 $seq = _next_seq
($subscription, $pattern, $frequency, $publisheddate);
95 is
($seq, 'X: Tuesday');
97 # TEST CASE 3 - 1 variable, use 'monthname' numbering, from 0 to 11 by step of 2
100 firstacquidate
=> '1970-01-01',
101 lastvalue1
=> 0, lastvalue2
=> 1, lastvalue3
=> 1,
102 innerloop1
=> 0, innerloop2
=> 0, innerloop3
=> 0,
104 irregularity
=> '3;4;6',
105 countissuesperunit
=> 1,
109 add1
=> 2, add2
=> 0, add3
=> 0,
110 every1
=> 1, every2
=> 0, every3
=> 0,
111 whenmorethan1
=> 11, whenmorethan2
=> 0, whenmorethan3
=> 0,
112 setto1
=> 0, setto2
=> 0, setto3
=> 0,
113 numberingmethod
=> 'X: {X}',
114 numbering1
=> 'monthname',
119 $publisheddate = $subscription->{firstacquidate
};
121 $seq = _next_seq
($subscription, $pattern, $frequency, $publisheddate);
122 is
($seq, 'X: March');
123 $publisheddate = GetNextDate
($subscription, $publisheddate, $frequency);
124 $seq = _next_seq
($subscription, $pattern, $frequency, $publisheddate);
125 is
($seq, 'X: September');
126 $publisheddate = GetNextDate
($subscription, $publisheddate, $frequency);
127 $seq = _next_seq
($subscription, $pattern, $frequency, $publisheddate);
128 is
($seq, 'X: January');
129 $publisheddate = GetNextDate
($subscription, $publisheddate, $frequency);
130 $seq = _next_seq
($subscription, $pattern, $frequency, $publisheddate);
131 is
($seq, 'X: March');
132 $publisheddate = GetNextDate
($subscription, $publisheddate, $frequency);
133 $seq = _next_seq
($subscription, $pattern, $frequency, $publisheddate);
136 # TEST CASE 4 - 1 variable, use 'season' numbering, from 0 to 3
139 firstacquidate
=> '1970-01-01',
140 lastvalue1
=> 0, lastvalue2
=> 1, lastvalue3
=> 1,
141 innerloop1
=> 0, innerloop2
=> 0, innerloop3
=> 0,
143 irregularity
=> '3;4;6',
144 countissuesperunit
=> 1,
148 add1
=> 1, add2
=> 0, add3
=> 0,
149 every1
=> 1, every2
=> 0, every3
=> 0,
150 whenmorethan1
=> 3, whenmorethan2
=> 0, whenmorethan3
=> 0,
151 setto1
=> 0, setto2
=> 0, setto3
=> 0,
152 numberingmethod
=> 'X: {X}',
153 numbering1
=> 'season',
158 $publisheddate = $subscription->{firstacquidate
};
160 $seq = _next_seq
($subscription, $pattern, $frequency, $publisheddate);
161 is
($seq, 'X: Summer');
162 $publisheddate = GetNextDate
($subscription, $publisheddate, $frequency);
163 $seq = _next_seq
($subscription, $pattern, $frequency, $publisheddate);
164 is
($seq, 'X: Spring');
165 $publisheddate = GetNextDate
($subscription, $publisheddate, $frequency);
166 $seq = _next_seq
($subscription, $pattern, $frequency, $publisheddate);
168 $publisheddate = GetNextDate
($subscription, $publisheddate, $frequency);
169 $seq = _next_seq
($subscription, $pattern, $frequency, $publisheddate);
170 is
($seq, 'X: Winter');
171 $publisheddate = GetNextDate
($subscription, $publisheddate, $frequency);
172 $seq = _next_seq
($subscription, $pattern, $frequency, $publisheddate);
173 is
($seq, 'X: Spring');
175 # TEST CASE 5 - 2 variables, from 1 to 12, and from 1 to 4
178 firstacquidate
=> '1970-01-01',
179 lastvalue1
=> 1, lastvalue2
=> 1, lastvalue3
=> 1,
180 innerloop1
=> 0, innerloop2
=> 0, innerloop3
=> 0,
182 irregularity
=> '3;4;6',
183 countissuesperunit
=> 1,
187 add1
=> 1, add2
=> 1, add3
=> 0,
188 every1
=> 1, every2
=> 4, every3
=> 0,
189 whenmorethan1
=> 4, whenmorethan2
=> 12, whenmorethan3
=> 0,
190 setto1
=> 1, setto2
=> 1, setto3
=> 0,
191 numberingmethod
=> 'Y: {Y}, X: {X}',
197 $publisheddate = $subscription->{firstacquidate
};
199 $seq = _next_seq
($subscription, $pattern, $frequency, $publisheddate);
200 is
($seq, 'Y: 1, X: 2');
201 $publisheddate = GetNextDate
($subscription, $publisheddate, $frequency);
202 $seq = _next_seq
($subscription, $pattern, $frequency, $publisheddate);
203 is
($seq, 'Y: 2, X: 1');
204 $publisheddate = GetNextDate
($subscription, $publisheddate, $frequency);
205 $seq = _next_seq
($subscription, $pattern, $frequency, $publisheddate);
206 is
($seq, 'Y: 2, X: 3');
207 $publisheddate = GetNextDate
($subscription, $publisheddate, $frequency);
208 $seq = _next_seq
($subscription, $pattern, $frequency, $publisheddate);
209 is
($seq, 'Y: 2, X: 4');
210 $publisheddate = GetNextDate
($subscription, $publisheddate, $frequency);
211 $seq = _next_seq
($subscription, $pattern, $frequency, $publisheddate);
212 is
($seq, 'Y: 3, X: 1');
214 # TEST CASE 6 - 3 variables, from 1 to 12, from 1 to 8, and from 1 to 4
217 firstacquidate
=> '1970-01-01',
218 lastvalue1
=> 1, lastvalue2
=> 1, lastvalue3
=> 1,
219 innerloop1
=> 0, innerloop2
=> 0, innerloop3
=> 0,
221 irregularity
=> '3;4;6;110',
222 countissuesperunit
=> 1,
226 add1
=> 1, add2
=> 1, add3
=> 1,
227 every1
=> 1, every2
=> 4, every3
=> 32,
228 whenmorethan1
=> 4, whenmorethan2
=> 8, whenmorethan3
=> 12,
229 setto1
=> 1, setto2
=> 1, setto3
=> 1,
230 numberingmethod
=> 'Z: {Z}, Y: {Y}, X: {X}',
236 $publisheddate = $subscription->{firstacquidate
};
238 $seq = _next_seq
($subscription, $pattern, $frequency, $publisheddate);
239 is
($seq, 'Z: 1, Y: 1, X: 2');
240 $publisheddate = GetNextDate
($subscription, $publisheddate, $frequency);
241 $seq = _next_seq
($subscription, $pattern, $frequency, $publisheddate);
242 is
($seq, 'Z: 1, Y: 2, X: 1');
243 $publisheddate = GetNextDate
($subscription, $publisheddate, $frequency);
244 $seq = _next_seq
($subscription, $pattern, $frequency, $publisheddate);
245 is
($seq, 'Z: 1, Y: 2, X: 3');
246 $publisheddate = GetNextDate
($subscription, $publisheddate, $frequency);
247 $seq = _next_seq
($subscription, $pattern, $frequency, $publisheddate);
248 is
($seq, 'Z: 1, Y: 2, X: 4');
250 $publisheddate = GetNextDate
($subscription, $publisheddate, $frequency);
251 $seq = _next_seq
($subscription, $pattern, $frequency, $publisheddate);
253 $publisheddate = GetNextDate
($subscription, $publisheddate, $frequency);
254 $seq = _next_seq
($subscription, $pattern, $frequency, $publisheddate);
255 is
($seq, 'Z: 4, Y: 4, X: 1');
257 $publisheddate = GetNextDate
($subscription, $publisheddate, $frequency);
258 $seq = _next_seq
($subscription, $pattern, $frequency, $publisheddate);
259 is
($seq, 'Z: 4, Y: 4, X: 3');
260 $publisheddate = GetNextDate
($subscription, $publisheddate, $frequency);
261 $seq = _next_seq
($subscription, $pattern, $frequency, $publisheddate);
262 is
($seq, 'Z: 4, Y: 4, X: 4');
263 $publisheddate = GetNextDate
($subscription, $publisheddate, $frequency);
264 $seq = _next_seq
($subscription, $pattern, $frequency, $publisheddate);
265 is
($seq, 'Z: 4, Y: 5, X: 1');
268 my ($subscription, $pattern, $frequency, $publisheddate) = @_;
270 ($seq, $subscription->{lastvalue1
}, $subscription->{lastvalue2
},
271 $subscription->{lastvalue3
}, $subscription->{innerloop1
},
272 $subscription->{innerloop2
}, $subscription->{innerloop3
}) =
273 GetNextSeq
($subscription, $pattern, $frequency, $publisheddate);