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,57 @@
1
+ module Troo
2
+ class Sentence
3
+ class << self
4
+ def construct(elements, label = 'elements')
5
+ new(elements, label).construct
6
+ end
7
+ end
8
+
9
+ def initialize(elements, label)
10
+ @elements, @label = elements, label
11
+ end
12
+
13
+ def construct
14
+ if one?
15
+ first
16
+ elsif two?
17
+ elements.join(' and ')
18
+ elsif many?
19
+ [but_last, last].join(' and ')
20
+ else
21
+ "No #{label} have been assigned."
22
+ end
23
+ end
24
+
25
+ private
26
+
27
+ attr_reader :elements, :label
28
+
29
+ def one?
30
+ count == 1
31
+ end
32
+
33
+ def two?
34
+ count == 2
35
+ end
36
+
37
+ def many?
38
+ count > 2
39
+ end
40
+
41
+ def but_last
42
+ elements[0...-1].join(', ')
43
+ end
44
+
45
+ def first
46
+ elements.first
47
+ end
48
+
49
+ def last
50
+ elements[-1]
51
+ end
52
+
53
+ def count
54
+ elements.size
55
+ end
56
+ end
57
+ end
@@ -4,24 +4,25 @@ module Troo
4
4
  end
5
5
 
6
6
  class Template
7
+ include DecoratorHelpers
8
+
7
9
  class << self
8
10
  def parse(object, template_path)
9
11
  new(object, template_path).parse
10
12
  end
11
13
  end
12
14
 
13
- include DecoratorHelpers
14
-
15
15
  def initialize(object, template_path)
16
16
  @object = object
17
17
  @template_path = template_path
18
18
  end
19
19
 
20
20
  def parse
21
- ERB.new(load_template, nil, "-").result(binding)
21
+ ERB.new(load_template, nil, '-').result(binding)
22
22
  end
23
23
 
24
24
  private
25
+
25
26
  attr_reader :object, :template_path
26
27
 
27
28
  def load_template
