troo 0.0.1 → 0.0.2
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.
- checksums.yaml +4 -4
- data/.gitignore +7 -0
- data/.ruby-version +1 -0
- data/Gemfile +0 -1
- data/Guardfile +6 -0
- data/LICENSE.txt +1 -0
- data/README.md +46 -3
- data/Rakefile +11 -0
- data/bin/troo +12 -0
- data/configuration.yml.example +7 -0
- data/features/add_board.feature +1 -0
- data/features/add_card.feature +1 -0
- data/features/add_comment.feature +1 -0
- data/features/add_list.feature +1 -0
- data/features/cleanup.feature +0 -0
- data/features/move_card_to_list.feature +1 -0
- data/features/refresh.feature +1 -0
- data/features/set_default.feature +7 -0
- data/features/show_board.feature +1 -0
- data/features/show_boards.feature +1 -0
- data/features/show_card.feature +1 -0
- data/features/show_comments.feature +1 -0
- data/features/show_list.feature +1 -0
- data/features/status.feature +1 -0
- data/features/step_definitions/troo_steps.rb +0 -0
- data/features/support/env.rb +31 -0
- data/features/troo.feature +1 -0
- data/features/version.feature +8 -0
- data/lib/troo.rb +24 -2
- data/lib/troo/actions/create_board.rb +43 -0
- data/lib/troo/actions/create_card.rb +43 -0
- data/lib/troo/actions/create_comment.rb +44 -0
- data/lib/troo/actions/create_list.rb +41 -0
- data/lib/troo/actions/move_card.rb +36 -0
- data/lib/troo/actions/refresh_all.rb +79 -0
- data/lib/troo/actions/set_default.rb +35 -0
- data/lib/troo/cli/add_cli.rb +83 -0
- data/lib/troo/cli/default_cli.rb +37 -0
- data/lib/troo/cli/main_cli.rb +130 -0
- data/lib/troo/cli/show_cli.rb +83 -0
- data/lib/troo/cli/thor_fixes.rb +9 -0
- data/lib/troo/display/board_decorator.rb +58 -0
- data/lib/troo/display/board_presenter.rb +65 -0
- data/lib/troo/display/card_decorator.rb +105 -0
- data/lib/troo/display/card_presenter.rb +27 -0
- data/lib/troo/display/comment_decorator.rb +32 -0
- data/lib/troo/display/comment_presenter.rb +35 -0
- data/lib/troo/display/decorator_helpers.rb +76 -0
- data/lib/troo/display/list_decorator.rb +53 -0
- data/lib/troo/display/list_presenter.rb +43 -0
- data/lib/troo/display/member_decorator.rb +24 -0
- data/lib/troo/display/member_presenter.rb +59 -0
- data/lib/troo/external/board.rb +49 -0
- data/lib/troo/external/board_adaptor.rb +43 -0
- data/lib/troo/external/card.rb +70 -0
- data/lib/troo/external/card_adaptor.rb +78 -0
- data/lib/troo/external/comment.rb +64 -0
- data/lib/troo/external/comment_adaptor.rb +53 -0
- data/lib/troo/external/list.rb +58 -0
- data/lib/troo/external/list_adaptor.rb +48 -0
- data/lib/troo/external/member.rb +52 -0
- data/lib/troo/external/member_adaptor.rb +63 -0
- data/lib/troo/models/board.rb +26 -0
- data/lib/troo/models/board_persistence.rb +53 -0
- data/lib/troo/models/board_retrieval.rb +45 -0
- data/lib/troo/models/card.rb +54 -0
- data/lib/troo/models/card_persistence.rb +53 -0
- data/lib/troo/models/card_retrieval.rb +49 -0
- data/lib/troo/models/comment.rb +32 -0
- data/lib/troo/models/comment_persistence.rb +53 -0
- data/lib/troo/models/comment_retrieval.rb +32 -0
- data/lib/troo/models/list.rb +27 -0
- data/lib/troo/models/list_persistence.rb +53 -0
- data/lib/troo/models/list_retrieval.rb +45 -0
- data/lib/troo/models/member.rb +18 -0
- data/lib/troo/models/member_persistence.rb +53 -0
- data/lib/troo/models/member_retrieval.rb +36 -0
- data/lib/troo/models/model_helpers.rb +32 -0
- data/lib/troo/models/refresh.rb +23 -0
- data/lib/troo/presentation/template.rb +31 -0
- data/lib/troo/troo.rb +69 -0
- data/lib/troo/version.rb +2 -1
- data/lib/troo/views/card.erb +17 -0
- data/lib/troo/views/comment.erb +3 -0
- data/logs/.gitkeep +0 -0
- data/test/cassettes/board_by_id.yml +59 -0
- data/test/cassettes/boards_all.yml +118 -0
- data/test/cassettes/card_by_card_id.yml +58 -0
- data/test/cassettes/cards_by_board_id.yml +117 -0
- data/test/cassettes/cards_by_list_id.yml +114 -0
- data/test/cassettes/comments_by_board_id.yml +122 -0
- data/test/cassettes/comments_by_card_id.yml +114 -0
- data/test/cassettes/comments_by_list_id.yml +109 -0
- data/test/cassettes/create_board.yml +62 -0
- data/test/cassettes/create_card.yml +63 -0
- data/test/cassettes/create_comment.yml +67 -0
- data/test/cassettes/create_list.yml +60 -0
- data/test/cassettes/list_by_list_id.yml +56 -0
- data/test/cassettes/lists_by_board_id.yml +118 -0
- data/test/cassettes/member_by_member_id.yml +60 -0
- data/test/cassettes/members_by_board_id.yml +109 -0
- data/test/cassettes/move_card.yml +61 -0
- data/test/lib/troo/actions/create_board_test.rb +47 -0
- data/test/lib/troo/actions/create_card_test.rb +54 -0
- data/test/lib/troo/actions/create_comment_test.rb +49 -0
- data/test/lib/troo/actions/create_list_test.rb +49 -0
- data/test/lib/troo/actions/move_card_test.rb +46 -0
- data/test/lib/troo/actions/refresh_all_test.rb +68 -0
- data/test/lib/troo/actions/set_default_test.rb +44 -0
- data/test/lib/troo/cli/add_cli_test.rb +216 -0
- data/test/lib/troo/cli/default_cli_test.rb +79 -0
- data/test/lib/troo/cli/main_cli_test.rb +232 -0
- data/test/lib/troo/cli/show_cli_test.rb +221 -0
- data/test/lib/troo/cli/thor_fixes_test.rb +21 -0
- data/test/lib/troo/display/board_decorator_test.rb +126 -0
- data/test/lib/troo/display/board_presenter_test.rb +77 -0
- data/test/lib/troo/display/card_decorator_test.rb +221 -0
- data/test/lib/troo/display/card_presenter_test.rb +38 -0
- data/test/lib/troo/display/comment_decorator_test.rb +65 -0
- data/test/lib/troo/display/comment_presenter_test.rb +47 -0
- data/test/lib/troo/display/decorator_helpers_test.rb +7 -0
- data/test/lib/troo/display/list_decorator_test.rb +98 -0
- data/test/lib/troo/display/list_presenter_test.rb +48 -0
- data/test/lib/troo/display/member_decorator_test.rb +42 -0
- data/test/lib/troo/display/member_presenter_test.rb +70 -0
- data/test/lib/troo/external/board_adaptor_test.rb +36 -0
- data/test/lib/troo/external/board_test.rb +69 -0
- data/test/lib/troo/external/card_adaptor_test.rb +50 -0
- data/test/lib/troo/external/card_test.rb +108 -0
- data/test/lib/troo/external/comment_adaptor_test.rb +41 -0
- data/test/lib/troo/external/comment_test.rb +88 -0
- data/test/lib/troo/external/list_adaptor_test.rb +38 -0
- data/test/lib/troo/external/list_test.rb +65 -0
- data/test/lib/troo/external/member_adaptor_test.rb +44 -0
- data/test/lib/troo/external/member_test.rb +65 -0
- data/test/lib/troo/models/board_persistence_test.rb +61 -0
- data/test/lib/troo/models/board_retrieval_test.rb +93 -0
- data/test/lib/troo/models/board_test.rb +50 -0
- data/test/lib/troo/models/card_persistence_test.rb +60 -0
- data/test/lib/troo/models/card_retrieval_test.rb +101 -0
- data/test/lib/troo/models/card_test.rb +102 -0
- data/test/lib/troo/models/comment_persistence_test.rb +65 -0
- data/test/lib/troo/models/comment_retrieval_test.rb +46 -0
- data/test/lib/troo/models/comment_test.rb +59 -0
- data/test/lib/troo/models/list_persistence_test.rb +60 -0
- data/test/lib/troo/models/list_retrieval_test.rb +93 -0
- data/test/lib/troo/models/list_test.rb +53 -0
- data/test/lib/troo/models/member_persistence_test.rb +59 -0
- data/test/lib/troo/models/member_retrieval_test.rb +58 -0
- data/test/lib/troo/models/member_test.rb +44 -0
- data/test/lib/troo/models/model_helpers_test.rb +103 -0
- data/test/lib/troo/models/refresh_test.rb +45 -0
- data/test/lib/troo/presentation/template_test.rb +40 -0
- data/test/support/fabrication.rb +56 -0
- data/test/support/template.erb +3 -0
- data/test/support/vcr_setup.rb +36 -0
- data/test/test_helper.rb +30 -0
- data/troo.gemspec +24 -5
- metadata +501 -23
@@ -0,0 +1,221 @@
|
|
1
|
+
require_relative "../../../test_helper"
|
2
|
+
|
3
|
+
module Troo
|
4
|
+
describe CardDecorator do
|
5
|
+
let(:described_class) { CardDecorator }
|
6
|
+
let(:described_instance) { described_class.new(@card, options) }
|
7
|
+
let(:default) { true }
|
8
|
+
let(:description) { "Finish Troo for fame and fortune." }
|
9
|
+
let(:options) { {} }
|
10
|
+
|
11
|
+
before do
|
12
|
+
@board = Fabricate(:board)
|
13
|
+
@list = Fabricate(:list)
|
14
|
+
@card = Fabricate(:card, desc: description, default: default, external_member_ids: ["5195fdb5a8c01a2318004f5d", "some_member_id"])
|
15
|
+
@comment = Fabricate(:comment)
|
16
|
+
@comment_2 = Fabricate(:comment, text: "My Other Test Comment")
|
17
|
+
@comment_3 = Fabricate(:comment, text: "My Lithium Comment")
|
18
|
+
@comment_4 = Fabricate(:comment, text: "My Beryllium Comment")
|
19
|
+
@member = Fabricate(:member)
|
20
|
+
@member_2 = Fabricate(:member, username: "mysterywoman", external_member_id: "some_member_id")
|
21
|
+
end
|
22
|
+
|
23
|
+
after { database_cleanup }
|
24
|
+
|
25
|
+
describe "#initialize" do
|
26
|
+
subject { described_instance }
|
27
|
+
|
28
|
+
it "assigns the card to an instance variable" do
|
29
|
+
subject.instance_variable_get("@card").must_equal(@card)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "assigns the options to an instance variable" do
|
33
|
+
subject.instance_variable_get("@options").must_equal(options)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "#short" do
|
38
|
+
subject { described_instance.short }
|
39
|
+
|
40
|
+
it "returns a one line overview of the card" do
|
41
|
+
subject.must_equal(" * (67) My Test Card\n")
|
42
|
+
end
|
43
|
+
|
44
|
+
context "when the ansicolor option is false" do
|
45
|
+
let(:options) { { ansicolor: false } }
|
46
|
+
|
47
|
+
it "returns a one line overview of the board" do
|
48
|
+
subject.must_equal(" * (67) My Test Card\n")
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe "#title" do
|
54
|
+
subject { described_instance.title }
|
55
|
+
|
56
|
+
it "returns a formatted string representing the card title" do
|
57
|
+
subject.must_match /\* \(67\) My Test Card/
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe "#name_str" do
|
62
|
+
subject { described_instance.name_str }
|
63
|
+
|
64
|
+
it "returns the formatted card name" do
|
65
|
+
subject.must_equal("My Test Card")
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
describe "#default_str" do
|
70
|
+
subject { described_instance.default_str }
|
71
|
+
|
72
|
+
it "returns the formatted card default indicator" do
|
73
|
+
subject.must_equal(" * ")
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
describe "#id_str" do
|
78
|
+
subject { described_instance.id_str }
|
79
|
+
|
80
|
+
it "returns the formatted card id" do
|
81
|
+
subject.must_equal(" (67) ")
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
describe "#name" do
|
86
|
+
subject { described_instance.name }
|
87
|
+
|
88
|
+
it "returns the card name" do
|
89
|
+
subject.must_equal(@card.name)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
describe "#default" do
|
94
|
+
subject { described_instance.default }
|
95
|
+
|
96
|
+
context "when default" do
|
97
|
+
it "return an indicator" do
|
98
|
+
subject.must_equal("*")
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
context "when not default" do
|
103
|
+
let(:default) { false }
|
104
|
+
|
105
|
+
it "returns nothing" do
|
106
|
+
subject.must_equal("")
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
describe "#id" do
|
112
|
+
subject { described_instance.id }
|
113
|
+
|
114
|
+
it "returns the card id" do
|
115
|
+
subject.must_equal(@card.short_id)
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
describe "#description" do
|
120
|
+
subject { described_instance.description }
|
121
|
+
|
122
|
+
context "when there are further details" do
|
123
|
+
it "returns the description" do
|
124
|
+
subject.must_equal(@card.desc)
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
context "when there are no further details" do
|
129
|
+
let(:description) { nil }
|
130
|
+
|
131
|
+
it "returns a polite message" do
|
132
|
+
subject.must_equal("There are no further details at this time.")
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
describe "#comments" do
|
138
|
+
subject { described_instance.comments }
|
139
|
+
|
140
|
+
context "when there are more than 3 comments" do
|
141
|
+
it "returns the comments" do
|
142
|
+
subject.must_match /There are more comments/
|
143
|
+
subject.must_match /My Test Comment/
|
144
|
+
subject.must_match /My Other Test Comment/
|
145
|
+
subject.must_match /My Lithium Comment/
|
146
|
+
subject.wont_match /My Beryllium Comment/
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
context "when there are 3 or less comments" do
|
151
|
+
before do
|
152
|
+
@comment_3.delete
|
153
|
+
@comment_4.delete
|
154
|
+
end
|
155
|
+
|
156
|
+
it "returns the comments" do
|
157
|
+
subject.must_match /My Test Comment/
|
158
|
+
subject.must_match /My Other Test Comment/
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
context "when there are no comments" do
|
163
|
+
before do
|
164
|
+
@comment.delete
|
165
|
+
@comment_2.delete
|
166
|
+
@comment_3.delete
|
167
|
+
@comment_4.delete
|
168
|
+
end
|
169
|
+
|
170
|
+
it "returns a polite message" do
|
171
|
+
subject.must_equal("No comments have been left.")
|
172
|
+
end
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
describe "#members" do
|
177
|
+
subject { described_instance.members }
|
178
|
+
|
179
|
+
context "when there are members" do
|
180
|
+
it "returns the members" do
|
181
|
+
subject.must_equal("@gavinlaking1 and @mysterywoman")
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
context "when there are no members" do
|
186
|
+
before do
|
187
|
+
@member.delete
|
188
|
+
@member_2.delete
|
189
|
+
end
|
190
|
+
|
191
|
+
it "returns a polite message" do
|
192
|
+
subject.must_equal("No members have been assigned.")
|
193
|
+
end
|
194
|
+
end
|
195
|
+
end
|
196
|
+
|
197
|
+
describe "#last_activity_date" do
|
198
|
+
subject { described_instance.last_activity_date }
|
199
|
+
|
200
|
+
it "returns the last activity date" do
|
201
|
+
subject.must_equal("Tue, Dec 17 at 21:48")
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
describe "#board" do
|
206
|
+
subject { described_instance.board }
|
207
|
+
|
208
|
+
it "returns the board details" do
|
209
|
+
subject.must_match "(1) My Test Board"
|
210
|
+
end
|
211
|
+
end
|
212
|
+
|
213
|
+
describe "#list" do
|
214
|
+
subject { described_class.new(@card).list }
|
215
|
+
|
216
|
+
it "returns the list details" do
|
217
|
+
subject.must_match "(1) My Test List"
|
218
|
+
end
|
219
|
+
end
|
220
|
+
end
|
221
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require_relative "../../../test_helper"
|
2
|
+
|
3
|
+
module Troo
|
4
|
+
describe CardPresenter do
|
5
|
+
let(:described_class) { CardPresenter }
|
6
|
+
let(:options) { { } }
|
7
|
+
|
8
|
+
before do
|
9
|
+
@card = Fabricate(:card)
|
10
|
+
@board = Fabricate(:board)
|
11
|
+
@list = Fabricate(:list)
|
12
|
+
end
|
13
|
+
|
14
|
+
after { database_cleanup }
|
15
|
+
|
16
|
+
describe "#initialize" do
|
17
|
+
subject { described_class.new(@card, options) }
|
18
|
+
|
19
|
+
it "assigns the card to an instance variable" do
|
20
|
+
subject.instance_variable_get("@card").must_equal(@card)
|
21
|
+
end
|
22
|
+
|
23
|
+
it "assigns the options to an instance variable" do
|
24
|
+
subject.instance_variable_get("@options").must_equal(options)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe "#render_show" do
|
29
|
+
subject { capture_io { described_class.render_show(@card, options) }.join }
|
30
|
+
|
31
|
+
it "renders the view" do
|
32
|
+
subject.must_match /My Test Card/
|
33
|
+
subject.must_match /No comments have been left/
|
34
|
+
subject.must_match /Metadata/
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require_relative "../../../test_helper"
|
2
|
+
|
3
|
+
module Troo
|
4
|
+
describe CommentDecorator do
|
5
|
+
let(:described_class) { CommentDecorator }
|
6
|
+
let(:default) { true }
|
7
|
+
|
8
|
+
before do
|
9
|
+
@comment = Fabricate(:comment)
|
10
|
+
@member = Fabricate(:member)
|
11
|
+
end
|
12
|
+
|
13
|
+
after { database_cleanup }
|
14
|
+
|
15
|
+
describe "#initialize" do
|
16
|
+
subject { described_class.new(@comment) }
|
17
|
+
|
18
|
+
it "assigns the comment to an instance variable" do
|
19
|
+
subject.instance_variable_get("@comment").must_equal(@comment)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "#as_view" do
|
24
|
+
subject { described_class.new(@comment).as_view }
|
25
|
+
|
26
|
+
it "returns the rendered comment" do
|
27
|
+
subject.must_match /gavinlaking1/
|
28
|
+
subject.must_match /My Test Comment/
|
29
|
+
subject.must_match /Tue, Dec 17 at 22:01/
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe "#member_username" do
|
34
|
+
subject { described_class.new(@comment).member_username }
|
35
|
+
|
36
|
+
it "returns the comment member username" do
|
37
|
+
subject.must_equal(@comment.member.username + ":")
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe "#text" do
|
42
|
+
subject { described_class.new(@comment).text }
|
43
|
+
|
44
|
+
it "returns the comment text" do
|
45
|
+
subject.must_equal(@comment.text)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe "#date" do
|
50
|
+
subject { described_class.new(@comment).date }
|
51
|
+
|
52
|
+
it "returns the comment date" do
|
53
|
+
subject.must_equal("Tue, Dec 17 at 22:01")
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe "#id" do
|
58
|
+
subject { described_class.new(@comment).id }
|
59
|
+
|
60
|
+
it "returns the comment id" do
|
61
|
+
subject.must_equal("(#{@comment.id})")
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require_relative "../../../test_helper"
|
2
|
+
|
3
|
+
module Troo
|
4
|
+
describe CommentPresenter do
|
5
|
+
let(:described_class) { CommentPresenter }
|
6
|
+
let(:options) { { } }
|
7
|
+
|
8
|
+
before do
|
9
|
+
@card = Fabricate(:card)
|
10
|
+
@comment = Fabricate(:comment)
|
11
|
+
@member = Fabricate(:member)
|
12
|
+
end
|
13
|
+
|
14
|
+
after { database_cleanup }
|
15
|
+
|
16
|
+
describe "#initialize" do
|
17
|
+
subject { described_class.new(@card, options) }
|
18
|
+
|
19
|
+
it "assigns the card to an instance variable" do
|
20
|
+
subject.instance_variable_get("@card").must_equal(@card)
|
21
|
+
end
|
22
|
+
|
23
|
+
it "assigns the options to an instance variable" do
|
24
|
+
subject.instance_variable_get("@options").must_equal(options)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe "#render_show" do
|
29
|
+
subject { capture_io { described_class.render_show(@card, options) }.join }
|
30
|
+
|
31
|
+
context "when the card has comments" do
|
32
|
+
it "renders the view" do
|
33
|
+
subject.must_match /My Test Card/
|
34
|
+
subject.must_match /My Test Comment/
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
context "when the card has no comments" do
|
39
|
+
before { @comment.delete }
|
40
|
+
|
41
|
+
it "returns a polite message" do
|
42
|
+
subject.must_match /No comments were found/
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
require_relative "../../../test_helper"
|
2
|
+
|
3
|
+
module Troo
|
4
|
+
describe ListDecorator do
|
5
|
+
let(:described_class) { ListDecorator }
|
6
|
+
let(:default) { true }
|
7
|
+
let(:options) { {} }
|
8
|
+
|
9
|
+
before { @list = Fabricate(:list, default: default) }
|
10
|
+
after { database_cleanup }
|
11
|
+
|
12
|
+
describe "#initialize" do
|
13
|
+
subject { described_class.new(@list, options) }
|
14
|
+
|
15
|
+
it "assigns the list to an instance variable" do
|
16
|
+
subject.instance_variable_get("@list").must_equal(@list)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "assigns the options to an instance variable" do
|
20
|
+
subject.instance_variable_get("@options").must_equal(options)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe "#short" do
|
25
|
+
subject { described_class.new(@list, options).short }
|
26
|
+
|
27
|
+
it "returns a one line overview of the list" do
|
28
|
+
subject.must_equal(" * \e[32m\e[4m(1) \e[0m\e[32m\e[4mMy Test List\e[0m\n")
|
29
|
+
end
|
30
|
+
|
31
|
+
context "when the ansicolor option is false" do
|
32
|
+
let(:options) { { ansicolor: false } }
|
33
|
+
|
34
|
+
it "returns a one line overview of the board" do
|
35
|
+
subject.must_equal(" * (1) My Test List\n")
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe "#name_str" do
|
41
|
+
subject { described_class.new(@list).name_str }
|
42
|
+
|
43
|
+
it "returns the formatted list name" do
|
44
|
+
subject.must_equal("\e[32m\e[4mMy Test List\e[0m")
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe "#default_str" do
|
49
|
+
subject { described_class.new(@list).default_str }
|
50
|
+
|
51
|
+
it "returns the formatted card default indicator" do
|
52
|
+
subject.must_equal(" * ")
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe "#id_str" do
|
57
|
+
subject { described_class.new(@list).id_str }
|
58
|
+
|
59
|
+
it "returns the formatted list id" do
|
60
|
+
subject.must_equal("\e[32m\e[4m(1) \e[0m")
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
describe "#name" do
|
65
|
+
subject { described_class.new(@list).name }
|
66
|
+
|
67
|
+
it "returns the list name" do
|
68
|
+
subject.must_equal(@list.name)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
describe "#default" do
|
73
|
+
subject { described_class.new(@list).default }
|
74
|
+
|
75
|
+
context "when default" do
|
76
|
+
it "return an indicator" do
|
77
|
+
subject.must_equal("*")
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
context "when not default" do
|
82
|
+
let(:default) { false }
|
83
|
+
|
84
|
+
it "returns nothing" do
|
85
|
+
subject.must_equal("")
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
describe "#id" do
|
91
|
+
subject { described_class.new(@list).id }
|
92
|
+
|
93
|
+
it "returns the list id" do
|
94
|
+
subject.must_equal(@list.id.to_s)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|