tudu 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -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