@@ -0,0 +1,81 @@
1
+ module Troo
2
+ module Presenters
3
+ class Board
4
+ include DecoratorHelpers
5
+
6
+ class << self
7
+ def all(boards, options = {})
8
+ new(boards, options).all
9
+ end
10
+
11
+ def show(board, options = {})
12
+ new(board, options).show
13
+ end
14
+ end
15
+
16
+ def initialize(board_or_boards, options = {})
17
+ @board = board_or_boards
18
+ @options = options
19
+ end
20
+
21
+ def all
22
+ boards.map do |board|
23
+ puts board.decorator.title
24
+
25
+ print_error 'No lists were found.' if lists(board).empty?
26
+
27
+ print_lists(board)
28
+ end
29
+ end
30
+
31
+ def show
32
+ puts board.decorator.title
33
+
34
+ print_error 'No lists were found.' if lists.empty?
35
+
36
+ print_lists_with_cards
37
+ end
38
+
39
+ private
40
+
41
+ attr_reader :board
42
+ alias_method :boards, :board
43
+
44
+ def print_lists_with_cards
45
+ lists.each do |list|
46
+ title_for(list)
47
+
48
+ print_error 'No cards were found.' if list.cards.empty?
49
+
50
+ list.cards(unformatted).each do |card|
51
+ title_for(card)
52
+ end
53
+ end
54
+ puts
55
+ end
56
+
57
+ def print_lists(optional_board = nil)
58
+ lists(optional_board).each do |list|
59
+ title_for(list)
60
+ end
61
+ puts
62
+ end
63
+
64
+ def lists(optional_board = nil)
65
+ if optional_board.nil?
66
+ board.decorator.lists
67
+ else
68
+ optional_board.decorator.lists
69
+ end
70
+ end
71
+
72
+ def unformatted
73
+ {
74
+ ansicolor: false,
75
+ colour: nil,
76
+ underline: nil
77
+ }
78
+ end
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,30 @@
1
+ module Troo
2
+ module Presenters
3
+ class Card
4
+ include DecoratorHelpers
5
+
6
+ class << self
7
+ def show(card, options = {})
8
+ new(card, options).show
9
+ end
10
+ end
11
+
12
+ def initialize(card, options = {})
13
+ @card = card
14
+ @options = options
15
+ end
16
+
17
+ def show
18
+ print Template.parse(decorated_card, '/../views/card.erb')
19
+ end
20
+
21
+ private
22
+
23
+ attr_reader :card
24
+
25
+ def decorated_card
26
+ @decorated_card ||= card.decorator
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,38 @@
1
+ module Troo
2
+ module Presenters
3
+ class Comment
4
+ include DecoratorHelpers
5
+
6
+ class << self
7
+ def show(card, options = {})
8
+ new(card, options).show
9
+ end
10
+ end
11
+
12
+ def initialize(card, options = {})
13
+ @card = card
14
+ @options = options
15
+ end
16
+
17
+ def show
18
+ spacing do
19
+ print card.decorator.short
20
+
21
+ print_error 'No comments were found.' unless comments.any?
22
+
23
+ comments.each do |comment|
24
+ indent { print comment.decorator.as_view }
25
+ end
26
+ end
27
+ end
28
+
29
+ private
30
+
31
+ attr_reader :card
32
+
33
+ def comments
34
+ card.comments
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,44 @@
1
+ module Troo
2
+ module Presenters
3
+ class List
4
+ include DecoratorHelpers
5
+
6
+ class << self
7
+ def show(list, options = {})
8
+ new(list, options).show
9
+ end
10
+ end
11
+
12
+ def initialize(list, options = {})
13
+ @list = list
14
+ @options = options
15
+ end
16
+
17
+ def show
18
+ puts board.decorator.title
19
+
20
+ title_for(list.decorator)
21
+
22
+ print_error 'No cards were found.' if cards.empty?
23
+
24
+ cards.each do |card|
25
+ title_for(card)
26
+ end
27
+
28
+ puts
29
+ end
30
+
31
+ private
32
+
33
+ attr_reader :list
34
+
35
+ def board
36
+ list.board
37
+ end
38
+
39
+ def cards
40
+ list.decorator.cards
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,32 @@
1
+ module Troo
2
+ module Presenters
3
+ class Member
4
+ include DecoratorHelpers
5
+
6
+ class << self
7
+ def show(card, options = {})
8
+ new(card, options).show
9
+ end
10
+ end
11
+
12
+ def initialize(card, options = {})
13
+ @card = card
14
+ @options = options
15
+ end
16
+
17
+ def show
18
+ Sentence.construct(members, 'members')
19
+ end
20
+
21
+ private
22
+
23
+ attr_reader :card, :options
24
+
25
+ def members
26
+ @members ||= card.members.map do |member|
27
+ member.decorator.username
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
data/lib/troo/troo.rb CHANGED
@@ -1,72 +1,86 @@
1
- require "date"
2
- require "erb"
3
- require "fileutils"
4
- require "logger"
5
- require "json"
6
- require "ohm"
7
- require "ohm/contrib"
8
- require "pry"
9
- require "term/ansicolor"
10
- require "thor"
11
- require "trello"
12
- require "yaml"
1
+ require 'date'
2
+ require 'erb'
3
+ require 'fileutils'
4
+ require 'logger'
5
+ require 'json'
6
+ require 'ohm'
7
+ require 'ohm/contrib'
8
+ require 'pry'
9
+ require 'term/ansicolor'
10
+ require 'thor'
11
+ require 'trello'
12
+ require 'yaml'
13
13
 
14
- require_relative "actions/create_board"
15
- require_relative "actions/create_card"
16
- require_relative "actions/create_comment"
17
- require_relative "actions/create_list"
18
- require_relative "actions/move_card"
19
- require_relative "actions/refresh_all"
20
- require_relative "actions/set_default"
14
+ require_relative 'helpers/command_helpers'
15
+ require_relative 'helpers/decorator_helpers'
16
+ require_relative 'helpers/model_helpers'
21
17
 
22
- require_relative "external/resource"
23
- require_relative "external/board"
24
- require_relative "external/card"
25
- require_relative "external/comment"
26
- require_relative "external/list"
27
- require_relative "external/member"
28
- require_relative "external/board_adaptor"
29
- require_relative "external/card_adaptor"
30
- require_relative "external/comment_adaptor"
31
- require_relative "external/list_adaptor"
32
- require_relative "external/member_adaptor"
18
+ require_relative 'actions/create_board'
19
+ require_relative 'actions/create_card'
20
+ require_relative 'actions/create_comment'
21
+ require_relative 'actions/create_list'
22
+ require_relative 'actions/move_card'
33
23
 
34
- require_relative "display/decorator_helpers"
35
- require_relative "display/board_decorator"
36
- require_relative "display/card_decorator"
37
- require_relative "display/comment_decorator"
38
- require_relative "display/list_decorator"
39
- require_relative "display/member_decorator"
24
+ require_relative 'adaptors/resource'
25
+ require_relative 'adaptors/board'
26
+ require_relative 'adaptors/card'
27
+ require_relative 'adaptors/comment'
28
+ require_relative 'adaptors/list'
29
+ require_relative 'adaptors/member'
40
30
 
