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
@@ -0,0 +1,26 @@
1
+ module Troo
2
+ module Commands
3
+ module Add
4
+ class Board < Resource
5
+ def add
6
+ return success if created?
7
+ error
8
+ end
9
+
10
+ private
11
+
12
+ def success
13
+ "New board '#{value}' created."
14
+ end
15
+
16
+ def error
17
+ 'Board could not be created.'
18
+ end
19
+
20
+ def created?
21
+ @created ||= CreateBoard.with(value)
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,33 @@
1
+ module Troo
2
+ module Commands
3
+ module Add
4
+ class Card < Resource
5
+ def add
6
+ if created
7
+ success
8
+ else
9
+ error_trello_error
10
+ end
11
+ end
12
+
13
+ private
14
+
15
+ def success
16
+ "New card '#{value}' created."
17
+ end
18
+
19
+ def error_trello_error
20
+ 'Card could not be created.'
21
+ end
22
+
23
+ def created
24
+ @created ||= CreateCard.for(resource, value)
25
+ end
26
+
27
+ def resource
28
+ Retrieval::List.retrieve(id)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,33 @@
1
+ module Troo
2
+ module Commands
3
+ module Add
4
+ class Comment < Resource
5
+ def add
6
+ if created
7
+ success
8
+ else
9
+ error_trello_error
10
+ end
11
+ end
12
+
13
+ private
14
+
15
+ def success
16
+ 'New comment created.'
17
+ end
18
+
19
+ def error_trello_error
20
+ 'Comment could not be created.'
21
+ end
22
+
23
+ def created
24
+ @created ||= CreateComment.for(resource, value)
25
+ end
26
+
27
+ def resource
28
+ Retrieval::Card.retrieve(id)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,33 @@
1
+ module Troo
2
+ module Commands
3
+ module Add
4
+ class List < Resource
5
+ def add
6
+ if created
7
+ success
8
+ else
9
+ error_trello_error
10
+ end
11
+ end
12
+
13
+ private
14
+
15
+ def success
16
+ "New list '#{value}' created."
17
+ end
18
+
19
+ def error_trello_error
20
+ 'List could not be created.'
21
+ end
22
+
23
+ def created
24
+ @created ||= CreateList.for(resource, value)
25
+ end
26
+
27
+ def resource
28
+ Retrieval::Board.retrieve(id)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,21 @@
1
+ module Troo
2
+ module Commands
3
+ module Add
4
+ class Resource
5
+ include CommandHelpers
6
+
7
+ attr_reader :id, :value
8
+
9
+ class << self
10
+ def dispatch(value, id = nil)
11
+ new(value, id).add
12
+ end
13
+ end
14
+
15
+ def initialize(value, id = nil)
16
+ @value, @id = value, id
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,28 @@
1
+ require_relative 'add/resource'
2
+ require_relative 'add/board'
3
+ require_relative 'add/card'
4
+ require_relative 'add/comment'
5
+ require_relative 'add/list'
6
+
7
+ require_relative 'default/resource'
8
+ require_relative 'default/board'
9
+ require_relative 'default/card'
10
+ require_relative 'default/list'
11
+
12
+ require_relative 'refresh/resource'
13
+ require_relative 'refresh/all'
14
+ require_relative 'refresh/board'
15
+ require_relative 'refresh/card'
16
+ require_relative 'refresh/list'
17
+
18
+ require_relative 'show/resource'
19
+ require_relative 'show/board'
20
+ require_relative 'show/boards'
21
+ require_relative 'show/card'
22
+ require_relative 'show/comments'
23
+ require_relative 'show/list'
24
+
25
+ require_relative 'status/resource'
26
+ require_relative 'status/board'
27
+ require_relative 'status/card'
28
+ require_relative 'status/list'
@@ -0,0 +1,25 @@
1
+ module Troo
2
+ module Commands
3
+ module Default
4
+ class Board < Resource
5
+ private
6
+
7
+ def success
8
+ "'#{resource_name}' set as default board."
9
+ end
10
+
11
+ def error
12
+ 'Board cannot be found.'
13
+ end
14
+
15
+ def resource_name
16
+ resource.decorator.name
17
+ end
18
+
19
+ def resource
20
+ Retrieval::Board.retrieve(id)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ module Troo
2
+ module Commands
3
+ module Default
4
+ class Card < Resource
5
+ private
6
+
7
+ def success
8
+ "'#{resource_name}' set as default card."
9
+ end
10
+
11
+ def error
12
+ 'Card cannot be found.'
13
+ end
14
+
15
+ def resource_name
16
+ resource.decorator.name
17
+ end
18
+
19
+ def resource
20
+ Retrieval::Card.retrieve(id)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ module Troo
2
+ module Commands
3
+ module Default
4
+ class List < Resource
5
+ private
6
+
7
+ def success
8
+ "'#{resource_name}' set as default list."
9
+ end
10
+
11
+ def error
12
+ 'List cannot be found.'
13
+ end
14
+
15
+ def resource_name
16
+ resource.decorator.name
17
+ end
18
+
19
+ def resource
20
+ Retrieval::List.retrieve(id)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,26 @@
1
+ module Troo
2
+ module Commands
3
+ module Default
4
+ class Resource
5
+ include CommandHelpers
6
+
7
+ attr_reader :id
8
+
9
+ class << self
10
+ def dispatch(id = nil)
11
+ new(id).set_default
12
+ end
13
+ end
14
+
15
+ def initialize(id = nil)
16
+ @id = id
17
+ end
18
+
19
+ def set_default
20
+ return success if resource && resource.set_default!
21
+ error
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,41 @@
1
+ module Troo
2
+ module Commands
3
+ module Refresh
4
+ class All
5
+ def self.dispatch
6
+ new.refresh_all
7
+ end
8
+
9
+ def refresh_all
10
+ 'All local data refreshed.' if refreshed?
11
+ end
12
+
13
+ private
14
+
15
+ def refreshed?
16
+ external_board_ids.map do |external_board_id|
17
+ External::List.fetch(external_board_id)
18
+ External::Member.fetch(external_board_id)
19
+ External::Card.fetch(external_board_id).map do |card|
20
+ External::Comment.fetch(card.external_card_id,
21
+ mode: :card)
22
+ end
23
+ end
24
+ true
25
+ end
26
+
27
+ def external_board_ids
28
+ active_boards.map(&:external_board_id)
29
+ end
30
+
31
+ def active_boards
32
+ all_boards.delete_if { |b| b.nil? || b.closed == true }
33
+ end
34
+
35
+ def all_boards
36
+ @boards ||= External::Board.fetch(0, mode: :all)
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,28 @@
1
+ module Troo
2
+ module Commands
3
+ module Refresh
4
+ class Board < Resource
5
+ private
6
+
7
+ def many_success
8
+ 'Multiple boards refreshed.'
9
+ end
10
+
11
+ def error
12
+ return 'Default board cannot be found.' unless id
13
+ @type = :board
14
+ 'Board cannot be found. ' + error_no_default
15
+ end
16
+
17
+ def resource
18
+ return [] unless local
19
+ @resource ||= External::Board.fetch(local.external_board_id)
20
+ end
21
+
22
+ def local
23
+ @local ||= Retrieval::Board.retrieve(id)
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,29 @@
1
+ module Troo
2
+ module Commands
3
+ module Refresh
4
+ class Card < Resource
5
+ private
6
+
7
+ def many_success
8
+ 'Multiple cards refreshed.'
9
+ end
10
+
11
+ def error
12
+ return 'Default card cannot be found.' unless id
13
+ @type = :card
14
+ 'Card cannot be found. ' + error_no_default
15
+ end
16
+
17
+ def resource
18
+ return [] unless local
19
+ @resource ||= External::Card.fetch(local.external_card_id,
20
+ mode: :card)
21
+ end
22
+
23
+ def local
24
+ @local ||= Retrieval::Card.retrieve(id)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ module Troo
2
+ module Commands
3
+ module Refresh
4
+ class List < Resource
5
+ private
6
+
7
+ def many_success
8
+ 'Multiple lists refreshed.'
9
+ end
10
+
11
+ def error
12
+ return 'Default list cannot be found.' unless id
13
+ @type = :list
14
+ 'List cannot be found. ' + error_no_default
15
+ end
16
+
17
+ def resource
18
+ return [] unless local
19
+ @resource ||= External::List.fetch(local.external_list_id,
20
+ mode: :list)
21
+ end
22
+
23
+ def local
24
+ @local ||= Retrieval::List.retrieve(id)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,42 @@
1
+ module Troo
2
+ module Commands
3
+ module Refresh
4
+ class Resource
5
+ include CommandHelpers
6
+
7
+ attr_accessor :type
8
+ attr_reader :id
9
+
10
+ class << self
11
+ def dispatch(id = nil)
12
+ new(id).refresh
13
+ end
14
+ end
15
+
16
+ def initialize(id = nil)
17
+ @id = id
18
+ end
19
+
20
+ def refresh
21
+ if resource.one?
22
+ success
23
+ elsif resource.count > 1
24
+ many_success
25
+ else
26
+ error
27
+ end
28
+ end
29
+
30
+ private
31
+
32
+ def success
33
+ "'#{resource_name}' refreshed."
34
+ end
35
+
36
+ def resource_name
37
+ resource.first.decorator.name
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,13 @@
1
+ module Troo
2
+ module Commands
3
+ module Show
4
+ class Board < Resource
5
+ private
6
+
7
+ def resource
8
+ Retrieval::Board.retrieve(id)
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,35 @@
1
+ module Troo
2
+ module Commands
3
+ module Show
4
+ class Boards < Resource
5
+ class << self
6
+ def dispatch
7
+ new.render
8
+ end
9
+ end
10
+
11
+ def render
12
+ if resources.any?
13
+ presenter
14
+ else
15
+ error_not_found
16
+ end
17
+ end
18
+
19
+ private
20
+
21
+ def type
22
+ :boards
23
+ end
24
+
25
+ def presenter
26
+ Presenters::Board.all(resources)
27
+ end
28
+
29
+ def resources
30
+ @resource ||= Retrieval::Board.all
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,13 @@
1
+ module Troo
2
+ module Commands
3
+ module Show
4
+ class Card < Resource
5
+ private
6
+
7
+ def resource
8
+ Retrieval::Card.retrieve(id)
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,21 @@
1
+ module Troo
2
+ module Commands
3
+ module Show
4
+ class Comments < Resource
5
+ private
6
+
7
+ def presenter
8
+ resource.comment_presenter.show
9
+ end
10
+
11
+ def resource
12
+ Retrieval::Card.retrieve(id)
13
+ end
14
+
15
+ def error_not_found
16
+ 'Card cannot be found.'
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,13 @@
1
+ module Troo
2
+ module Commands
3
+ module Show
4
+ class List < Resource
5
+ private
6
+
7
+ def resource
8
+ Retrieval::List.retrieve(id)
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,41 @@
1
+ module Troo
2
+ module Commands
3
+ module Show
4
+ class Resource
5
+ include CommandHelpers
6
+
7
+ attr_reader :id, :type
8
+
9
+ class << self
10
+ def dispatch(type = nil, id = nil)
11
+ new(type, id).render
12
+ end
13
+ end
14
+
15
+ def initialize(type = nil, id = nil)
16
+ @type, @id = type, id
17
+ end
18
+
19
+ def render
20
+ if resource
21
+ presenter
22
+ elsif no_default?
23
+ error_no_default
24
+ else
25
+ error_not_found
26
+ end
27
+ end
28
+
29
+ private
30
+
31
+ def presenter
32
+ resource.presenter.show
33
+ end
34
+
35
+ def error_not_found
36
+ "#{type_capitalize} cannot be found."
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,30 @@
1
+ module Troo
2
+ module Commands
3
+ module Status
4
+ class Board < Resource
5
+ private
6
+
7
+ def success
8
+ ' Boards: ' + plural('board') + " found.\n" +
9
+ " #{resource_title}"
10
+ end
11
+
12
+ def error
13
+ if count > 0
14
+ ' Boards: ' + Esc.red + 'No default board set.' + Esc.reset
15
+ else
16
+ " Boards: No boards found.\n"
17
+ end
18
+ end
19
+
20
+ def count
21
+ @count ||= Troo::Board.count
22
+ end
23
+
24
+ def resource
25
+ @resource ||= Retrieval::Board.default
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,30 @@
1
+ module Troo
2
+ module Commands
3
+ module Status
4
+ class Card < Resource
5
+ private
6
+
7
+ def success
8
+ ' Cards: ' + plural('card') + " found.\n" +
9
+ " #{resource_title}"
10
+ end
11
+
12
+ def error
13
+ if count > 0
14
+ ' Cards: ' + Esc.red + 'No default card set.' + Esc.reset
15
+ else
16
+ " Cards: No cards found.\n"
17
+ end
18
+ end
19
+
20
+ def count
21
+ @count ||= Troo::Card.count
22
+ end
23
+
24
+ def resource
25
+ @resource ||= Retrieval::Card.default
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,30 @@
1
+ module Troo
2
+ module Commands
3
+ module Status
4
+ class List < Resource
5
+ private
6
+
7
+ def success
8
+ ' Lists: ' + plural('list') + " found.\n" +
9
+ " #{resource_title}"
10
+ end
11
+
12
+ def error
13
+ if count > 0
14
+ ' Lists: ' + Esc.red + 'No default list set.' + Esc.reset
15
+ else
16
+ " Lists: No lists found.\n"
17
+ end
18
+ end
19
+
20
+ def count
21
+ @count ||= Troo::List.count
22
+ end
23
+
24
+ def resource
25
+ @resource ||= Retrieval::List.default
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end