troo 0.0.7 → 0.0.8

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.
Files changed (271) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.rubocop.yml +2 -0
  4. data/Guardfile +3 -1
  5. data/Rakefile +7 -0
  6. data/bin/troo +3 -8
  7. data/config/.gitkeep +0 -0
  8. data/config/cucumber.yml +8 -0
  9. data/features/add/board.feature +26 -0
  10. data/features/add/card.feature +34 -0
  11. data/features/add/comment.feature +21 -0
  12. data/features/add/list.feature +24 -0
  13. data/features/cleanup.feature +13 -0
  14. data/features/default/board.feature +21 -0
  15. data/features/default/card.feature +21 -0
  16. data/features/default/list.feature +21 -0
  17. data/features/refresh/all.feature +7 -0
  18. data/features/refresh/board.feature +26 -0
  19. data/features/refresh/card.feature +27 -0
  20. data/features/refresh/list.feature +27 -0
  21. data/features/show/board.feature +32 -0
  22. data/features/show/card.feature +62 -0
  23. data/features/show/comment.feature +39 -0
  24. data/features/show/list.feature +37 -0
  25. data/features/status.feature +46 -1
  26. data/features/step_definitions/fabrication_steps.rb +34 -0
  27. data/features/step_definitions/troo_steps.rb +16 -0
  28. data/features/support/env.rb +22 -24
  29. data/features/troo.feature +31 -1
  30. data/lib/troo/actions/create_board.rb +10 -7
  31. data/lib/troo/actions/create_card.rb +5 -4
  32. data/lib/troo/actions/create_comment.rb +15 -13
  33. data/lib/troo/actions/create_list.rb +5 -4
  34. data/lib/troo/actions/move_card.rb +4 -3
  35. data/lib/troo/{external/board_adaptor.rb → adaptors/board.rb} +3 -14
  36. data/lib/troo/{external/card_adaptor.rb → adaptors/card.rb} +4 -15
  37. data/lib/troo/{external/comment_adaptor.rb → adaptors/comment.rb} +6 -17
  38. data/lib/troo/{external/list_adaptor.rb → adaptors/list.rb} +3 -14
  39. data/lib/troo/{external/member_adaptor.rb → adaptors/member.rb} +3 -14
  40. data/lib/troo/adaptors/resource.rb +17 -0
  41. data/lib/troo/cli/add.rb +53 -0
  42. data/lib/troo/cli/default.rb +25 -0
  43. data/lib/troo/cli/main.rb +46 -0
  44. data/lib/troo/cli/refresh.rb +31 -0
  45. data/lib/troo/cli/show.rb +41 -0
  46. data/lib/troo/cli/thor_fixes.rb +13 -0
  47. data/lib/troo/commands/add/board.rb +26 -0
  48. data/lib/troo/commands/add/card.rb +33 -0
  49. data/lib/troo/commands/add/comment.rb +33 -0
  50. data/lib/troo/commands/add/list.rb +33 -0
  51. data/lib/troo/commands/add/resource.rb +21 -0
  52. data/lib/troo/commands/commands.rb +28 -0
  53. data/lib/troo/commands/default/board.rb +25 -0
  54. data/lib/troo/commands/default/card.rb +25 -0
  55. data/lib/troo/commands/default/list.rb +25 -0
  56. data/lib/troo/commands/default/resource.rb +26 -0
  57. data/lib/troo/commands/refresh/all.rb +41 -0
  58. data/lib/troo/commands/refresh/board.rb +28 -0
  59. data/lib/troo/commands/refresh/card.rb +29 -0
  60. data/lib/troo/commands/refresh/list.rb +29 -0
  61. data/lib/troo/commands/refresh/resource.rb +42 -0
  62. data/lib/troo/commands/show/board.rb +13 -0
  63. data/lib/troo/commands/show/boards.rb +35 -0
  64. data/lib/troo/commands/show/card.rb +13 -0
  65. data/lib/troo/commands/show/comments.rb +21 -0
  66. data/lib/troo/commands/show/list.rb +13 -0
  67. data/lib/troo/commands/show/resource.rb +41 -0
  68. data/lib/troo/commands/status/board.rb +30 -0
  69. data/lib/troo/commands/status/card.rb +30 -0
  70. data/lib/troo/commands/status/list.rb +30 -0
  71. data/lib/troo/commands/status/resource.rb +34 -0
  72. data/lib/troo/decorators/board.rb +66 -0
  73. data/lib/troo/decorators/card.rb +105 -0
  74. data/lib/troo/decorators/comment.rb +36 -0
  75. data/lib/troo/decorators/list.rb +60 -0
  76. data/lib/troo/decorators/member.rb +28 -0
  77. data/lib/troo/external/board.rb +14 -26
  78. data/lib/troo/external/card.rb +2 -19
  79. data/lib/troo/external/comment.rb +5 -23
  80. data/lib/troo/external/list.rb +2 -20
  81. data/lib/troo/external/member.rb +2 -20
  82. data/lib/troo/external/resource.rb +21 -6
  83. data/lib/troo/helpers/command_helpers.rb +37 -0
  84. data/lib/troo/{display → helpers}/decorator_helpers.rb +23 -17
  85. data/lib/troo/{models → helpers}/model_helpers.rb +1 -1
  86. data/lib/troo/models/behaviours/set_default.rb +49 -0
  87. data/lib/troo/models/board.rb +10 -7
  88. data/lib/troo/models/card.rb +33 -15
  89. data/lib/troo/models/comment.rb +8 -5
  90. data/lib/troo/models/list.rb +10 -6
  91. data/lib/troo/models/member.rb +7 -4
  92. data/lib/troo/models/persistence/board.rb +19 -0
  93. data/lib/troo/models/persistence/card.rb +19 -0
  94. data/lib/troo/models/persistence/comment.rb +19 -0
  95. data/lib/troo/models/persistence/list.rb +19 -0
  96. data/lib/troo/models/persistence/member.rb +19 -0
  97. data/lib/troo/models/persistence/resource.rb +50 -0
  98. data/lib/troo/models/refresh.rb +1 -1
  99. data/lib/troo/models/remote/comment.rb +21 -0
  100. data/lib/troo/models/remote/resource.rb +25 -0
  101. data/lib/troo/models/retrieval/board.rb +29 -0
  102. data/lib/troo/models/retrieval/card.rb +33 -0
  103. data/lib/troo/models/retrieval/comment.rb +25 -0
  104. data/lib/troo/models/retrieval/list.rb +29 -0
  105. data/lib/troo/models/retrieval/member.rb +25 -0
  106. data/lib/troo/models/retrieval/resource.rb +36 -0
  107. data/lib/troo/presentation/sentence.rb +57 -0
  108. data/lib/troo/presentation/template.rb +4 -3
  109. data/lib/troo/presenters/board.rb +81 -0
  110. data/lib/troo/presenters/card.rb +30 -0
  111. data/lib/troo/presenters/comment.rb +38 -0
  112. data/lib/troo/presenters/list.rb +44 -0
  113. data/lib/troo/presenters/member.rb +32 -0
  114. data/lib/troo/troo.rb +79 -65
  115. data/lib/troo/version.rb +1 -2
  116. data/lib/troo.rb +36 -8
  117. data/test/lib/troo/actions/create_board_test.rb +34 -15
  118. data/test/lib/troo/actions/create_card_test.rb +35 -18
  119. data/test/lib/troo/actions/create_comment_test.rb +38 -16
  120. data/test/lib/troo/actions/create_list_test.rb +31 -15
  121. data/test/lib/troo/actions/move_card_test.rb +23 -15
  122. data/test/lib/troo/adaptors/board_test.rb +38 -0
  123. data/test/lib/troo/adaptors/card_test.rb +49 -0
  124. data/test/lib/troo/adaptors/comment_test.rb +41 -0
  125. data/test/lib/troo/adaptors/list_test.rb +38 -0
  126. data/test/lib/troo/adaptors/member_test.rb +44 -0
  127. data/test/lib/troo/commands/add/board_test.rb +43 -0
  128. data/test/lib/troo/commands/add/card_test.rb +44 -0
  129. data/test/lib/troo/commands/add/comment_test.rb +44 -0
  130. data/test/lib/troo/commands/add/list_test.rb +44 -0
  131. data/test/lib/troo/commands/add/resource_test.rb +25 -0
  132. data/test/lib/troo/commands/default/board_test.rb +37 -0
  133. data/test/lib/troo/commands/default/card_test.rb +37 -0
  134. data/test/lib/troo/commands/default/list_test.rb +37 -0
  135. data/test/lib/troo/commands/default/resource_test.rb +20 -0
  136. data/test/lib/troo/commands/refresh/all_test.rb +39 -0
  137. data/test/lib/troo/commands/refresh/board_test.rb +62 -0
  138. data/test/lib/troo/commands/refresh/card_test.rb +62 -0
  139. data/test/lib/troo/commands/refresh/list_test.rb +62 -0
  140. data/test/lib/troo/commands/refresh/resource_test.rb +20 -0
  141. data/test/lib/troo/commands/show/board_test.rb +65 -0
  142. data/test/lib/troo/commands/show/boards_test.rb +36 -0
  143. data/test/lib/troo/commands/show/card_test.rb +64 -0
  144. data/test/lib/troo/commands/show/comments_test.rb +64 -0
  145. data/test/lib/troo/commands/show/list_test.rb +64 -0
  146. data/test/lib/troo/commands/show/resource_test.rb +25 -0
  147. data/test/lib/troo/commands/status/board_test.rb +43 -0
  148. data/test/lib/troo/commands/status/card_test.rb +43 -0
  149. data/test/lib/troo/commands/status/list_test.rb +43 -0
  150. data/test/lib/troo/commands/status/resource_test.rb +19 -0
  151. data/test/lib/troo/decorators/board_test.rb +129 -0
  152. data/test/lib/troo/decorators/card_test.rb +237 -0
  153. data/test/lib/troo/decorators/comment_test.rb +74 -0
  154. data/test/lib/troo/decorators/list_test.rb +102 -0
  155. data/test/lib/troo/decorators/member_test.rb +50 -0
  156. data/test/lib/troo/external/board_test.rb +74 -41
  157. data/test/lib/troo/external/card_test.rb +49 -37
  158. data/test/lib/troo/external/comment_test.rb +43 -33
  159. data/test/lib/troo/external/list_test.rb +37 -30
  160. data/test/lib/troo/external/member_test.rb +37 -30
  161. data/test/lib/troo/external/resource_test.rb +18 -1
  162. data/test/lib/troo/helpers/command_helpers_test.rb +82 -0
  163. data/test/lib/troo/{display → helpers}/decorator_helpers_test.rb +6 -6
  164. data/test/lib/troo/helpers/model_helpers_test.rb +103 -0
  165. data/test/lib/troo/models/behaviours/set_default_test.rb +54 -0
  166. data/test/lib/troo/models/board_test.rb +13 -14
  167. data/test/lib/troo/models/card_test.rb +64 -33
  168. data/test/lib/troo/models/comment_test.rb +18 -19
  169. data/test/lib/troo/models/list_test.rb +15 -15
  170. data/test/lib/troo/models/member_test.rb +18 -18
  171. data/test/lib/troo/models/persistence/board_test.rb +62 -0
  172. data/test/lib/troo/models/persistence/card_test.rb +61 -0
  173. data/test/lib/troo/models/persistence/comment_test.rb +69 -0
  174. data/test/lib/troo/models/persistence/list_test.rb +60 -0
  175. data/test/lib/troo/models/persistence/member_test.rb +60 -0
  176. data/test/lib/troo/models/refresh_test.rb +12 -11
  177. data/test/lib/troo/models/remote/comment_test.rb +56 -0
  178. data/test/lib/troo/models/remote/resource_test.rb +26 -0
  179. data/test/lib/troo/models/retrieval/board_test.rb +93 -0
  180. data/test/lib/troo/models/retrieval/card_test.rb +101 -0
  181. data/test/lib/troo/models/retrieval/comment_test.rb +46 -0
  182. data/test/lib/troo/models/retrieval/list_test.rb +93 -0
  183. data/test/lib/troo/models/retrieval/member_test.rb +58 -0
  184. data/test/lib/troo/presentation/sentence_test.rb +57 -0
  185. data/test/lib/troo/presentation/template_test.rb +17 -16
  186. data/test/lib/troo/presenters/board_test.rb +79 -0
  187. data/test/lib/troo/presenters/card_test.rb +41 -0
  188. data/test/lib/troo/presenters/comment_test.rb +49 -0
  189. data/test/lib/troo/presenters/list_test.rb +50 -0
  190. data/test/lib/troo/presenters/member_test.rb +40 -0
  191. data/test/support/fabrication.rb +31 -32
  192. data/test/support/vcr_setup.rb +7 -9
  193. data/test/system_test.sh +55 -0
  194. data/test/test_helper.rb +10 -10
  195. data/troo.gemspec +1 -0
  196. metadata +232 -134
  197. data/features/add_board.feature +0 -1
  198. data/features/add_card.feature +0 -1
  199. data/features/add_comment.feature +0 -1
  200. data/features/add_list.feature +0 -1
  201. data/features/move_card_to_list.feature +0 -1
  202. data/features/refresh.feature +0 -1
  203. data/features/set_default.feature +0 -7
  204. data/features/show_board.feature +0 -1
  205. data/features/show_boards.feature +0 -1
  206. data/features/show_card.feature +0 -1
  207. data/features/show_comments.feature +0 -1
  208. data/features/show_list.feature +0 -1
  209. data/features/version.feature +0 -8
  210. data/lib/troo/actions/refresh_all.rb +0 -79
  211. data/lib/troo/actions/set_default.rb +0 -46
  212. data/lib/troo/cli/add_cli.rb +0 -83
  213. data/lib/troo/cli/cli_helpers.rb +0 -34
  214. data/lib/troo/cli/default_cli.rb +0 -32
  215. data/lib/troo/cli/main_cli.rb +0 -132
  216. data/lib/troo/cli/show_cli.rb +0 -64
  217. data/lib/troo/display/board_decorator.rb +0 -62
  218. data/lib/troo/display/board_presenter.rb +0 -71
  219. data/lib/troo/display/card_decorator.rb +0 -100
  220. data/lib/troo/display/card_presenter.rb +0 -27
  221. data/lib/troo/display/comment_decorator.rb +0 -33
  222. data/lib/troo/display/comment_presenter.rb +0 -31
  223. data/lib/troo/display/list_decorator.rb +0 -57
  224. data/lib/troo/display/list_presenter.rb +0 -41
  225. data/lib/troo/display/member_decorator.rb +0 -25
  226. data/lib/troo/display/member_presenter.rb +0 -59
  227. data/lib/troo/models/board_persistence.rb +0 -25
  228. data/lib/troo/models/board_retrieval.rb +0 -45
  229. data/lib/troo/models/card_persistence.rb +0 -25
  230. data/lib/troo/models/card_retrieval.rb +0 -49
  231. data/lib/troo/models/comment_persistence.rb +0 -25
  232. data/lib/troo/models/comment_retrieval.rb +0 -32
  233. data/lib/troo/models/list_persistence.rb +0 -25
  234. data/lib/troo/models/list_retrieval.rb +0 -45
  235. data/lib/troo/models/member_persistence.rb +0 -25
  236. data/lib/troo/models/member_retrieval.rb +0 -36
  237. data/lib/troo/models/persistence.rb +0 -39
  238. data/test/lib/troo/actions/refresh_all_test.rb +0 -68
  239. data/test/lib/troo/actions/set_default_test.rb +0 -44
  240. data/test/lib/troo/cli/add_cli_test.rb +0 -216
  241. data/test/lib/troo/cli/cli_helpers_test.rb +0 -24
  242. data/test/lib/troo/cli/default_cli_test.rb +0 -85
  243. data/test/lib/troo/cli/main_cli_test.rb +0 -234
  244. data/test/lib/troo/cli/show_cli_test.rb +0 -251
  245. data/test/lib/troo/display/board_decorator_test.rb +0 -126
  246. data/test/lib/troo/display/board_presenter_test.rb +0 -77
  247. data/test/lib/troo/display/card_decorator_test.rb +0 -213
  248. data/test/lib/troo/display/card_presenter_test.rb +0 -38
  249. data/test/lib/troo/display/comment_decorator_test.rb +0 -70
  250. data/test/lib/troo/display/comment_presenter_test.rb +0 -47
  251. data/test/lib/troo/display/list_decorator_test.rb +0 -98
  252. data/test/lib/troo/display/list_presenter_test.rb +0 -48
  253. data/test/lib/troo/display/member_decorator_test.rb +0 -47
  254. data/test/lib/troo/display/member_presenter_test.rb +0 -70
  255. data/test/lib/troo/external/board_adaptor_test.rb +0 -36
  256. data/test/lib/troo/external/card_adaptor_test.rb +0 -50
  257. data/test/lib/troo/external/comment_adaptor_test.rb +0 -41
  258. data/test/lib/troo/external/list_adaptor_test.rb +0 -38
  259. data/test/lib/troo/external/member_adaptor_test.rb +0 -44
  260. data/test/lib/troo/models/board_persistence_test.rb +0 -61
  261. data/test/lib/troo/models/board_retrieval_test.rb +0 -93
  262. data/test/lib/troo/models/card_persistence_test.rb +0 -60
  263. data/test/lib/troo/models/card_retrieval_test.rb +0 -101
  264. data/test/lib/troo/models/comment_persistence_test.rb +0 -65
  265. data/test/lib/troo/models/comment_retrieval_test.rb +0 -46
  266. data/test/lib/troo/models/list_persistence_test.rb +0 -60
  267. data/test/lib/troo/models/list_retrieval_test.rb +0 -93
  268. data/test/lib/troo/models/member_persistence_test.rb +0 -59
  269. data/test/lib/troo/models/member_retrieval_test.rb +0 -58
  270. data/test/lib/troo/models/model_helpers_test.rb +0 -103
  271. data/test/lib/troo/models/persistence_test.rb +0 -6