41
- require_relative "display/board_presenter"
42
- require_relative "display/card_presenter"
43
- require_relative "display/comment_presenter"
44
- require_relative "display/list_presenter"
45
- require_relative "display/member_presenter"
31
+ require_relative 'external/resource'
32
+ require_relative 'external/board'
33
+ require_relative 'external/card'
34
+ require_relative 'external/comment'
35
+ require_relative 'external/list'
36
+ require_relative 'external/member'
46
37
 
47
- require_relative "presentation/template"
38
+ require_relative 'decorators/board'
39
+ require_relative 'decorators/card'
40
+ require_relative 'decorators/comment'
41
+ require_relative 'decorators/list'
42
+ require_relative 'decorators/member'
48
43
 
49
- require_relative "models/model_helpers"
50
- require_relative "models/persistence"
51
- require_relative "models/board"
52
- require_relative "models/board_retrieval"
53
- require_relative "models/board_persistence"
54
- require_relative "models/card"
55
- require_relative "models/card_retrieval"
56
- require_relative "models/card_persistence"
57
- require_relative "models/comment"
58
- require_relative "models/comment_retrieval"
59
- require_relative "models/comment_persistence"
60
- require_relative "models/list"
61
- require_relative "models/list_retrieval"
62
- require_relative "models/list_persistence"
63
- require_relative "models/member"
64
- require_relative "models/member_retrieval"
65
- require_relative "models/member_persistence"
66
- require_relative "models/refresh"
44
+ require_relative 'presentation/sentence'
45
+ require_relative 'presentation/template'
67
46
 
68
- require_relative "cli/cli_helpers"
69
- require_relative "cli/add_cli"
70
- require_relative "cli/default_cli"
71
- require_relative "cli/show_cli"
72
- require_relative "cli/main_cli"
47
+ require_relative 'presenters/board'
48
+ require_relative 'presenters/card'
49
+ require_relative 'presenters/comment'
50
+ require_relative 'presenters/list'
51
+ require_relative 'presenters/member'
52
+
53
+ require_relative 'models/behaviours/set_default'
54
+
55
+ require_relative 'models/persistence/resource'
56
+ require_relative 'models/persistence/board'
57
+ require_relative 'models/persistence/card'
58
+ require_relative 'models/persistence/comment'
59
+ require_relative 'models/persistence/list'
60
+ require_relative 'models/persistence/member'
61
+
62
+ require_relative 'models/remote/resource'
63
+ require_relative 'models/remote/comment'
64
+
65
+ require_relative 'models/retrieval/resource'
66
+ require_relative 'models/retrieval/board'
67
+ require_relative 'models/retrieval/card'
68
+ require_relative 'models/retrieval/comment'
69
+ require_relative 'models/retrieval/list'
70
+ require_relative 'models/retrieval/member'
71
+
72
+ require_relative 'models/board'
73
+ require_relative 'models/card'
74
+ require_relative 'models/comment'
75
+ require_relative 'models/list'
76
+ require_relative 'models/member'
77
+ require_relative 'models/refresh'
78
+
79
+ require_relative 'commands/commands'
80
+
81
+ require_relative 'cli/thor_fixes'
82
+ require_relative 'cli/add'
83
+ require_relative 'cli/default'
84
+ require_relative 'cli/refresh'
85
+ require_relative 'cli/show'
86
+ require_relative 'cli/main'
data/lib/troo/version.rb CHANGED
@@ -1,4 +1,3 @@
1
1
  module Troo
2
- VERSION = "0.0.7"
2
+ VERSION = '0.0.8'
3
3
  end
4
-
data/lib/troo.rb CHANGED
@@ -1,22 +1,22 @@
1
- require_relative "troo/troo"
2
- require_relative "troo/version"
1
+ require_relative 'troo/troo'
2
+ require_relative 'troo/version'
3
3
 
4
4
  module Troo
5
5
  class InvalidAccessToken < StandardError; end
6
6
 
7
7
  def self.config
8
- @config ||= OpenStruct.new(YAML.load_file(Dir.home + "/.trooconf"))
8
+ @config ||= OpenStruct.new(YAML.load_file(Dir.home + '/.trooconf'))
9
9
  rescue Errno::ENOENT
10
- warn "No configuration file found..."
11
- src = File.dirname(__FILE__) + "/../configuration.yml.example"
12
- dst = Dir.home + "/.trooconf"
10
+ warn 'No configuration file found...'
11
+ src = File.dirname(__FILE__) + '/../configuration.yml.example'
12
+ dst = Dir.home + '/.trooconf'
13
13
  FileUtils.cp(src, dst)
