defoker 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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