Line 0
Link Here
|
0 |
- |
1 |
#!/usr/bin/perl |
|
|
2 |
|
3 |
use C4::Context; |
4 |
use Test::More tests => 84; |
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 - 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 |
my $id = AddSubscriptionFrequency($frequency); |
22 |
|
23 |
my $subscription = { |
24 |
periodicity => $id, |
25 |
firstacquidate => '1970-01-01', |
26 |
irregularity => '', |
27 |
countissuesperunit => 1, |
28 |
}; |
29 |
my $publisheddate = $subscription->{firstacquidate}; |
30 |
|
31 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
32 |
is($publisheddate, '1970-01-02'); |
33 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
34 |
is($publisheddate, '1970-01-03'); |
35 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
36 |
is($publisheddate, '1970-01-04'); |
37 |
|
38 |
# TEST CASE 2 - 1 issue per day, irregularities |
39 |
$subscription = { |
40 |
periodicity => $id, |
41 |
firstacquidate => '1970-01-01', |
42 |
irregularity => '2;4', # Skip the second and fourth issues |
43 |
countissuesperunit => 1, |
44 |
}; |
45 |
$publisheddate = $subscription->{firstacquidate}; |
46 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
47 |
is($publisheddate, '1970-01-03'); |
48 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
49 |
is($publisheddate, '1970-01-05'); |
50 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
51 |
is($publisheddate, '1970-01-06'); |
52 |
|
53 |
# TEST CASE 3 - 2 issues per day, no irregularity |
54 |
$id = AddSubscriptionFrequency({ |
55 |
description => "Two issues per day", |
56 |
unit => 'day', |
57 |
issuesperunit => 2, |
58 |
unitsperissue => 1, |
59 |
}); |
60 |
$subscription = { |
61 |
periodicity => $id, |
62 |
firstacquidate => '1970-01-01', |
63 |
irregularity => '', |
64 |
countissuesperunit => 1, |
65 |
}; |
66 |
$publisheddate = $subscription->{firstacquidate}; |
67 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
68 |
is($publisheddate, '1970-01-01'); |
69 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
70 |
is($publisheddate, '1970-01-02'); |
71 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
72 |
is($publisheddate, '1970-01-02'); |
73 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
74 |
is($publisheddate, '1970-01-03'); |
75 |
|
76 |
# TEST CASE 4 - 2 issues per day, irregularities |
77 |
$subscription = { |
78 |
periodicity => $id, |
79 |
firstacquidate => '1970-01-01', |
80 |
irregularity => '3;5;6', |
81 |
countissuesperunit => 1, |
82 |
}; |
83 |
$publisheddate = $subscription->{firstacquidate}; |
84 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
85 |
is($publisheddate, '1970-01-01'); |
86 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
87 |
is($publisheddate, '1970-01-02'); |
88 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
89 |
is($publisheddate, '1970-01-04'); |
90 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
91 |
is($publisheddate, '1970-01-04'); |
92 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
93 |
is($publisheddate, '1970-01-05'); |
94 |
|
95 |
# TEST CASE 5 - 1 issue every 2 days, no irregularity |
96 |
$id = AddSubscriptionFrequency({ |
97 |
description => "one issue every two days", |
98 |
unit => 'day', |
99 |
issuesperunit => 1, |
100 |
unitsperissue => 2, |
101 |
}); |
102 |
$subscription = { |
103 |
periodicity => $id, |
104 |
firstacquidate => '1970-01-01', |
105 |
irregularity => '', |
106 |
countissuesperunit => 1, |
107 |
}; |
108 |
$publisheddate = $subscription->{firstacquidate}; |
109 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
110 |
is($publisheddate, '1970-01-03'); |
111 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
112 |
is($publisheddate, '1970-01-05'); |
113 |
|
114 |
# TEST CASE 6 - 1 issue every 2 days, irregularities |
115 |
$subscription = { |
116 |
periodicity => $id, |
117 |
firstacquidate => '1970-01-01', |
118 |
irregularity => '3', |
119 |
countissuesperunit => 1, |
120 |
}; |
121 |
$publisheddate = $subscription->{firstacquidate}; |
122 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
123 |
is($publisheddate, '1970-01-03'); |
124 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
125 |
is($publisheddate, '1970-01-07'); |
126 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
127 |
is($publisheddate, '1970-01-09'); |
128 |
|
129 |
# TEST CASE 7 - 1 issue per week, no irregularity |
130 |
$id = AddSubscriptionFrequency({ |
131 |
description => "one issue per week", |
132 |
unit => 'week', |
133 |
issuesperunit => 1, |
134 |
unitsperissue => 1, |
135 |
}); |
136 |
$subscription = { |
137 |
periodicity => $id, |
138 |
firstacquidate => '1970-01-01', |
139 |
irregularity => '', |
140 |
countissuesperunit => 1, |
141 |
}; |
142 |
$publisheddate = $subscription->{firstacquidate}; |
143 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
144 |
is($publisheddate, '1970-01-08'); |
145 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
146 |
is($publisheddate, '1970-01-15'); |
147 |
|
148 |
# TEST CASE 8 - 1 issue per week, irregularities |
149 |
$subscription = { |
150 |
periodicity => $id, |
151 |
firstacquidate => '1970-01-01', |
152 |
irregularity => '3', |
153 |
countissuesperunit => 1, |
154 |
}; |
155 |
$publisheddate = $subscription->{firstacquidate}; |
156 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
157 |
is($publisheddate, '1970-01-08'); |
158 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
159 |
is($publisheddate, '1970-01-22'); |
160 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
161 |
is($publisheddate, '1970-01-29'); |
162 |
|
163 |
# TEST CASE 9 - 1 issue every 2 weeks, no irregularity |
164 |
$id = AddSubscriptionFrequency({ |
165 |
description => "one issue every 2 weeks", |
166 |
unit => 'week', |
167 |
issuesperunit => 1, |
168 |
unitsperissue => 2, |
169 |
}); |
170 |
$subscription = { |
171 |
periodicity => $id, |
172 |
firstacquidate => '1970-01-01', |
173 |
irregularity => '', |
174 |
countissuesperunit => 1, |
175 |
}; |
176 |
$publisheddate = $subscription->{firstacquidate}; |
177 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
178 |
is($publisheddate, '1970-01-15'); |
179 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
180 |
is($publisheddate, '1970-01-29'); |
181 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
182 |
is($publisheddate, '1970-02-12'); |
183 |
|
184 |
# TEST CASE 10 - 1 issue every 2 weeks, irregularities |
185 |
$subscription = { |
186 |
periodicity => $id, |
187 |
firstacquidate => '1970-01-01', |
188 |
irregularity => '3', |
189 |
countissuesperunit => 1, |
190 |
}; |
191 |
$publisheddate = $subscription->{firstacquidate}; |
192 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
193 |
is($publisheddate, '1970-01-15'); |
194 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
195 |
is($publisheddate, '1970-02-12'); |
196 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
197 |
is($publisheddate, '1970-02-26'); |
198 |
|
199 |
# TEST CASE 11 - 2 issues per week, no irregularity |
200 |
$id = AddSubscriptionFrequency({ |
201 |
description => "two issues per week", |
202 |
unit => 'week', |
203 |
issuesperunit => 2, |
204 |
unitsperissue => 1, |
205 |
}); |
206 |
$subscription = { |
207 |
periodicity => $id, |
208 |
firstacquidate => '1970-01-01', |
209 |
irregularity => '', |
210 |
countissuesperunit => 1, |
211 |
}; |
212 |
$publisheddate = $subscription->{firstacquidate}; |
213 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
214 |
is($publisheddate, '1970-01-01'); |
215 |
# when more than 1 issue per week, date is automatically set to monday |
216 |
# because we can't guess the right day |
217 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
218 |
is($publisheddate, '1970-01-05'); |
219 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
220 |
is($publisheddate, '1970-01-05'); |
221 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
222 |
is($publisheddate, '1970-01-12'); |
223 |
|
224 |
# TEST CASE 12 - 2 issues per week, irregularities |
225 |
$subscription = { |
226 |
periodicity => $id, |
227 |
firstacquidate => '1970-01-01', |
228 |
irregularity => '3;5;6', |
229 |
countissuesperunit => 1, |
230 |
}; |
231 |
$publisheddate = $subscription->{firstacquidate}; |
232 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
233 |
is($publisheddate, '1970-01-01'); |
234 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
235 |
is($publisheddate, '1970-01-05'); |
236 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
237 |
is($publisheddate, '1970-01-19'); |
238 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
239 |
is($publisheddate, '1970-01-19'); |
240 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
241 |
is($publisheddate, '1970-01-26'); |
242 |
|
243 |
# TEST CASE 13 - 1 issue per month, no irregularity |
244 |
$id = AddSubscriptionFrequency({ |
245 |
description => "1 issue per month", |
246 |
unit => 'month', |
247 |
issuesperunit => 1, |
248 |
unitsperissue => 1, |
249 |
}); |
250 |
$subscription = { |
251 |
periodicity => $id, |
252 |
firstacquidate => '1970-01-01', |
253 |
irregularity => '', |
254 |
countissuesperunit => 1, |
255 |
}; |
256 |
$publisheddate = $subscription->{firstacquidate}; |
257 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
258 |
is($publisheddate, '1970-02-01'); |
259 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
260 |
is($publisheddate, '1970-03-01'); |
261 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
262 |
is($publisheddate, '1970-04-01'); |
263 |
|
264 |
# TEST CASE 14 - 1 issue per month, irregularities |
265 |
$subscription = { |
266 |
periodicity => $id, |
267 |
firstacquidate => '1970-01-01', |
268 |
irregularity => '2;4', |
269 |
countissuesperunit => 1, |
270 |
}; |
271 |
$publisheddate = $subscription->{firstacquidate}; |
272 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
273 |
is($publisheddate, '1970-03-01'); |
274 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
275 |
is($publisheddate, '1970-05-01'); |
276 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
277 |
is($publisheddate, '1970-06-01'); |
278 |
|
279 |
# TEST CASE 15 - 1 issue every 2 months, no irregularity |
280 |
$id = AddSubscriptionFrequency({ |
281 |
description => "1 issue every 2 months", |
282 |
unit => 'month', |
283 |
issuesperunit => 1, |
284 |
unitsperissue => 2, |
285 |
}); |
286 |
$subscription = { |
287 |
periodicity => $id, |
288 |
firstacquidate => '1970-01-01', |
289 |
irregularity => '', |
290 |
countissuesperunit => 1, |
291 |
}; |
292 |
$publisheddate = $subscription->{firstacquidate}; |
293 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
294 |
is($publisheddate, '1970-03-01'); |
295 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
296 |
is($publisheddate, '1970-05-01'); |
297 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
298 |
is($publisheddate, '1970-07-01'); |
299 |
|
300 |
# TEST CASE 16 - 1 issue every 2 months, irregularities |
301 |
$subscription = { |
302 |
periodicity => $id, |
303 |
firstacquidate => '1970-01-01', |
304 |
irregularity => '2;3', |
305 |
countissuesperunit => 1, |
306 |
}; |
307 |
$publisheddate = $subscription->{firstacquidate}; |
308 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
309 |
is($publisheddate, '1970-07-01'); |
310 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
311 |
is($publisheddate, '1970-09-01'); |
312 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
313 |
is($publisheddate, '1970-11-01'); |
314 |
|
315 |
# TEST CASE 17 - 2 issues per month, no irregularity |
316 |
$id = AddSubscriptionFrequency({ |
317 |
description => "2 issues per month", |
318 |
unit => 'month', |
319 |
issuesperunit => 2, |
320 |
unitsperissue => 1, |
321 |
}); |
322 |
$subscription = { |
323 |
periodicity => $id, |
324 |
firstacquidate => '1970-01-01', |
325 |
irregularity => '', |
326 |
countissuesperunit => 1, |
327 |
}; |
328 |
$publisheddate = $subscription->{firstacquidate}; |
329 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
330 |
is($publisheddate, '1970-01-01'); |
331 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
332 |
is($publisheddate, '1970-02-01'); |
333 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
334 |
is($publisheddate, '1970-02-01'); |
335 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
336 |
is($publisheddate, '1970-03-01'); |
337 |
|
338 |
# TEST CASE 18 - 2 issues per month, irregularities |
339 |
$subscription = { |
340 |
periodicity => $id, |
341 |
firstacquidate => '1970-01-01', |
342 |
irregularity => '3;5;6', |
343 |
countissuesperunit => 1, |
344 |
}; |
345 |
$publisheddate = $subscription->{firstacquidate}; |
346 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
347 |
is($publisheddate, '1970-01-01'); |
348 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
349 |
is($publisheddate, '1970-02-01'); |
350 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
351 |
is($publisheddate, '1970-04-01'); |
352 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
353 |
is($publisheddate, '1970-04-01'); |
354 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
355 |
is($publisheddate, '1970-05-01'); |
356 |
|
357 |
# TEST CASE 19 - 1 issue per year, no irregularity |
358 |
$id = AddSubscriptionFrequency({ |
359 |
description => "1 issue per year", |
360 |
unit => 'year', |
361 |
issuesperunit => 1, |
362 |
unitsperissue => 1, |
363 |
}); |
364 |
$subscription = { |
365 |
periodicity => $id, |
366 |
firstacquidate => '1970-01-01', |
367 |
irregularity => '', |
368 |
countissuesperunit => 1, |
369 |
}; |
370 |
$publisheddate = $subscription->{firstacquidate}; |
371 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
372 |
is($publisheddate, '1971-01-01'); |
373 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
374 |
is($publisheddate, '1972-01-01'); |
375 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
376 |
is($publisheddate, '1973-01-01'); |
377 |
|
378 |
# TEST CASE 20 - 1 issue per year, irregularities |
379 |
$subscription = { |
380 |
periodicity => $id, |
381 |
firstacquidate => '1970-01-01', |
382 |
irregularity => '2;4', |
383 |
countissuesperunit => 1, |
384 |
}; |
385 |
$publisheddate = $subscription->{firstacquidate}; |
386 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
387 |
is($publisheddate, '1972-01-01'); |
388 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
389 |
is($publisheddate, '1974-01-01'); |
390 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
391 |
is($publisheddate, '1975-01-01'); |
392 |
|
393 |
# TEST CASE 21 - 1 issue every 2 years, no irregularity |
394 |
$id = AddSubscriptionFrequency({ |
395 |
description => "1 issue every 2 years", |
396 |
unit => 'year', |
397 |
issuesperunit => 1, |
398 |
unitsperissue => 2, |
399 |
}); |
400 |
$subscription = { |
401 |
periodicity => $id, |
402 |
firstacquidate => '1970-01-01', |
403 |
irregularity => '', |
404 |
countissuesperunit => 1, |
405 |
}; |
406 |
$publisheddate = $subscription->{firstacquidate}; |
407 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
408 |
is($publisheddate, '1972-01-01'); |
409 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
410 |
is($publisheddate, '1974-01-01'); |
411 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
412 |
is($publisheddate, '1976-01-01'); |
413 |
|
414 |
# TEST CASE 22 - 1 issue every 2 years, irregularities |
415 |
$subscription = { |
416 |
periodicity => $id, |
417 |
firstacquidate => '1970-01-01', |
418 |
irregularity => '2;4', |
419 |
countissuesperunit => 1, |
420 |
}; |
421 |
$publisheddate = $subscription->{firstacquidate}; |
422 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
423 |
is($publisheddate, '1974-01-01'); |
424 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
425 |
is($publisheddate, '1978-01-01'); |
426 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
427 |
is($publisheddate, '1980-01-01'); |
428 |
|
429 |
# TEST CASE 23 - 2 issues per year, no irregularity |
430 |
$id = AddSubscriptionFrequency({ |
431 |
description => "1 issue every 2 years", |
432 |
unit => 'year', |
433 |
issuesperunit => 2, |
434 |
unitsperissue => 1, |
435 |
}); |
436 |
$subscription = { |
437 |
periodicity => $id, |
438 |
firstacquidate => '1970-01-01', |
439 |
irregularity => '', |
440 |
countissuesperunit => 1, |
441 |
}; |
442 |
$publisheddate = $subscription->{firstacquidate}; |
443 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
444 |
is($publisheddate, '1970-01-01'); |
445 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
446 |
is($publisheddate, '1971-01-01'); |
447 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
448 |
is($publisheddate, '1971-01-01'); |
449 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
450 |
is($publisheddate, '1972-01-01'); |
451 |
|
452 |
# TEST CASE 24 - 2 issues per year, irregularities |
453 |
$subscription = { |
454 |
periodicity => $id, |
455 |
firstacquidate => '1970-01-01', |
456 |
irregularity => '3;5;6', |
457 |
countissuesperunit => 1, |
458 |
}; |
459 |
$publisheddate = $subscription->{firstacquidate}; |
460 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
461 |
is($publisheddate, '1970-01-01'); |
462 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
463 |
is($publisheddate, '1971-01-01'); |
464 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
465 |
is($publisheddate, '1973-01-01'); |
466 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
467 |
is($publisheddate, '1973-01-01'); |
468 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
469 |
is($publisheddate, '1974-01-01'); |
470 |
|
471 |
# TEST CASE 25 - Irregular |
472 |
$id = AddSubscriptionFrequency({ |
473 |
description => "Irregular", |
474 |
unit => '', |
475 |
issuesperunit => 1, |
476 |
unitsperissue => 1, |
477 |
}); |
478 |
$subscription = { |
479 |
periodicity => $id, |
480 |
firstacquidate => '1970-01-01', |
481 |
irregularity => '', |
482 |
countissuesperunit => 1, |
483 |
}; |
484 |
$publisheddate = $subscription->{firstacquidate}; |
485 |
# GetNextDate always return the same date if subscription is irregular |
486 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
487 |
is($publisheddate, '1970-01-01'); |
488 |
$publisheddate = GetNextDate($subscription, $publisheddate); |
489 |
is($publisheddate, '1970-01-01'); |
490 |
|
491 |
$dbh->rollback; |