defoker 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,609 +1,752 @@
1
- # encoding: utf-8
2
- require 'spec_helper'
3
- require 'defoker_core'
4
- require 'timecop'
5
-
6
- describe Defoker::Core do
7
- context :today do
8
- cases = [
9
- {
10
- case_no: 1,
11
- case_title: 'no additional case',
12
- dummy_year: 2014,
13
- dummy_month: 9,
14
- dummy_day: 1,
15
- additional: '',
16
- expected: '20140901'
17
- },
18
- {
19
- case_no: 2,
20
- case_title: 'with additional case',
21
- dummy_year: 2014,
22
- dummy_month: 9,
23
- dummy_day: 1,
24
- additional: 'hoge',
25
- expected: '20140901_hoge'
26
- }
27
- ]
28
-
29
- cases.each do |c|
30
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
31
- begin
32
- case_before c
33
-
34
- # -- given --
35
- defoker_core = Defoker::Core.new
36
- Timecop.freeze(Time.local(c[:dummy_year], c[:dummy_month], c[:dummy_day]))
37
-
38
- # -- when --
39
- actual = defoker_core.today(additional: c[:additional])
40
-
41
- # -- then --
42
- expect(actual).to eq(c[:expected])
43
- ensure
44
- case_after c
45
- end
46
- end
47
-
48
- def case_before(c)
49
- # implement each case before
50
- end
51
-
52
- def case_after(c)
53
- # implement each case after
54
- end
55
- end
56
- end
57
-
58
- context :tomorrow do
59
- cases = [
60
- {
61
- case_no: 1,
62
- case_title: 'no additional case',
63
- dummy_year: 2014,
64
- dummy_month: 9,
65
- dummy_day: 1,
66
- additional: '',
67
- expected: '20140902'
68
- },
69
- {
70
- case_no: 2,
71
- case_title: 'with additional case',
72
- dummy_year: 2014,
73
- dummy_month: 9,
74
- dummy_day: 1,
75
- additional: 'hoge',
76
- expected: '20140902_hoge'
77
- }
78
- ]
79
-
80
- cases.each do |c|
81
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
82
- begin
83
- case_before c
84
-
85
- # -- given --
86
- defoker_core = Defoker::Core.new
87
- Timecop.travel(Time.local(c[:dummy_year], c[:dummy_month], c[:dummy_day]))
88
-
89
- # -- when --
90
- actual = defoker_core.tomorrow(additional: c[:additional])
91
-
92
- # -- then --
93
- expect(actual).to eq(c[:expected])
94
- ensure
95
- case_after c
96
- end
97
- end
98
-
99
- def case_before(c)
100
- # implement each case before
101
- end
102
-
103
- def case_after(c)
104
- # implement each case after
105
- end
106
- end
107
- end
108
-
109
- context :yesterday do
110
- cases = [
111
- {
112
- case_no: 1,
113
- case_title: 'no additional case',
114
- dummy_year: 2014,
115
- dummy_month: 9,
116
- dummy_day: 1,
117
- additional: '',
118
- expected: '20140831'
119
- },
120
- {
121
- case_no: 2,
122
- case_title: 'with additional case',
123
- dummy_year: 2014,
124
- dummy_month: 9,
125
- dummy_day: 1,
126
- additional: 'hoge',
127
- expected: '20140831_hoge'
128
- }
129
- ]
130
-
131
- cases.each do |c|
132
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
133
- begin
134
- case_before c
135
-
136
- # -- given --
137
- defoker_core = Defoker::Core.new
138
- Timecop.travel(Time.local(c[:dummy_year], c[:dummy_month], c[:dummy_day]))
139
-
140
- # -- when --
141
- actual = defoker_core.yesterday(additional: c[:additional])
142
-
143
- # -- then --
144
- expect(actual).to eq(c[:expected])
145
- ensure
146
- case_after c
147
- end
148
- end
149
-
150
- def case_before(c)
151
- # implement each case before
152
- end
153
-
154
- def case_after(c)
155
- # implement each case after
156
- end
157
- end
158
- end
159
-
160
- context :days do
161
- cases = [
162
- {
163
- case_no: 1,
164
- case_title: 'no additional case',
165
- date: '20140909',
166
- count: 4,
167
- additional: '',
168
- expected: %w(20140909 20140910 20140911 20140912)
169
- },
170
- {
171
- case_no: 2,
172
- case_title: 'with additional case',
173
- date: '20140909',
174
- count: 4,
175
- additional: 'hoge',
176
- expected: %w(20140909_hoge 20140910_hoge 20140911_hoge 20140912_hoge)
177
- }
178
- ]
179
-
180
- cases.each do |c|
181
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
182
- begin
183
- case_before c
184
-
185
- # -- given --
186
- defoker_core = Defoker::Core.new
187
-
188
- # -- when --
189
- actual = defoker_core.days(c[:date], count: c[:count], additional: c[:additional])
190
-
191
- # -- then --
192
- expect(actual).to eq(c[:expected])
193
- ensure
194
- case_after c
195
- end
196
- end
197
-
198
- def case_before(c)
199
- # implement each case before
200
- end
201
-
202
- def case_after(c)
203
- # implement each case after
204
- end
205
- end
206
- end
207
-
208
- context :this_month do
209
- cases = [
210
- {
211
- case_no: 1,
212
- case_title: 'no additional case',
213
- dummy_year: 2014,
214
- dummy_month: 9,
215
- dummy_day: 1,
216
- additional: '',
217
- expected: '201409'
218
- },
219
- {
220
- case_no: 2,
221
- case_title: 'with additional case',
222
- dummy_year: 2014,
223
- dummy_month: 9,
224
- dummy_day: 1,
225
- additional: 'hoge',
226
- expected: '201409_hoge'
227
- }
228
- ]
229
-
230
- cases.each do |c|
231
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
232
- begin
233
- case_before c
234
-
235
- # -- given --
236
- defoker_core = Defoker::Core.new
237
- Timecop.freeze(Time.local(c[:dummy_year], c[:dummy_month], c[:dummy_day]))
238
-
239
- # -- when --
240
- actual = defoker_core.this_month(additional: c[:additional])
241
-
242
- # -- then --
243
- expect(actual).to eq(c[:expected])
244
- ensure
245
- case_after c
246
- end
247
- end
248
-
249
- def case_before(c)
250
- # implement each case before
251
- end
252
-
253
- def case_after(c)
254
- # implement each case after
255
- end
256
- end
257
- end
258
-
259
- context :next_month do
260
- cases = [
261
- {
262
- case_no: 1,
263
- case_title: 'no additional case',
264
- dummy_year: 2014,
265
- dummy_month: 9,
266
- dummy_day: 1,
267
- additional: '',
268
- expected: '201410'
269
- },
270
- {
271
- case_no: 2,
272
- case_title: 'with additional case',
273
- dummy_year: 2014,
274
- dummy_month: 9,
275
- dummy_day: 1,
276
- additional: 'hoge',
277
- expected: '201410_hoge'
278
- }
279
- ]
280
-
281
- cases.each do |c|
282
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
283
- begin
284
- case_before c
285
-
286
- # -- given --
287
- defoker_core = Defoker::Core.new
288
- Timecop.freeze(Time.local(c[:dummy_year], c[:dummy_month], c[:dummy_day]))
289
-
290
- # -- when --
291
- actual = defoker_core.next_month(additional: c[:additional])
292
-
293
- # -- then --
294
- expect(actual).to eq(c[:expected])
295
- ensure
296
- case_after c
297
- end
298
- end
299
-
300
- def case_before(c)
301
- # implement each case before
302
- end
303
-
304
- def case_after(c)
305
- # implement each case after
306
- end
307
- end
308
- end
309
-
310
- context :previous_month do
311
- cases = [
312
- {
313
- case_no: 1,
314
- case_title: 'no additional case',
315
- dummy_year: 2014,
316
- dummy_month: 9,
317
- dummy_day: 1,
318
- additional: '',
319
- expected: '201408'
320
- },
321
- {
322
- case_no: 2,
323
- case_title: 'with additional case',
324
- dummy_year: 2014,
325
- dummy_month: 9,
326
- dummy_day: 1,
327
- additional: 'hoge',
328
- expected: '201408_hoge'
329
- }
330
- ]
331
-
332
- cases.each do |c|
333
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
334
- begin
335
- case_before c
336
-
337
- # -- given --
338
- defoker_core = Defoker::Core.new
339
- Timecop.freeze(Time.local(c[:dummy_year], c[:dummy_month], c[:dummy_day]))
340
-
341
- # -- when --
342
- actual = defoker_core.previous_month(additional: c[:additional])
343
-
344
- # -- then --
345
- expect(actual).to eq(c[:expected])
346
- ensure
347
- case_after c
348
- end
349
- end
350
-
351
- def case_before(c)
352
- # implement each case before
353
- end
354
-
355
- def case_after(c)
356
- # implement each case after
357
- end
358
- end
359
- end
360
-
361
- context :months do
362
- cases = [
363
- {
364
- case_no: 1,
365
- case_title: 'no additional case',
366
- month: '201410',
367
- count: 4,
368
- additional: '',
369
- expected: %w(201410 201411 201412 201501)
370
- },
371
- {
372
- case_no: 2,
373
- case_title: 'with additional case',
374
- month: '201410',
375
- count: 4,
376
- additional: 'hoge',
377
- expected: %w(201410_hoge 201411_hoge 201412_hoge 201501_hoge)
378
- }
379
- ]
380
-
381
- cases.each do |c|
382
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
383
- begin
384
- case_before c
385
-
386
- # -- given --
387
- defoker_core = Defoker::Core.new
388
-
389
- # -- when --
390
- actual = defoker_core.months(c[:month], count: c[:count], additional: c[:additional])
391
-
392
- # -- then --
393
- expect(actual).to eq(c[:expected])
394
- ensure
395
- case_after c
396
- end
397
- end
398
-
399
- def case_before(c)
400
- # implement each case before
401
- end
402
-
403
- def case_after(c)
404
- # implement each case after
405
- end
406
- end
407
- end
408
-
409
- context :this_year do
410
- cases = [
411
- {
412
- case_no: 1,
413
- case_title: 'no additional case',
414
- dummy_year: 2014,
415
- dummy_month: 9,
416
- dummy_day: 1,
417
- additional: '',
418
- expected: '2014'
419
- },
420
- {
421
- case_no: 2,
422
- case_title: 'with additional case',
423
- dummy_year: 2014,
424
- dummy_month: 9,
425
- dummy_day: 1,
426
- additional: 'hoge',
427
- expected: '2014_hoge'
428
- }
429
- ]
430
-
431
- cases.each do |c|
432
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
433
- begin
434
- case_before c
435
-
436
- # -- given --
437
- defoker_core = Defoker::Core.new
438
- Timecop.freeze(Time.local(c[:dummy_year], c[:dummy_month], c[:dummy_day]))
439
-
440
- # -- when --
441
- actual = defoker_core.this_year(additional: c[:additional])
442
-
443
- # -- then --
444
- expect(actual).to eq(c[:expected])
445
- ensure
446
- case_after c
447
- end
448
- end
449
-
450
- def case_before(c)
451
- # implement each case before
452
- end
453
-
454
- def case_after(c)
455
- # implement each case after
456
- end
457
- end
458
- end
459
-
460
- context :next_year do
461
- cases = [
462
- {
463
- case_no: 1,
464
- case_title: 'no additional case',
465
- dummy_year: 2014,
466
- dummy_month: 9,
467
- dummy_day: 1,
468
- additional: '',
469
- expected: '2015'
470
- },
471
- {
472
- case_no: 2,
473
- case_title: 'with additional case',
474
- dummy_year: 2014,
475
- dummy_month: 9,
476
- dummy_day: 1,
477
- additional: 'hoge',
478
- expected: '2015_hoge'
479
- }
480
- ]
481
-
482
- cases.each do |c|
483
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
484
- begin
485
- case_before c
486
-
487
- # -- given --
488
- defoker_core = Defoker::Core.new
489
- Timecop.freeze(Time.local(c[:dummy_year], c[:dummy_month], c[:dummy_day]))
490
-
491
- # -- when --
492
- actual = defoker_core.next_year(additional: c[:additional])
493
-
494
- # -- then --
495
- expect(actual).to eq(c[:expected])
496
- ensure
497
- case_after c
498
- end
499
- end
500
-
501
- def case_before(c)
502
- # implement each case before
503
- end
504
-
505
- def case_after(c)
506
- # implement each case after
507
- end
508
- end
509
- end
510
-
511
- context :previous_year do
512
- cases = [
513
- {
514
- case_no: 1,
515
- case_title: 'no additional case',
516
- dummy_year: 2014,
517
- dummy_month: 9,
518
- dummy_day: 1,
519
- additional: '',
520
- expected: '2013'
521
- },
522
- {
523
- case_no: 2,
524
- case_title: 'with additional case',
525
- dummy_year: 2014,
526
- dummy_month: 9,
527
- dummy_day: 1,
528
- additional: 'hoge',
529
- expected: '2013_hoge'
530
- }
531
- ]
532
-
533
- cases.each do |c|
534
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
535
- begin
536
- case_before c
537
-
538
- # -- given --
539
- defoker_core = Defoker::Core.new
540
- Timecop.freeze(Time.local(c[:dummy_year], c[:dummy_month], c[:dummy_day]))
541
-
542
- # -- when --
543
- actual = defoker_core.previous_year(additional: c[:additional])
544
-
545
- # -- then --
546
- expect(actual).to eq(c[:expected])
547
- ensure
548
- case_after c
549
- end
550
- end
551
-
552
- def case_before(c)
553
- # implement each case before
554
- end
555
-
556
- def case_after(c)
557
- # implement each case after
558
- end
559
- end
560
- end
561
-
562
- context :years do
563
- cases = [
564
- {
565
- case_no: 1,
566
- case_title: 'no additional case',
567
- year: '2014',
568
- count: 4,
569
- additional: '',
570
- expected: %w(2014 2015 2016 2017)
571
- },
572
- {
573
- case_no: 2,
574
- case_title: 'with additional case',
575
- year: '2014',
576
- count: 4,
577
- additional: 'hoge',
578
- expected: %w(2014_hoge 2015_hoge 2016_hoge 2017_hoge)
579
- }
580
- ]
581
-
582
- cases.each do |c|
583
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
584
- begin
585
- case_before c
586
-
587
- # -- given --
588
- defoker_core = Defoker::Core.new
589
-
590
- # -- when --
591
- actual = defoker_core.years(c[:year], count: c[:count], additional: c[:additional])
592
-
593
- # -- then --
594
- expect(actual).to eq(c[:expected])
595
- ensure
596
- case_after c
597
- end
598
- end
599
-
600
- def case_before(c)
601
- # implement each case before
602
- end
603
-
604
- def case_after(c)
605
- # implement each case after
606
- end
607
- end
608
- end
609
- end
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+ require 'defoker_core'
4
+ require 'timecop'
5
+
6
+ describe Defoker::Core do
7
+ context :init do
8
+ DEFOKERFILE_TMP_DIR = 'tmp_init'
9
+ cases = [
10
+ {
11
+ case_no: 1,
12
+ case_title: 'valid new year mail',
13
+ expected: Defoker::DEFOKERFILE_TEMPLATE
14
+ }
15
+ ]
16
+
17
+ cases.each do |c|
18
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
19
+ begin
20
+ case_before c
21
+
22
+ # -- given --
23
+ core = Defoker::Core.new
24
+
25
+ # -- when --
26
+ core.init
27
+
28
+ # -- then --
29
+ actual = File.read("./#{Defoker::DEFOKERFILE_PATH}")
30
+ expect(actual).to eq(c[:expected])
31
+ ensure
32
+ case_after c
33
+
34
+ end
35
+ end
36
+
37
+ def case_before(c) # rubocop:disable UnusedMethodArgument
38
+ Dir.mkdir(DEFOKERFILE_TMP_DIR) unless Dir.exist? DEFOKERFILE_TMP_DIR
39
+ Dir.chdir(DEFOKERFILE_TMP_DIR)
40
+ end
41
+
42
+ def case_after(c) # rubocop:disable UnusedMethodArgument
43
+ Dir.chdir('../')
44
+ FileUtils.rm_rf(DEFOKERFILE_TMP_DIR) if Dir.exist? DEFOKERFILE_TMP_DIR
45
+ end
46
+ end
47
+ end
48
+
49
+ context :today do
50
+ cases = [
51
+ {
52
+ case_no: 1,
53
+ case_title: 'no additional case',
54
+ dummy_year: 2014,
55
+ dummy_month: 9,
56
+ dummy_day: 1,
57
+ additional: '',
58
+ expected: '20140901'
59
+ },
60
+ {
61
+ case_no: 2,
62
+ case_title: 'with additional case',
63
+ dummy_year: 2014,
64
+ dummy_month: 9,
65
+ dummy_day: 1,
66
+ additional: 'hoge',
67
+ expected: '20140901_hoge'
68
+ }
69
+ ]
70
+
71
+ cases.each do |c|
72
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
73
+ begin
74
+ case_before c
75
+
76
+ # -- given --
77
+ defoker_core = Defoker::Core.new
78
+ Timecop.freeze(Time.local(c[:dummy_year], c[:dummy_month], c[:dummy_day]))
79
+
80
+ # -- when --
81
+ actual = defoker_core.today(additional: c[:additional])
82
+
83
+ # -- then --
84
+ expect(actual).to eq(c[:expected])
85
+ ensure
86
+ case_after c
87
+ end
88
+ end
89
+
90
+ def case_before(c)
91
+ # implement each case before
92
+ end
93
+
94
+ def case_after(c)
95
+ # implement each case after
96
+ end
97
+ end
98
+ end
99
+
100
+ context :tomorrow do
101
+ cases = [
102
+ {
103
+ case_no: 1,
104
+ case_title: 'no additional case',
105
+ dummy_year: 2014,
106
+ dummy_month: 9,
107
+ dummy_day: 1,
108
+ additional: '',
109
+ expected: '20140902'
110
+ },
111
+ {
112
+ case_no: 2,
113
+ case_title: 'with additional case',
114
+ dummy_year: 2014,
115
+ dummy_month: 9,
116
+ dummy_day: 1,
117
+ additional: 'hoge',
118
+ expected: '20140902_hoge'
119
+ }
120
+ ]
121
+
122
+ cases.each do |c|
123
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
124
+ begin
125
+ case_before c
126
+
127
+ # -- given --
128
+ defoker_core = Defoker::Core.new
129
+ Timecop.travel(Time.local(c[:dummy_year], c[:dummy_month], c[:dummy_day]))
130
+
131
+ # -- when --
132
+ actual = defoker_core.tomorrow(additional: c[:additional])
133
+
134
+ # -- then --
135
+ expect(actual).to eq(c[:expected])
136
+ ensure
137
+ case_after c
138
+ end
139
+ end
140
+
141
+ def case_before(c)
142
+ # implement each case before
143
+ end
144
+
145
+ def case_after(c)
146
+ # implement each case after
147
+ end
148
+ end
149
+ end
150
+
151
+ context :yesterday do
152
+ cases = [
153
+ {
154
+ case_no: 1,
155
+ case_title: 'no additional case',
156
+ dummy_year: 2014,
157
+ dummy_month: 9,
158
+ dummy_day: 1,
159
+ additional: '',
160
+ expected: '20140831'
161
+ },
162
+ {
163
+ case_no: 2,
164
+ case_title: 'with additional case',
165
+ dummy_year: 2014,
166
+ dummy_month: 9,
167
+ dummy_day: 1,
168
+ additional: 'hoge',
169
+ expected: '20140831_hoge'
170
+ }
171
+ ]
172
+
173
+ cases.each do |c|
174
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
175
+ begin
176
+ case_before c
177
+
178
+ # -- given --
179
+ defoker_core = Defoker::Core.new
180
+ Timecop.travel(Time.local(c[:dummy_year], c[:dummy_month], c[:dummy_day]))
181
+
182
+ # -- when --
183
+ actual = defoker_core.yesterday(additional: c[:additional])
184
+
185
+ # -- then --
186
+ expect(actual).to eq(c[:expected])
187
+ ensure
188
+ case_after c
189
+ end
190
+ end
191
+
192
+ def case_before(c)
193
+ # implement each case before
194
+ end
195
+
196
+ def case_after(c)
197
+ # implement each case after
198
+ end
199
+ end
200
+ end
201
+
202
+ context :days do
203
+ cases = [
204
+ {
205
+ case_no: 1,
206
+ case_title: 'no additional case',
207
+ date: '20140909',
208
+ count: 4,
209
+ additional: '',
210
+ expected: %w(20140909 20140910 20140911 20140912)
211
+ },
212
+ {
213
+ case_no: 2,
214
+ case_title: 'with additional case',
215
+ date: '20140909',
216
+ count: 4,
217
+ additional: 'hoge',
218
+ expected: %w(20140909_hoge 20140910_hoge 20140911_hoge 20140912_hoge)
219
+ }
220
+ ]
221
+
222
+ cases.each do |c|
223
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
224
+ begin
225
+ case_before c
226
+
227
+ # -- given --
228
+ defoker_core = Defoker::Core.new
229
+
230
+ # -- when --
231
+ actual = defoker_core.days(c[:date], count: c[:count], additional: c[:additional])
232
+
233
+ # -- then --
234
+ expect(actual).to eq(c[:expected])
235
+ ensure
236
+ case_after c
237
+ end
238
+ end
239
+
240
+ def case_before(c)
241
+ # implement each case before
242
+ end
243
+
244
+ def case_after(c)
245
+ # implement each case after
246
+ end
247
+ end
248
+ end
249
+
250
+ context :this_month do
251
+ cases = [
252
+ {
253
+ case_no: 1,
254
+ case_title: 'no additional case',
255
+ dummy_year: 2014,
256
+ dummy_month: 9,
257
+ dummy_day: 1,
258
+ additional: '',
259
+ expected: '201409'
260
+ },
261
+ {
262
+ case_no: 2,
263
+ case_title: 'with additional case',
264
+ dummy_year: 2014,
265
+ dummy_month: 9,
266
+ dummy_day: 1,
267
+ additional: 'hoge',
268
+ expected: '201409_hoge'
269
+ }
270
+ ]
271
+
272
+ cases.each do |c|
273
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
274
+ begin
275
+ case_before c
276
+
277
+ # -- given --
278
+ defoker_core = Defoker::Core.new
279
+ Timecop.freeze(Time.local(c[:dummy_year], c[:dummy_month], c[:dummy_day]))
280
+
281
+ # -- when --
282
+ actual = defoker_core.this_month(additional: c[:additional])
283
+
284
+ # -- then --
285
+ expect(actual).to eq(c[:expected])
286
+ ensure
287
+ case_after c
288
+ end
289
+ end
290
+
291
+ def case_before(c)
292
+ # implement each case before
293
+ end
294
+
295
+ def case_after(c)
296
+ # implement each case after
297
+ end
298
+ end
299
+ end
300
+
301
+ context :next_month do
302
+ cases = [
303
+ {
304
+ case_no: 1,
305
+ case_title: 'no additional case',
306
+ dummy_year: 2014,
307
+ dummy_month: 9,
308
+ dummy_day: 1,
309
+ additional: '',
310
+ expected: '201410'
311
+ },
312
+ {
313
+ case_no: 2,
314
+ case_title: 'with additional case',
315
+ dummy_year: 2014,
316
+ dummy_month: 9,
317
+ dummy_day: 1,
318
+ additional: 'hoge',
319
+ expected: '201410_hoge'
320
+ }
321
+ ]
322
+
323
+ cases.each do |c|
324
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
325
+ begin
326
+ case_before c
327
+
328
+ # -- given --
329
+ defoker_core = Defoker::Core.new
330
+ Timecop.freeze(Time.local(c[:dummy_year], c[:dummy_month], c[:dummy_day]))
331
+
332
+ # -- when --
333
+ actual = defoker_core.next_month(additional: c[:additional])
334
+
335
+ # -- then --
336
+ expect(actual).to eq(c[:expected])
337
+ ensure
338
+ case_after c
339
+ end
340
+ end
341
+
342
+ def case_before(c)
343
+ # implement each case before
344
+ end
345
+
346
+ def case_after(c)
347
+ # implement each case after
348
+ end
349
+ end
350
+ end
351
+
352
+ context :previous_month do
353
+ cases = [
354
+ {
355
+ case_no: 1,
356
+ case_title: 'no additional case',
357
+ dummy_year: 2014,
358
+ dummy_month: 9,
359
+ dummy_day: 1,
360
+ additional: '',
361
+ expected: '201408'
362
+ },
363
+ {
364
+ case_no: 2,
365
+ case_title: 'with additional case',
366
+ dummy_year: 2014,
367
+ dummy_month: 9,
368
+ dummy_day: 1,
369
+ additional: 'hoge',
370
+ expected: '201408_hoge'
371
+ }
372
+ ]
373
+
374
+ cases.each do |c|
375
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
376
+ begin
377
+ case_before c
378
+
379
+ # -- given --
380
+ defoker_core = Defoker::Core.new
381
+ Timecop.freeze(Time.local(c[:dummy_year], c[:dummy_month], c[:dummy_day]))
382
+
383
+ # -- when --
384
+ actual = defoker_core.previous_month(additional: c[:additional])
385
+
386
+ # -- then --
387
+ expect(actual).to eq(c[:expected])
388
+ ensure
389
+ case_after c
390
+ end
391
+ end
392
+
393
+ def case_before(c)
394
+ # implement each case before
395
+ end
396
+
397
+ def case_after(c)
398
+ # implement each case after
399
+ end
400
+ end
401
+ end
402
+
403
+ context :months do
404
+ cases = [
405
+ {
406
+ case_no: 1,
407
+ case_title: 'no additional case',
408
+ month: '201410',
409
+ count: 4,
410
+ additional: '',
411
+ expected: %w(201410 201411 201412 201501)
412
+ },
413
+ {
414
+ case_no: 2,
415
+ case_title: 'with additional case',
416
+ month: '201410',
417
+ count: 4,
418
+ additional: 'hoge',
419
+ expected: %w(201410_hoge 201411_hoge 201412_hoge 201501_hoge)
420
+ }
421
+ ]
422
+
423
+ cases.each do |c|
424
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
425
+ begin
426
+ case_before c
427
+
428
+ # -- given --
429
+ defoker_core = Defoker::Core.new
430
+
431
+ # -- when --
432
+ actual = defoker_core.months(c[:month], count: c[:count], additional: c[:additional])
433
+
434
+ # -- then --
435
+ expect(actual).to eq(c[:expected])
436
+ ensure
437
+ case_after c
438
+ end
439
+ end
440
+
441
+ def case_before(c)
442
+ # implement each case before
443
+ end
444
+
445
+ def case_after(c)
446
+ # implement each case after
447
+ end
448
+ end
449
+ end
450
+
451
+ context :this_year do
452
+ cases = [
453
+ {
454
+ case_no: 1,
455
+ case_title: 'no additional case',
456
+ dummy_year: 2014,
457
+ dummy_month: 9,
458
+ dummy_day: 1,
459
+ additional: '',
460
+ expected: '2014'
461
+ },
462
+ {
463
+ case_no: 2,
464
+ case_title: 'with additional case',
465
+ dummy_year: 2014,
466
+ dummy_month: 9,
467
+ dummy_day: 1,
468
+ additional: 'hoge',
469
+ expected: '2014_hoge'
470
+ }
471
+ ]
472
+
473
+ cases.each do |c|
474
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
475
+ begin
476
+ case_before c
477
+
478
+ # -- given --
479
+ defoker_core = Defoker::Core.new
480
+ Timecop.freeze(Time.local(c[:dummy_year], c[:dummy_month], c[:dummy_day]))
481
+
482
+ # -- when --
483
+ actual = defoker_core.this_year(additional: c[:additional])
484
+
485
+ # -- then --
486
+ expect(actual).to eq(c[:expected])
487
+ ensure
488
+ case_after c
489
+ end
490
+ end
491
+
492
+ def case_before(c)
493
+ # implement each case before
494
+ end
495
+
496
+ def case_after(c)
497
+ # implement each case after
498
+ end
499
+ end
500
+ end
501
+
502
+ context :next_year do
503
+ cases = [
504
+ {
505
+ case_no: 1,
506
+ case_title: 'no additional case',
507
+ dummy_year: 2014,
508
+ dummy_month: 9,
509
+ dummy_day: 1,
510
+ additional: '',
511
+ expected: '2015'
512
+ },
513
+ {
514
+ case_no: 2,
515
+ case_title: 'with additional case',
516
+ dummy_year: 2014,
517
+ dummy_month: 9,
518
+ dummy_day: 1,
519
+ additional: 'hoge',
520
+ expected: '2015_hoge'
521
+ }
522
+ ]
523
+
524
+ cases.each do |c|
525
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
526
+ begin
527
+ case_before c
528
+
529
+ # -- given --
530
+ defoker_core = Defoker::Core.new
531
+ Timecop.freeze(Time.local(c[:dummy_year], c[:dummy_month], c[:dummy_day]))
532
+
533
+ # -- when --
534
+ actual = defoker_core.next_year(additional: c[:additional])
535
+
536
+ # -- then --
537
+ expect(actual).to eq(c[:expected])
538
+ ensure
539
+ case_after c
540
+ end
541
+ end
542
+
543
+ def case_before(c)
544
+ # implement each case before
545
+ end
546
+
547
+ def case_after(c)
548
+ # implement each case after
549
+ end
550
+ end
551
+ end
552
+
553
+ context :previous_year do
554
+ cases = [
555
+ {
556
+ case_no: 1,
557
+ case_title: 'no additional case',
558
+ dummy_year: 2014,
559
+ dummy_month: 9,
560
+ dummy_day: 1,
561
+ additional: '',
562
+ expected: '2013'
563
+ },
564
+ {
565
+ case_no: 2,
566
+ case_title: 'with additional case',
567
+ dummy_year: 2014,
568
+ dummy_month: 9,
569
+ dummy_day: 1,
570
+ additional: 'hoge',
571
+ expected: '2013_hoge'
572
+ }
573
+ ]
574
+
575
+ cases.each do |c|
576
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
577
+ begin
578
+ case_before c
579
+
580
+ # -- given --
581
+ defoker_core = Defoker::Core.new
582
+ Timecop.freeze(Time.local(c[:dummy_year], c[:dummy_month], c[:dummy_day]))
583
+
584
+ # -- when --
585
+ actual = defoker_core.previous_year(additional: c[:additional])
586
+
587
+ # -- then --
588
+ expect(actual).to eq(c[:expected])
589
+ ensure
590
+ case_after c
591
+ end
592
+ end
593
+
594
+ def case_before(c)
595
+ # implement each case before
596
+ end
597
+
598
+ def case_after(c)
599
+ # implement each case after
600
+ end
601
+ end
602
+ end
603
+
604
+ context :years do
605
+ cases = [
606
+ {
607
+ case_no: 1,
608
+ case_title: 'no additional case',
609
+ year: '2014',
610
+ count: 4,
611
+ additional: '',
612
+ expected: %w(2014 2015 2016 2017)
613
+ },
614
+ {
615
+ case_no: 2,
616
+ case_title: 'with additional case',
617
+ year: '2014',
618
+ count: 4,
619
+ additional: 'hoge',
620
+ expected: %w(2014_hoge 2015_hoge 2016_hoge 2017_hoge)
621
+ }
622
+ ]
623
+
624
+ cases.each do |c|
625
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
626
+ begin
627
+ case_before c
628
+
629
+ # -- given --
630
+ defoker_core = Defoker::Core.new
631
+
632
+ # -- when --
633
+ actual = defoker_core.years(c[:year], count: c[:count], additional: c[:additional])
634
+
635
+ # -- then --
636
+ expect(actual).to eq(c[:expected])
637
+ ensure
638
+ case_after c
639
+ end
640
+ end
641
+
642
+ def case_before(c)
643
+ # implement each case before
644
+ end
645
+
646
+ def case_after(c)
647
+ # implement each case after
648
+ end
649
+ end
650
+ end
651
+
652
+ context :rule do
653
+ DEFOKER_RULE_TMP_DIR = 'tmp_rule'
654
+ DEFOKER_CASE1_INPUT = <<-EOS
655
+ type :today
656
+ base ""
657
+ EOS
658
+ DEFOKER_CASE2_INPUT = <<-EOS
659
+ type :this_month
660
+ base "hoge"
661
+ EOS
662
+
663
+ cases = [
664
+ {
665
+ case_no: 1,
666
+ case_title: 'default case',
667
+ dummy_year: 2014,
668
+ dummy_month: 9,
669
+ dummy_day: 1,
670
+ input: DEFOKER_CASE1_INPUT,
671
+ additional: '',
672
+ expected: '20140901'
673
+ },
674
+ {
675
+ case_no: 2,
676
+ case_title: 'default case with additional',
677
+ dummy_year: 2014,
678
+ dummy_month: 9,
679
+ dummy_day: 1,
680
+ input: DEFOKER_CASE1_INPUT,
681
+ additional: 'hoge',
682
+ expected: '20140901_hoge'
683
+ },
684
+ {
685
+ case_no: 3,
686
+ case_title: 'this_motth, hoge base case',
687
+ dummy_year: 2014,
688
+ dummy_month: 9,
689
+ dummy_day: 1,
690
+ input: DEFOKER_CASE2_INPUT,
691
+ additional: '',
692
+ expected: '201409_hoge'
693
+ },
694
+ {
695
+ case_no: 4,
696
+ case_title: 'this_motth, hoge base case with additional',
697
+ dummy_year: 2014,
698
+ dummy_month: 9,
699
+ dummy_day: 1,
700
+ input: DEFOKER_CASE2_INPUT,
701
+ additional: 'hige',
702
+ expected: '201409_hoge_hige'
703
+ },
704
+ {
705
+ case_no: 5,
706
+ case_title: 'no DEfokerfile case',
707
+ dummy_year: 2014,
708
+ dummy_month: 9,
709
+ dummy_day: 1,
710
+ input: '',
711
+ additional: '',
712
+ expect_error: true
713
+ }
714
+ ]
715
+
716
+ cases.each do |c|
717
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
718
+ begin
719
+ case_before c
720
+
721
+ # -- given --
722
+ core = Defoker::Core.new
723
+ Timecop.freeze(Time.local(c[:dummy_year], c[:dummy_month], c[:dummy_day]))
724
+
725
+ # -- when --
726
+ if c[:expect_error]
727
+ expect { core.rule(additional: c[:additional]) }.to raise_error(Defoker::DslNotExistError)
728
+ next
729
+ end
730
+ actual = core.rule(additional: c[:additional])
731
+
732
+ # -- then --
733
+ expect(actual).to eq(c[:expected])
734
+ ensure
735
+ case_after c
736
+ end
737
+ end
738
+
739
+ def case_before(c)
740
+ Dir.mkdir(DEFOKER_RULE_TMP_DIR) unless Dir.exist? DEFOKER_RULE_TMP_DIR
741
+ Dir.chdir(DEFOKER_RULE_TMP_DIR)
742
+ return if c[:input].empty?
743
+ File.open(Defoker::DEFOKERFILE_PATH, 'w:utf-8') { |f|f.print c[:input] }
744
+ end
745
+
746
+ def case_after(c) # rubocop:disable UnusedMethodArgument
747
+ Dir.chdir('../')
748
+ FileUtils.rm_rf(DEFOKER_RULE_TMP_DIR) if Dir.exist? DEFOKER_RULE_TMP_DIR
749
+ end
750
+ end
751
+ end
752
+ end