View | Details | Raw Unified | Return to bug 7688
Collapse All | Expand All

(-)a/t/db_dependent/Serials/GetNextDate.t (-1 / +491 lines)
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;

Return to bug 7688