@@ -1,70 +0,0 @@
1
- require_relative "../../../test_helper"
2
-
3
- module Troo
4
- describe CommentDecorator do
5
- let(:described_class) { CommentDecorator }
6
- let(:default) { true }
7
- let(:options) { {} }
8
-
9
- before do
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(@comment, options) }
18
-
19
- it "assigns the comment to an instance variable" do
20
- subject.instance_variable_get("@comment").must_equal(@comment)
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 "#as_view" do
29
- subject { described_class.new(@comment).as_view }
30
-
31
- it "returns the rendered comment" do
32
- subject.must_match /gavinlaking1/
33
- subject.must_match /My Test Comment/
34
- subject.must_match /Tue, Dec 17 at 22:01/
35
- end
36
- end
37
-
38
- describe "#member_username" do
39
- subject { described_class.new(@comment).member_username }
40
-
41
- it "returns the comment member username" do
42
- subject.must_equal(@comment.member.username + ":")
43
- end
44
- end
45
-
46
- describe "#text" do
47
- subject { described_class.new(@comment).text }
48
-
49
- it "returns the comment text" do
50
- subject.must_equal(@comment.text)
51
- end
52
- end
53
-
54
- describe "#date" do
55
- subject { described_class.new(@comment).date }
56
-
57
- it "returns the comment date" do
58
- subject.must_equal("Tue, Dec 17 at 22:01")
59
- end
60
- end
61
-
62
- describe "#id" do
63
- subject { described_class.new(@comment).id }
64
-
65
- it "returns the comment id" do
66
- subject.must_equal("(#{@comment.id})")
67
- end
68
- end
69
- end
70
- end
@@ -1,47 +0,0 @@
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 "#show" do
29
- subject { capture_io { described_class.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
@@ -1,98 +0,0 @@
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
@@ -1,48 +0,0 @@
1
- require_relative "../../../test_helper"
2
-
3
- module Troo
4
- describe ListPresenter do
5
- let(:described_class) { ListPresenter }
6
- let(:options) { { } }
7
-
8
- before do
9
- @list = Fabricate(:list)
10
- @board = Fabricate(:board)
11
- @card = Fabricate(:card)
12
- end
13
-
14
- after { database_cleanup }
15
-
16
- describe "#initialize" do
17
- subject { described_class.new(@list, options) }
18
-
19
- it "assigns the list to an instance variable" do
20
- subject.instance_variable_get("@list").must_equal(@list)
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 "#show" do
29
- subject { capture_io { described_class.show(@list, options) }.join }
30
-
31
- context "when the list has cards" do
32
- it "renders the view" do
33
- subject.must_match /My Test Board/
34
- subject.must_match /My Test List/
35
- subject.must_match /My Test Card/
36
- end
37
- end
38
-
39
- context "when the list has no cards" do
40
- before { @card.delete }
41
-
42
- it "returns a polite message" do
43
- subject.must_match /No cards were found./
44
- end
45
- end
46
- end
47
- end
48
- end
@@ -1,47 +0,0 @@
1
- require_relative "../../../test_helper"
2
-
3
- module Troo
4
- describe MemberDecorator do
5
- let(:described_class) { MemberDecorator }
6
- let(:options) { {} }
7
-
8
- before { @member = Fabricate(:member) }
9
- after { database_cleanup }
10
-
11
- describe "#initialize" do
12
- subject { described_class.new(@member, options) }
13
-
14
- it "assigns the member to an instance variable" do
15
- subject.instance_variable_get("@member").must_equal(@member)
16
- end
17
-
18
- it "assigns the options to an instance variable" do
19
- subject.instance_variable_get("@options").must_equal(options)
20
- end
21
- end
22
-
23
- describe "#username" do
24
- subject { described_class.new(@member).username }
25
-
26
- it "returns the member's username" do
27
- subject.must_equal("@#{@member.username}")
28
- end
29
- end
30
-
31
- describe "#name" do
32
- subject { described_class.new(@member).name }
33
-
34
- it "returns the member's full name" do
35
- subject.must_equal(@member.full_name)
36
- end
37
- end
38
-
39
- describe "#initials" do
40
- subject { described_class.new(@member).initials }
41
-
42
- it "returns the member's initials" do
43
- subject.must_equal(@member.initials)
44
- end
45
- end
46
- end
47
- end
@@ -1,70 +0,0 @@
1
- require_relative "../../../test_helper"
2
-
3
- module Troo
4
- describe MemberPresenter do
5
- let(:described_class) { MemberPresenter }
6
- let(:options) { { } }
7
- let(:external_member_ids) { ["5195fdb5a8c01a2318004f5d"] }
8
-
9
- before do
10
- @card = Fabricate(:card, external_member_ids: external_member_ids)
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 "#show" do
29
- subject { described_class.show(@card, options) }
30
-
31
- context "when there is one member" do
32
- it "returns the member" do
33
- subject.must_equal("@gavinlaking1")
34
- end
35
- end
36
-
37
- context "when there are two members" do
38
- let(:external_member_ids) { ["5195fdb5a8c01a2318004f5d", "helium"] }
39
-
40
- before { @member_2 = Fabricate(:member, username: "helium", external_member_id: "helium") }
41
-
42
- it "returns a formatted list of members" do
43
- subject.must_equal("@gavinlaking1 and @helium")
44
- end
45
- end
46
-
47
- context "when there are many members" do
48
- let(:external_member_ids) { ["5195fdb5a8c01a2318004f5d", "helium", "lithium", "beryllium"] }
49
-
50
- before do
51
- @member_2 = Fabricate(:member, username: "helium", external_member_id: "helium")
52
- @member_3 = Fabricate(:member, username: "lithium", external_member_id: "lithium")
53
- @member_4 = Fabricate(:member, username: "beryllium", external_member_id: "beryllium")
54
- end
55
-
56
- it "returns a formatted list of members" do
57
- subject.must_equal("@gavinlaking1, @helium, @lithium and @beryllium")
58
- end
59
- end
60
-
61
- context "when there are no members" do
62
- before { @member.delete }
63
-
64
- it "returns a polite message" do
65
- subject.must_match /No members have been assigned/
66
- end
67
- end
68
- end
69
- end
70
- end
@@ -1,36 +0,0 @@
1
- require_relative "../../../test_helper"
2
-
3
- module Troo
4
- module External
5
- describe BoardAdaptor do
6
- let(:described_class) { BoardAdaptor }
7
- let(:resource) { OpenStruct.new({
8
- id: "526d8e130a14a9d846001d96",
9
- name: "My Test Board",
10
- description: "A very brief description...",
11
- closed: false,
12
- }) }
13
-
14
- describe "#initialize" do
15
- subject { described_class.new(resource) }
16
-
17
- it "assigns the resource to an instance variable" do
18
- subject.instance_variable_get("@resource").must_equal(resource)
19
- end
20
- end
21
-
22
- describe "#adapted" do
23
- subject { described_class.adapt(resource) }
24
-
25
- it "returns an adapted resource suitable for local persistence" do
26
- subject.must_equal({
27
- external_board_id: "526d8e130a14a9d846001d96",
28
- name: "My Test Board",
29
- description: "A very brief description...",
30
- closed: "false",
31
- })
32
- end
33
- end
34
- end
35
- end
36
- end
@@ -1,50 +0,0 @@
1
- require_relative "../../../test_helper"
2
-
3
- module Troo
4
- module External
5
- describe CardAdaptor do
6
- let(:described_class) { CardAdaptor }
7
- let(:resource) { OpenStruct.new({
8
- board_id: "526d8e130a14a9d846001d96",
9
- list_id: "526d8e130a14a9d846001d97",
10
- id: "526d8f19ddb279532e005259",
11
- member_ids: ["5195fdb5a8c01a2318004f5d"],
12
- short_id: 67,
13
- name: "My Test Card",
14
- desc: "some description",
15
- url: "some trello url",
16
- pos: 16,
17
- last_activity_date: "2013-12-17 21:48:09 UTC",
18
- closed: false,
19
- }) }
20
-
21
- describe "#initialize" do
22
- subject { described_class.new(resource) }
23
-
24
- it "assigns the resource to an instance variable" do
25
- subject.instance_variable_get("@resource").must_equal(resource)
26
- end
27
- end
28
-
29
- describe "#adapted" do
30
- subject { described_class.adapt(resource) }
31
-
32
- it "returns an adapted resource suitable for local persistence" do
33
- subject.must_equal({
34
- external_board_id: "526d8e130a14a9d846001d96",
35
- external_list_id: "526d8e130a14a9d846001d97",
36
- external_card_id: "526d8f19ddb279532e005259",
37
- external_member_ids: "[\"5195fdb5a8c01a2318004f5d\"]",
38
- short_id: "67",
39
- name: "My Test Card",
40
- desc: "some description",
41
- url: "some trello url",
42
- position: "16",
43
- last_activity_date: "2013-12-17 21:48:09 UTC",
44
- closed: "false",
45
- })
46
- end
47
- end
48
- end
49
- end
50
- end
@@ -1,41 +0,0 @@
1
- require_relative "../../../test_helper"
2
-
3
- module Troo
4
- module External
5
- describe CommentAdaptor do
6
- let(:described_class) { CommentAdaptor }
7
- let(:resource) { OpenStruct.new({
8
- id: "51f9277b2822b8654f0023af",
9
- member_creator_id: "5195fdb5a8c01a2318004f5d",
10
- date: "2013-12-17 22:01:13 UTC",
11
- data: {
12
- "text" => "My Test Comment",
13
- "board" => { "id" => "526d8e130a14a9d846001d96" },
14
- "card" => { "id" => "526d8f19ddb279532e005259" } } })
15
- }
16
-
17
- describe "#initialize" do
18
- subject { described_class.new(resource) }
19
-
20
- it "assigns the resource to an instance variable" do
21
- subject.instance_variable_get("@resource").must_equal(resource)
22
- end
23
- end
24
-
25
- describe "#adapted" do
26
- subject { described_class.adapt(resource) }
27
-
28
- it "returns an adapted resource suitable for local persistence" do
29
- subject.must_equal({
30
- external_comment_id: "51f9277b2822b8654f0023af",
31
- external_board_id: "526d8e130a14a9d846001d96",
32
- external_card_id: "526d8f19ddb279532e005259",
33
- external_member_id: "5195fdb5a8c01a2318004f5d",
34
- date: "2013-12-17 22:01:13 UTC",
35
- text: "My Test Comment",
36
- })
37
- end
38
- end
39
- end
40
- end
41
- end
@@ -1,38 +0,0 @@
1
- require_relative "../../../test_helper"
2
-
3
- module Troo
4
- module External
5
- describe ListAdaptor do
6
- let(:described_class) { ListAdaptor }
7
- let(:resource) { OpenStruct.new({
8
- board_id: "526d8e130a14a9d846001d96",
9
- id: "526d8e130a14a9d846001d97",
10
- name: "My Test List",
11
- pos: 32768,
12
- closed: false,
13
- }) }
14
-
15
- describe "#initialize" do
16
- subject { described_class.new(resource) }
17
-
18
- it "assigns the resource to an instance variable" do
19
- subject.instance_variable_get("@resource").must_equal(resource)
20
- end
21
- end
22
-
23
- describe "#adapted" do
24
- subject { described_class.adapt(resource) }
25
-
26
- it "returns an adapted resource suitable for local persistence" do
27
- subject.must_equal({
28
- external_board_id: "526d8e130a14a9d846001d96",
29
- external_list_id: "526d8e130a14a9d846001d97",
30
- name: "My Test List",
31
- position: "32768",
32
- closed: "false",
33
- })
34
- end
35
- end
36
- end
37
- end
38
- end
@@ -1,44 +0,0 @@
1
- require_relative "../../../test_helper"
2
-
3
- module Troo
4
- module External
5
- describe MemberAdaptor do
6
- let(:described_class) { MemberAdaptor }
7
- let(:resource) { OpenStruct.new({
8
- id: "5195fdb5a8c01a2318004f5d",
9
- username: "gavinlaking1",
10
- email: "gavinlaking@gmail.com",
11
- full_name: "Gavin Laking",
12
- initials: "GL",
13
- avatar_id: "some_avatar_id",
14
- bio: "some bio",
15
- url: "http://www.gavinlaking.name/"
16
- }) }
17
-
18
- describe "#initialize" do
19
- subject { described_class.new(resource) }
20
-
21
- it "assigns the resource to an instance variable" do
22
- subject.instance_variable_get("@resource").must_equal(resource)
23
- end
24
- end
25
-
26
- describe "#adapted" do
27
- subject { described_class.adapt(resource) }
28
-
29
- it "returns an adapted resource suitable for local persistence" do
30
- subject.must_equal({
31
- external_member_id: "5195fdb5a8c01a2318004f5d",
32
- username: "gavinlaking1",
33
- email: "gavinlaking@gmail.com",
34
- full_name: "Gavin Laking",
35
- initials: "GL",
36
- avatar_id: "some_avatar_id",
37
- bio: "some bio",
38
- url: "http://www.gavinlaking.name/",
39
- })
40
- end
41
- end
42
- end
43
- end
44
- end
@@ -1,61 +0,0 @@
1
- require_relative "../../../test_helper"
2
-
3
- module Troo
4
- describe BoardPersistence do
5
- let(:described_class) { BoardPersistence }
6
- let(:resource) { OpenStruct.new({
7
- id: "526d8e130a14a9d846001d96",
8
- name: resource_name,
9
- description: "A very brief description...",
10
- closed: false
11
- }) }
12
- let(:resource_name) { "My Test Board" }
13
- let(:options) { {} }
14
-
15
- before { @board = Fabricate(:board) }
16
- after { database_cleanup }
17
-
18
- describe ".initialize" do
19
- subject { described_class.new(resource, options) }
20
-
21
- it "assigns the resource to an instance variable" do
22
- subject.instance_variable_get("@resource").must_equal(resource)
23
- end
24
-
25
- it "assigns the options to an instance variable" do
26
- subject.instance_variable_get("@options").must_equal(options)
27
- end
28
- end
29
-
30
- describe "#persist" do
31
- subject { described_class.for(resource, options) }
32
-
33
- context "when there is already a local copy" do
34
- context "and the local copy is identical" do
35
- it "returns the local copy" do
36
- subject.must_equal(@board)
37
- end
38
- end
39
-
40
- context "and the local copy is out of date" do
41
- let(:resource_name) { "My Renamed Board" }
42
-
43
- it "updates and returns the new local copy" do
44
- subject.name.must_equal(resource_name)
45
- end
46
- end
47
- end
48
-
49
- context "when there is not already a local copy" do
50
- let(:resource_name) { "My New Test Board" }
51
-
52
- before { database_cleanup }
53
-
54
- it "creates and returns the new local copy" do
55
- subject.name.must_equal(resource_name)
56
- end
57
- end
58
- end
59
- end
60
- end
61
-