14
14
  warn "New configuration file created at '#{Dir.home}/.trooconf'"
15
15
  exit!
16
16
  end
17
17
 
18
18
  def self.logger
19
- @logger ||= Logger.new("logs/troo.log")
19
+ @logger ||= Logger.new('logs/troo.log')
20
20
  end
21
21
 
22
22
  # Trello.logger = Logger.new("logs/trello.log")
@@ -27,5 +27,33 @@ module Troo
27
27
  trello.oauth_token_secret = config.oauth_token_secret
28
28
  end
29
29
 
30
- Ohm.connect(db: config.main_db)
30
+ class Launcher
31
+ def initialize(argv, stdin = STDIN,
32
+ stdout = STDOUT,
33
+ stderr = STDERR,
34
+ kernel = Kernel)
35
+ @argv = argv
36
+ @stdin = stdin
37
+ @stdout = stdout
38
+ @stderr = stderr
39
+ @kernel = kernel
40
+ end
41
+
42
+ def execute!
43
+ $stdin, $stdout, $stderr = @stdin, @stdout, @stderr
44
+
45
+ puts
46
+ Troo::CLI::Main.start(@argv)
47
+ puts
48
+
49
+ @kernel.exit(0)
50
+ rescue Troo::InvalidAccessToken
51
+ @stderr.puts 'Your Trello access credentials have expired, ' \
52
+ ' please renew and try again.'
53
+ @kernel.exit(1)
54
+ rescue SocketError
55
+ @stderr.puts 'Cannot continue, no network connection.'
56
+ @kernel.exit(1)
57
+ end
58
+ end
31
59
  end
@@ -1,47 +1,66 @@
1
- require_relative "../../../test_helper"
1
+ require_relative '../../../test_helper'
2
2
 
3
3
  module Troo
4
4
  describe CreateBoard do
5
5
  let(:described_class) { CreateBoard }
6
- let(:board_name) { "My New Board" }
7
- let(:description) { "A very brief description..." }
6
+ let(:board_name) { 'My New Board' }
7
+ let(:description) { 'A very brief description...' }
8
8
 
9
9
  before do
10
- @board = Fabricate(:board, name: board_name, description: description)
11
- BoardPersistence.stubs(:for).returns(@board)
10
+ @board = Fabricate(:board, name: board_name,
11
+ description: description)
12
+ Persistence::Board.stubs(:for).returns(@board)
12
13
  end
13
14
 
14
15
  after { database_cleanup }
15
16
 
16
- describe ".initialize" do
17
+ describe '.initialize' do
17
18
  subject { described_class.new(board_name, description) }
18
19
 
19
- it "assigns the name to an instance variable" do
20
- subject.instance_variable_get("@name").must_equal(board_name)
20
+ it 'assigns the name to an instance variable' do
21
+ subject.instance_variable_get('@name').must_equal(board_name)
21
22
  end
22
23
 
23
- it "assigns the description to an instance variable" do
24
- subject.instance_variable_get("@description").must_equal(description)
24
+ it 'assigns the description to an instance variable' do
25
+ subject.instance_variable_get('@description')
26
+ .must_equal(description)
25
27
  end
26
28
  end
27
29
 
28
- describe ".with" do
29
- before { VCR.insert_cassette(:create_board, decode_compressed_response: true) }
30
+ describe '.with' do
31
+ before do
32
+ VCR.insert_cassette(:create_board,
33
+ decode_compressed_response: true)
34
+ end
35
+
30
36
  after { VCR.eject_cassette }
31
37
 
32
38
  subject { described_class.with(board_name, description) }
33
39
 
34
- context "when the board was created" do
35
- it "returns the new board" do
40
+ context 'when the board was created' do
41
+ it 'returns the new board' do
36
42
  subject.must_equal(@board)
37
43
  end
38
44
  end
39
45
 
40
- context "when the board was not created" do
46
+ context 'when the board was not created' do
41
47
  before { Trello::Board.stubs(:create).raises(Trello::Error) }
42
48
 
43
49
  it { subject.must_equal false }
44
50
  end
51
+
52
+ context 'when the access token is invalid' do
53
+ before do
54
+ Trello::Board.stubs(:create)
55
+ .raises(Trello::InvalidAccessToken)
56
+ end
57
+
58
+ subject { described_class.with(board_name, description) }
59
+
60
+ it 'catches the exception and re-raises' do
61
+ proc { subject }.must_raise(Troo::InvalidAccessToken)
62
+ end
63
+ end
45
64
  end
46
65
  end
47
66
  end