tudu 0.0.4 → 0.0.5

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,587 +1,606 @@
1
- # encoding: utf-8
2
- require "spec_helper"
3
- require "tudu_core"
4
-
5
- describe Tudu::Core do
6
- context :init do
7
- cases = [
8
- {
9
- case_no: 1,
10
- case_title: "valid case",
11
- expected_files: [
12
- Tudu::Tasks::TUDU_FILE,
13
- Tudu::Tasks::TUDU_TODOS_FILE,
14
- Tudu::Tasks::TUDU_DOINGS_FILE,
15
- Tudu::Tasks::TUDU_DONES_FILE
16
- ],
17
- expected_contents: [
18
- Tudu::Tasks::TUDU_FILE_TEMPLATE,
19
- Tudu::Tasks::TUDU_TODOS_FILE_TEMPLATE,
20
- Tudu::Tasks::TUDU_DOINGS_FILE_TEMPLATE,
21
- Tudu::Tasks::TUDU_DONES_FILE_TEMPLATE
22
- ],
23
- },
24
- ]
25
-
26
- cases.each do |c|
27
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
28
- begin
29
- case_before c
30
-
31
- # -- given --
32
- tudu_core = Tudu::Core.new
33
-
34
- # -- when --
35
- tudu_core.init
36
-
37
- # -- then --
38
- c[:expected_files].each_with_index do |f, index|
39
- actual = File.open("./tudu/#{f}") {|f|f.read}
40
- expect(actual).to eq(c[:expected_contents][index])
41
- end
42
- ensure
43
- case_after c
44
- end
45
- end
46
-
47
- def case_before(c)
48
- # implement each case before
49
- end
50
-
51
- def case_after(c)
52
- return unless File.exists? "./tudu"
53
- FileUtils.rm_rf("./tudu")
54
- end
55
- end
56
- end
57
-
58
- context :add do
59
- cases = [
60
- {
61
- case_no: 1,
62
- case_title: "single add",
63
- task_names1: "task_name",
64
- task_names2: nil,
65
- task_names3: nil,
66
- expected: ["task_name"]
67
- },
68
- {
69
- case_no: 2,
70
- case_title: "nil add",
71
- task_names1: nil,
72
- task_names2: nil,
73
- task_names3: nil,
74
- expected: []
75
- },
76
- {
77
- case_no: 3,
78
- case_title: "multi add",
79
- task_names1: "task_name1",
80
- task_names2: "task_name2",
81
- task_names3: "task_name3",
82
- expected: ["task_name1","task_name2","task_name3"]
83
- },
84
- {
85
- case_no: 4,
86
- case_title: "duplicate add",
87
- task_names1: "task_name1",
88
- task_names2: "task_name1",
89
- task_names3: nil,
90
- expected: ["task_name1"]
91
- },
92
- ]
93
-
94
- cases.each do |c|
95
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
96
- begin
97
- case_before c
98
-
99
- # -- given --
100
- tudu_core = Tudu::Core.new
101
- tudu_core.init
102
-
103
- # -- when --
104
- actual = tudu_core.add c[:task_names1], c[:task_names2], c[:task_names3]
105
-
106
- # -- then --
107
- actual = File.read("./tudu/todos").split("\n")
108
- expect(actual).to eq(c[:expected])
109
- ensure
110
- case_after c
111
- end
112
- end
113
-
114
- def case_before(c)
115
- # implement each case before
116
- end
117
-
118
- def case_after(c)
119
- return unless File.exists? "./tudu"
120
- FileUtils.rm_rf("./tudu")
121
- end
122
- end
123
- end
124
-
125
- context :remove do
126
- cases = [
127
- {
128
- case_no: 1,
129
- case_title: "single remove",
130
- task_names1: "task_name",
131
- task_names2: nil,
132
- task_names3: nil,
133
- },
134
- {
135
- case_no: 2,
136
- case_title: "multi remove",
137
- task_names1: "task_name1",
138
- task_names2: "task_name2",
139
- task_names3: "task_name3",
140
- },
141
- {
142
- case_no: 3,
143
- case_title: "not remove",
144
- task_names1: "invalid name",
145
- task_names2: nil,
146
- task_names3: nil,
147
- },
148
- ]
149
-
150
- cases.each do |c|
151
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
152
- begin
153
- case_before c
154
-
155
- # -- given --
156
- tudu_core = Tudu::Core.new
157
- tudu_core.init
158
- tudu_core.add c[:task_names1], c[:task_names2], c[:task_names3]
159
-
160
- # -- when --
161
- tudu_core.remove c[:task_names1], c[:task_names2], c[:task_names3]
162
-
163
- # -- then --
164
- [c[:task_names1], c[:task_names2], c[:task_names3]].each do |e|
165
- actual = false
166
- ["./tudu/todos", "./tudu/doings", "./tudu/dones"].each do |f|
167
- actual = true if File.read(f).split("\n").include?(e)
168
- end
169
- expect(actual).to be_false
170
- end
171
- ensure
172
- case_after c
173
- end
174
- end
175
-
176
- def case_before(c)
177
- # implement each case before
178
- end
179
-
180
- def case_after(c)
181
- return unless File.exists? "./tudu"
182
- FileUtils.rm_rf("./tudu")
183
- end
184
- end
185
- end
186
-
187
- context :tasks do
188
- cases = [
189
- {
190
- case_no: 1,
191
- case_title: "[todos, dosings, dones] all tasks",
192
- task_names1: "task_name1",
193
- task_names2: "task_name2",
194
- task_names3: "task_name3",
195
- search_word: nil,
196
- expected: ["task_name1", "task_name2", "task_name3"]
197
- },
198
- {
199
- case_no: 2,
200
- case_title: "[todos, dosings, dones] search specific tasks",
201
- task_names1: "task_name1",
202
- task_names2: "task_name2",
203
- task_names3: "task_name3",
204
- search_word: "task_name1",
205
- expected: ["task_name1"]
206
- },
207
- {
208
- case_no: 3,
209
- case_title: "[todos, dosings, dones] search specific tasks by regexp",
210
- task_names1: "task_name1_1",
211
- task_names2: "task_name2_1",
212
- task_names3: "task_name2_2",
213
- task_names4: "task_name3_1",
214
- search_word: "task_name2_",
215
- expected: ["task_name2_1", "task_name2_2"]
216
- },
217
- {
218
- case_no: 4,
219
- case_title: "[todos, dosings, dones] all tasks with category option",
220
- task_names1: "task_name1",
221
- task_names2: "task_name2",
222
- task_names3: "task_name3",
223
- search_word: nil,
224
- options: {:category => true},
225
- expected: [
226
- "========TODOS========",
227
- "task_name1\ntask_name2\ntask_name3",
228
- "",
229
- "========DOINGS========",
230
- "",
231
- "",
232
- "========DONES========",
233
- ""
234
- ]
235
- },
236
- ]
237
-
238
- cases.each do |c|
239
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
240
- begin
241
- case_before c
242
-
243
- # -- given --
244
- tudu_core = Tudu::Core.new
245
- tudu_core.init
246
- tudu_core.add c[:task_names1], c[:task_names2], c[:task_names3], c[:task_names4]
247
-
248
- # -- when --
249
- actual = tudu_core.tasks c[:search_word], c[:options]
250
-
251
- # -- then --
252
- expect(actual).to eq(c[:expected])
253
- ensure
254
- case_after c
255
- end
256
- end
257
-
258
- def case_before(c)
259
- # implement each case before
260
- end
261
-
262
- def case_after(c)
263
- return unless File.exists? "./tudu"
264
- FileUtils.rm_rf("./tudu")
265
- end
266
- end
267
- end
268
-
269
- context :todos do
270
- cases = [
271
- {
272
- case_no: 1,
273
- case_title: "todos all tasks",
274
- task_names1: "task_name1",
275
- task_names2: "task_name2",
276
- task_names3: "task_name3",
277
- choose: true,
278
- choose_name: "task_name1",
279
- search_word: nil,
280
- expected: ["task_name2", "task_name3"]
281
- },
282
- {
283
- case_no: 2,
284
- case_title: "todos search specific tasks",
285
- task_names1: "task_name1",
286
- task_names2: "task_name2",
287
- task_names3: "task_name3",
288
- choose: true,
289
- choose_name: "task_name1",
290
- search_word: "task_name3",
291
- expected: ["task_name3"]
292
- },
293
- {
294
- case_no: 3,
295
- case_title: "todos search specific tasks by regexp",
296
- task_names1: "task_name1_1",
297
- task_names2: "task_name2_1",
298
- task_names3: "task_name2_2",
299
- task_names4: "task_name3_1",
300
- choose: true,
301
- choose_name: "task_name1_1",
302
- search_word: "task_name2_",
303
- expected: ["task_name2_1", "task_name2_2"]
304
- },
305
- ]
306
-
307
- cases.each do |c|
308
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
309
- begin
310
- case_before c
311
-
312
- # -- given --
313
- tudu_core = Tudu::Core.new
314
- tudu_core.init
315
- tudu_core.add c[:task_names1], c[:task_names2], c[:task_names3], c[:task_names4]
316
- tudu_core.choose(c[:choose_name]) if c[:choose]
317
-
318
- # -- when --
319
- actual = tudu_core.todos c[:search_word]
320
-
321
- # -- then --
322
- expect(actual).to eq(c[:expected])
323
- ensure
324
- case_after c
325
- end
326
- end
327
-
328
- def case_before(c)
329
- # implement each case before
330
- end
331
-
332
- def case_after(c)
333
- # implement each case after
334
- return unless File.exists? "./tudu"
335
- FileUtils.rm_rf("./tudu")
336
- end
337
- end
338
- end
339
-
340
- context :doings do
341
- cases = [
342
- {
343
- case_no: 1,
344
- case_title: "doings all tasks",
345
- task_names1: "task_name1",
346
- task_names2: "task_name2",
347
- task_names3: "task_name3",
348
- choose: true,
349
- choose_name: "task_name1",
350
- search_word: nil,
351
- expected: ["task_name1"]
352
- },
353
- {
354
- case_no: 2,
355
- case_title: "doings search specific tasks",
356
- task_names1: "task_name1",
357
- task_names2: "task_name2",
358
- task_names3: "task_name3",
359
- choose: true,
360
- choose_name: "task_name1",
361
- search_word: nil,
362
- expected: ["task_name1"]
363
- },
364
- {
365
- case_no: 3,
366
- case_title: "doings search specific tasks by regexp",
367
- task_names1: "task_name1_1",
368
- task_names2: "task_name2_1",
369
- task_names3: "task_name2_2",
370
- task_names4: "task_name3_1",
371
- choose: true,
372
- choose_name: "task_name1_1",
373
- search_word: "task_name1_",
374
- expected: ["task_name1_1"]
375
- },
376
- ]
377
-
378
- cases.each do |c|
379
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
380
- begin
381
- case_before c
382
-
383
- # -- given --
384
- tudu_core = Tudu::Core.new
385
- tudu_core.init
386
- tudu_core.add c[:task_names1], c[:task_names2], c[:task_names3], c[:task_names4]
387
- tudu_core.choose(c[:choose_name]) if c[:choose]
388
-
389
- # -- when --
390
- actual = tudu_core.doings c[:search_word]
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
- return unless File.exists? "./tudu"
406
- FileUtils.rm_rf("./tudu")
407
- end
408
- end
409
- end
410
-
411
- context :dones do
412
- cases = [
413
- {
414
- case_no: 1,
415
- case_title: "doings all tasks",
416
- task_names1: "task_name1",
417
- task_names2: "task_name2",
418
- task_names3: "task_name3",
419
- choose_names: ["task_name1", "task_name2"],
420
- done_names: ["task_name1"],
421
- search_word: nil,
422
- expected: ["task_name1"]
423
- },
424
- {
425
- case_no: 2,
426
- case_title: "doings search specific tasks",
427
- task_names1: "task_name1_1",
428
- task_names2: "task_name1_2",
429
- task_names3: "task_name2_1",
430
- choose_names: ["task_name1_1", "task_name1_2", "task_name2_1"],
431
- done_names: ["task_name1_1", "task_name1_2", "task_name2_1"],
432
- search_word: "task_name1_",
433
- expected: ["task_name1_1", "task_name1_2"]
434
- },
435
- ]
436
-
437
- cases.each do |c|
438
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
439
- begin
440
- case_before c
441
-
442
- # -- given --
443
- tudu_core = Tudu::Core.new
444
- tudu_core.init
445
- tudu_core.add c[:task_names1], c[:task_names2], c[:task_names3], c[:task_names4]
446
- c[:choose_names].each do |e|
447
- tudu_core.choose e
448
- tudu_core.done if c[:done_names].include? e
449
- end
450
-
451
- # -- when --
452
- actual = tudu_core.dones c[:search_word]
453
-
454
- # -- then --
455
- expect(actual).to eq(c[:expected])
456
- ensure
457
- case_after c
458
- end
459
- end
460
-
461
- def case_before(c)
462
- # implement each case before
463
- end
464
-
465
- def case_after(c)
466
- # implement each case after
467
- return unless File.exists? "./tudu"
468
- FileUtils.rm_rf("./tudu")
469
- end
470
- end
471
- end
472
-
473
- context :choose do
474
- cases = [
475
- {
476
- case_no: 1,
477
- case_title: "choose task",
478
- task_names1: "task_name1",
479
- task_names2: "task_name2",
480
- task_names3: "task_name3",
481
- choose: "task_name1",
482
- expected_todos: "task_name2\ntask_name3\n",
483
- expected_doings: "task_name1\n"
484
- },
485
- ]
486
-
487
- cases.each do |c|
488
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
489
- begin
490
- case_before c
491
-
492
- # -- given --
493
- tudu_core = Tudu::Core.new
494
- tudu_core.init
495
- tudu_core.add c[:task_names1], c[:task_names2], c[:task_names3]
496
-
497
- # -- when --
498
- tudu_core.choose c[:choose]
499
-
500
- # -- then --
501
- actual_doings = File.read("./tudu/#{Tudu::Tasks::TUDU_DOINGS_FILE}")
502
- expect(actual_doings).to eq(c[:expected_doings])
503
- actual_todos = File.read("./tudu/#{Tudu::Tasks::TUDU_TODOS_FILE}")
504
- expect(actual_todos).to eq(c[:expected_todos])
505
- ensure
506
- case_after c
507
- end
508
- end
509
-
510
- def case_before(c)
511
- # implement each case before
512
- end
513
-
514
- def case_after(c)
515
- # implement each case after
516
- return unless File.exists? "./tudu"
517
- FileUtils.rm_rf("./tudu")
518
- end
519
- end
520
- end
521
-
522
- context :done do
523
- cases = [
524
- {
525
- case_no: 1,
526
- case_title: "one doing to done, shift todo to doing",
527
- task_names1: "task_name1",
528
- task_names2: "task_name2",
529
- task_names3: "task_name3",
530
- choose: "task_name1",
531
- expected_doings: "task_name2\n",
532
- expected_done: "task_name1\n"
533
- },
534
- {
535
- case_no: 2,
536
- case_title: "one doing to done, not shift todo to doing",
537
- task_names1: "task_name1",
538
- choose: "task_name1",
539
- expected_doings: "",
540
- expected_done: "task_name1\n"
541
- },
542
- {
543
- case_no: 3,
544
- case_title: "no doing",
545
- task_names1: "task_name1",
546
- choose: "",
547
- expected_doings: "",
548
- expected_done: ""
549
- },
550
- ]
551
-
552
- cases.each do |c|
553
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
554
- begin
555
- case_before c
556
-
557
- # -- given --
558
- tudu_core = Tudu::Core.new
559
- tudu_core.init
560
- tudu_core.add c[:task_names1], c[:task_names2], c[:task_names3]
561
- tudu_core.choose c[:choose] unless c[:choose].empty?
562
-
563
- # -- when --
564
- tudu_core.done
565
-
566
- # -- then --
567
- actual_doings = File.read(Tudu::Tasks::TUDU_DOINGS_FILE_PATH)
568
- expect(actual_doings).to eq(c[:expected_doings])
569
- actual_dones = File.read(Tudu::Tasks::TUDU_DONES_FILE_PATH)
570
- expect(actual_dones).to eq(c[:expected_done])
571
- ensure
572
- case_after c
573
- end
574
- end
575
-
576
- def case_before(c)
577
- # implement each case before
578
- end
579
-
580
- def case_after(c)
581
- # implement each case after
582
- return unless File.exists? "./tudu"
583
- FileUtils.rm_rf("./tudu")
584
- end
585
- end
586
- end
587
- end
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+ require 'tudu_core'
4
+
5
+ describe Tudu::Core do
6
+ context :init do
7
+ cases = [
8
+ {
9
+ case_no: 1,
10
+ case_title: 'valid case',
11
+ expected_files: [
12
+ Tudu::Tasks::TUDU_FILE,
13
+ Tudu::Tasks::TUDU_TODOS_FILE,
14
+ Tudu::Tasks::TUDU_DOINGS_FILE,
15
+ Tudu::Tasks::TUDU_DONES_FILE
16
+ ],
17
+ expected_contents: [
18
+ Tudu::Tasks::TUDU_FILE_TEMPLATE,
19
+ Tudu::Tasks::TUDU_TODOS_FILE_TEMPLATE,
20
+ Tudu::Tasks::TUDU_DOINGS_FILE_TEMPLATE,
21
+ Tudu::Tasks::TUDU_DONES_FILE_TEMPLATE
22
+ ],
23
+ },
24
+ ]
25
+
26
+ cases.each do |c|
27
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
28
+ begin
29
+ case_before c
30
+
31
+ # -- given --
32
+ tudu_core = Tudu::Core.new
33
+
34
+ # -- when --
35
+ tudu_core.init
36
+
37
+ # -- then --
38
+ c[:expected_files].each_with_index do |file_name, index|
39
+ actual = File.open("./tudu/#{file_name}") { |f|f.read }
40
+ expect(actual).to eq(c[:expected_contents][index])
41
+ end
42
+ ensure
43
+ case_after c
44
+ end
45
+ end
46
+
47
+ def case_before(c)
48
+ # implement each case before
49
+ end
50
+
51
+ def case_after(c)
52
+ return unless File.exists? './tudu'
53
+ FileUtils.rm_rf('./tudu')
54
+ end
55
+ end
56
+ end
57
+
58
+ context :add do
59
+ cases = [
60
+ {
61
+ case_no: 1,
62
+ case_title: 'single add',
63
+ task_names1: 'task_name',
64
+ task_names2: nil,
65
+ task_names3: nil,
66
+ expected: ['task_name']
67
+ },
68
+ {
69
+ case_no: 2,
70
+ case_title: 'nil add',
71
+ task_names1: nil,
72
+ task_names2: nil,
73
+ task_names3: nil,
74
+ expected: []
75
+ },
76
+ {
77
+ case_no: 3,
78
+ case_title: 'multi add',
79
+ task_names1: 'task_name1',
80
+ task_names2: 'task_name2',
81
+ task_names3: 'task_name3',
82
+ expected: %w{task_name1 task_name2 task_name3}
83
+ },
84
+ {
85
+ case_no: 4,
86
+ case_title: 'duplicate add',
87
+ task_names1: 'task_name1',
88
+ task_names2: 'task_name1',
89
+ task_names3: nil,
90
+ expected: ['task_name1']
91
+ },
92
+ ]
93
+
94
+ cases.each do |c|
95
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
96
+ begin
97
+ case_before c
98
+
99
+ # -- given --
100
+ tudu_core = Tudu::Core.new
101
+ tudu_core.init
102
+
103
+ # -- when --
104
+ tudu_core.add c[:task_names1], c[:task_names2], c[:task_names3]
105
+
106
+ # -- then --
107
+ actual = File.read('./tudu/todos').split("\n")
108
+ expect(actual).to eq(c[:expected])
109
+ ensure
110
+ case_after c
111
+ end
112
+ end
113
+
114
+ def case_before(c)
115
+ # implement each case before
116
+ end
117
+
118
+ def case_after(c)
119
+ return unless File.exists? './tudu'
120
+ FileUtils.rm_rf('./tudu')
121
+ end
122
+ end
123
+ end
124
+
125
+ context :remove do
126
+ cases = [
127
+ {
128
+ case_no: 1,
129
+ case_title: 'single remove',
130
+ task_names1: 'task_name',
131
+ task_names2: nil,
132
+ task_names3: nil,
133
+ },
134
+ {
135
+ case_no: 2,
136
+ case_title: 'multi remove',
137
+ task_names1: 'task_name1',
138
+ task_names2: 'task_name2',
139
+ task_names3: 'task_name3',
140
+ },
141
+ {
142
+ case_no: 3,
143
+ case_title: 'not remove',
144
+ task_names1: 'invalid name',
145
+ task_names2: nil,
146
+ task_names3: nil,
147
+ },
148
+ ]
149
+
150
+ cases.each do |c|
151
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
152
+ begin
153
+ case_before c
154
+
155
+ # -- given --
156
+ tudu_core = Tudu::Core.new
157
+ tudu_core.init
158
+ tudu_core.add c[:task_names1], c[:task_names2], c[:task_names3]
159
+
160
+ # -- when --
161
+ tudu_core.remove c[:task_names1], c[:task_names2], c[:task_names3]
162
+
163
+ # -- then --
164
+ [c[:task_names1], c[:task_names2], c[:task_names3]].each do |e|
165
+ actual = false
166
+ %w{./tudu/todos ./tudu/doings ./tudu/dones}.each do |f|
167
+ actual = true if File.read(f).split("\n").include?(e)
168
+ end
169
+ expect(actual).to be_false
170
+ end
171
+ ensure
172
+ case_after c
173
+ end
174
+ end
175
+
176
+ def case_before(c)
177
+ # implement each case before
178
+ end
179
+
180
+ def case_after(c)
181
+ return unless File.exists? './tudu'
182
+ FileUtils.rm_rf('./tudu')
183
+ end
184
+ end
185
+ end
186
+
187
+ context :tasks do
188
+ cases = [
189
+ {
190
+ case_no: 1,
191
+ case_title: '[todos, dosings, dones] all tasks',
192
+ task_names1: 'task_name1',
193
+ task_names2: 'task_name2',
194
+ task_names3: 'task_name3',
195
+ search_word: nil,
196
+ expected: %w{task_name1 task_name2 task_name3}
197
+ },
198
+ {
199
+ case_no: 2,
200
+ case_title: '[todos, dosings, dones] search specific tasks',
201
+ task_names1: 'task_name1',
202
+ task_names2: 'task_name2',
203
+ task_names3: 'task_name3',
204
+ search_word: 'task_name1',
205
+ expected: ['task_name1']
206
+ },
207
+ {
208
+ case_no: 3,
209
+ case_title: '[todos, dosings, dones] search specific tasks by regexp',
210
+ task_names1: 'task_name1_1',
211
+ task_names2: 'task_name2_1',
212
+ task_names3: 'task_name2_2',
213
+ task_names4: 'task_name3_1',
214
+ search_word: 'task_name2_',
215
+ expected: %w{task_name2_1 task_name2_2}
216
+ },
217
+ {
218
+ case_no: 4,
219
+ case_title: '[todos, dosings, dones] all tasks with category option',
220
+ task_names1: 'task_name1',
221
+ task_names2: 'task_name2',
222
+ task_names3: 'task_name3',
223
+ search_word: nil,
224
+ options: { category: true },
225
+ expected: [
226
+ '========TODOS========',
227
+ 'task_name1',
228
+ 'task_name2',
229
+ 'task_name3',
230
+ '========DOINGS========',
231
+ '========DONES========',
232
+ ]
233
+ },
234
+ {
235
+ case_no: 5,
236
+ case_title: '[todos, dosings, dones] all tasks with category option, color option',
237
+ task_names1: 'task_name1',
238
+ task_names2: 'task_name2',
239
+ task_names3: 'task_name3',
240
+ search_word: nil,
241
+ choose_cnt: 1,
242
+ done_cnt: 1,
243
+ options: { category: true, color: true },
244
+ expected: [
245
+ '========TODOS========',
246
+ "\e[31mtask_name3\e[0m",
247
+ '========DOINGS========',
248
+ "\e[33mtask_name2\e[0m",
249
+ '========DONES========',
250
+ "\e[36mtask_name1\e[0m",
251
+ ]
252
+ },
253
+ ]
254
+
255
+ cases.each do |c|
256
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
257
+ begin
258
+ case_before c
259
+
260
+ # -- given --
261
+ tudu_core = Tudu::Core.new
262
+ tudu_core.init
263
+ tudu_core.add c[:task_names1], c[:task_names2], c[:task_names3], c[:task_names4]
264
+ c[:choose_cnt].times { tudu_core.choose nil } if c[:choose_cnt]
265
+ c[:done_cnt].times { tudu_core.done } if c[:done_cnt]
266
+
267
+ # -- when --
268
+ actual = tudu_core.tasks c[:search_word], c[:options]
269
+
270
+ # -- then --
271
+ expect(actual).to eq(c[:expected])
272
+ ensure
273
+ case_after c
274
+ end
275
+ end
276
+
277
+ def case_before(c)
278
+ # implement each case before
279
+ end
280
+
281
+ def case_after(c)
282
+ return unless File.exists? './tudu'
283
+ FileUtils.rm_rf('./tudu')
284
+ end
285
+ end
286
+ end
287
+
288
+ context :todos do
289
+ cases = [
290
+ {
291
+ case_no: 1,
292
+ case_title: 'todos all tasks',
293
+ task_names1: 'task_name1',
294
+ task_names2: 'task_name2',
295
+ task_names3: 'task_name3',
296
+ choose: true,
297
+ choose_name: 'task_name1',
298
+ search_word: nil,
299
+ expected: %w{task_name2 task_name3}
300
+ },
301
+ {
302
+ case_no: 2,
303
+ case_title: 'todos search specific tasks',
304
+ task_names1: 'task_name1',
305
+ task_names2: 'task_name2',
306
+ task_names3: 'task_name3',
307
+ choose: true,
308
+ choose_name: 'task_name1',
309
+ search_word: 'task_name3',
310
+ expected: ['task_name3']
311
+ },
312
+ {
313
+ case_no: 3,
314
+ case_title: 'todos search specific tasks by regexp',
315
+ task_names1: 'task_name1_1',
316
+ task_names2: 'task_name2_1',
317
+ task_names3: 'task_name2_2',
318
+ task_names4: 'task_name3_1',
319
+ choose: true,
320
+ choose_name: 'task_name1_1',
321
+ search_word: 'task_name2_',
322
+ expected: %w{task_name2_1 task_name2_2}
323
+ },
324
+ ]
325
+
326
+ cases.each do |c|
327
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
328
+ begin
329
+ case_before c
330
+
331
+ # -- given --
332
+ tudu_core = Tudu::Core.new
333
+ tudu_core.init
334
+ tudu_core.add c[:task_names1], c[:task_names2], c[:task_names3], c[:task_names4]
335
+ tudu_core.choose(c[:choose_name]) if c[:choose]
336
+
337
+ # -- when --
338
+ actual = tudu_core.todos c[:search_word]
339
+
340
+ # -- then --
341
+ expect(actual).to eq(c[:expected])
342
+ ensure
343
+ case_after c
344
+ end
345
+ end
346
+
347
+ def case_before(c)
348
+ # implement each case before
349
+ end
350
+
351
+ def case_after(c)
352
+ # implement each case after
353
+ return unless File.exists? './tudu'
354
+ FileUtils.rm_rf('./tudu')
355
+ end
356
+ end
357
+ end
358
+
359
+ context :doings do
360
+ cases = [
361
+ {
362
+ case_no: 1,
363
+ case_title: 'doings all tasks',
364
+ task_names1: 'task_name1',
365
+ task_names2: 'task_name2',
366
+ task_names3: 'task_name3',
367
+ choose: true,
368
+ choose_name: 'task_name1',
369
+ search_word: nil,
370
+ expected: ['task_name1']
371
+ },
372
+ {
373
+ case_no: 2,
374
+ case_title: 'doings search specific tasks',
375
+ task_names1: 'task_name1',
376
+ task_names2: 'task_name2',
377
+ task_names3: 'task_name3',
378
+ choose: true,
379
+ choose_name: 'task_name1',
380
+ search_word: nil,
381
+ expected: ['task_name1']
382
+ },
383
+ {
384
+ case_no: 3,
385
+ case_title: 'doings search specific tasks by regexp',
386
+ task_names1: 'task_name1_1',
387
+ task_names2: 'task_name2_1',
388
+ task_names3: 'task_name2_2',
389
+ task_names4: 'task_name3_1',
390
+ choose: true,
391
+ choose_name: 'task_name1_1',
392
+ search_word: 'task_name1_',
393
+ expected: ['task_name1_1']
394
+ },
395
+ ]
396
+
397
+ cases.each do |c|
398
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
399
+ begin
400
+ case_before c
401
+
402
+ # -- given --
403
+ tudu_core = Tudu::Core.new
404
+ tudu_core.init
405
+ tudu_core.add c[:task_names1], c[:task_names2], c[:task_names3], c[:task_names4]
406
+ tudu_core.choose(c[:choose_name]) if c[:choose]
407
+
408
+ # -- when --
409
+ actual = tudu_core.doings c[:search_word]
410
+
411
+ # -- then --
412
+ expect(actual).to eq(c[:expected])
413
+ ensure
414
+ case_after c
415
+ end
416
+ end
417
+
418
+ def case_before(c)
419
+ # implement each case before
420
+ end
421
+
422
+ def case_after(c)
423
+ # implement each case after
424
+ return unless File.exists? './tudu'
425
+ FileUtils.rm_rf('./tudu')
426
+ end
427
+ end
428
+ end
429
+
430
+ context :dones do
431
+ cases = [
432
+ {
433
+ case_no: 1,
434
+ case_title: 'doings all tasks',
435
+ task_names1: 'task_name1',
436
+ task_names2: 'task_name2',
437
+ task_names3: 'task_name3',
438
+ choose_names: %w{task_name1 task_name2},
439
+ done_names: ['task_name1'],
440
+ search_word: nil,
441
+ expected: ['task_name1']
442
+ },
443
+ {
444
+ case_no: 2,
445
+ case_title: 'doings search specific tasks',
446
+ task_names1: 'task_name1_1',
447
+ task_names2: 'task_name1_2',
448
+ task_names3: 'task_name2_1',
449
+ choose_names: %w{task_name1_1 task_name1_2 task_name2_1},
450
+ done_names: %w{task_name1_1 task_name1_2 task_name2_1},
451
+ search_word: 'task_name1_',
452
+ expected: %w{task_name1_1 task_name1_2}
453
+ },
454
+ ]
455
+
456
+ cases.each do |c|
457
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
458
+ begin
459
+ case_before c
460
+
461
+ # -- given --
462
+ tudu_core = Tudu::Core.new
463
+ tudu_core.init
464
+ tudu_core.add c[:task_names1], c[:task_names2], c[:task_names3], c[:task_names4]
465
+ c[:choose_names].each do |e|
466
+ tudu_core.choose e
467
+ tudu_core.done if c[:done_names].include? e
468
+ end
469
+
470
+ # -- when --
471
+ actual = tudu_core.dones c[:search_word]
472
+
473
+ # -- then --
474
+ expect(actual).to eq(c[:expected])
475
+ ensure
476
+ case_after c
477
+ end
478
+ end
479
+
480
+ def case_before(c)
481
+ # implement each case before
482
+ end
483
+
484
+ def case_after(c)
485
+ # implement each case after
486
+ return unless File.exists? './tudu'
487
+ FileUtils.rm_rf('./tudu')
488
+ end
489
+ end
490
+ end
491
+
492
+ context :choose do
493
+ cases = [
494
+ {
495
+ case_no: 1,
496
+ case_title: 'choose task',
497
+ task_names1: 'task_name1',
498
+ task_names2: 'task_name2',
499
+ task_names3: 'task_name3',
500
+ choose: 'task_name1',
501
+ expected_todos: "task_name2\ntask_name3\n",
502
+ expected_doings: "task_name1\n"
503
+ },
504
+ ]
505
+
506
+ cases.each do |c|
507
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
508
+ begin
509
+ case_before c
510
+
511
+ # -- given --
512
+ tudu_core = Tudu::Core.new
513
+ tudu_core.init
514
+ tudu_core.add c[:task_names1], c[:task_names2], c[:task_names3]
515
+
516
+ # -- when --
517
+ tudu_core.choose c[:choose]
518
+
519
+ # -- then --
520
+ actual_doings = File.read("./tudu/#{Tudu::Tasks::TUDU_DOINGS_FILE}")
521
+ expect(actual_doings).to eq(c[:expected_doings])
522
+ actual_todos = File.read("./tudu/#{Tudu::Tasks::TUDU_TODOS_FILE}")
523
+ expect(actual_todos).to eq(c[:expected_todos])
524
+ ensure
525
+ case_after c
526
+ end
527
+ end
528
+
529
+ def case_before(c)
530
+ # implement each case before
531
+ end
532
+
533
+ def case_after(c)
534
+ # implement each case after
535
+ return unless File.exists? './tudu'
536
+ FileUtils.rm_rf('./tudu')
537
+ end
538
+ end
539
+ end
540
+
541
+ context :done do
542
+ cases = [
543
+ {
544
+ case_no: 1,
545
+ case_title: 'one doing to done, shift todo to doing',
546
+ task_names1: 'task_name1',
547
+ task_names2: 'task_name2',
548
+ task_names3: 'task_name3',
549
+ choose: 'task_name1',
550
+ expected_doings: "task_name2\n",
551
+ expected_done: "task_name1\n"
552
+ },
553
+ {
554
+ case_no: 2,
555
+ case_title: 'one doing to done, not shift todo to doing',
556
+ task_names1: 'task_name1',
557
+ choose: 'task_name1',
558
+ expected_doings: '',
559
+ expected_done: "task_name1\n"
560
+ },
561
+ {
562
+ case_no: 3,
563
+ case_title: 'no doing',
564
+ task_names1: 'task_name1',
565
+ choose: '',
566
+ expected_doings: '',
567
+ expected_done: ''
568
+ },
569
+ ]
570
+
571
+ cases.each do |c|
572
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
573
+ begin
574
+ case_before c
575
+
576
+ # -- given --
577
+ tudu_core = Tudu::Core.new
578
+ tudu_core.init
579
+ tudu_core.add c[:task_names1], c[:task_names2], c[:task_names3]
580
+ tudu_core.choose c[:choose] unless c[:choose].empty?
581
+
582
+ # -- when --
583
+ tudu_core.done
584
+
585
+ # -- then --
586
+ actual_doings = File.read(Tudu::Tasks::TUDU_DOINGS_FILE_PATH)
587
+ expect(actual_doings).to eq(c[:expected_doings])
588
+ actual_dones = File.read(Tudu::Tasks::TUDU_DONES_FILE_PATH)
589
+ expect(actual_dones).to eq(c[:expected_done])
590
+ ensure
591
+ case_after c
592
+ end
593
+ end
594
+
595
+ def case_before(c)
596
+ # implement each case before
597
+ end
598
+
599
+ def case_after(c)
600
+ # implement each case after
601
+ return unless File.exists? './tudu'
602
+ FileUtils.rm_rf('./tudu')
603
+ end
604
+ end
605
+ end
606
+ end