troo 0.0.8 → 0.0.9

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 (316) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -1
  3. data/.ruby-version +1 -1
  4. data/.trooconf.example +18 -0
  5. data/Gemfile.lock +178 -0
  6. data/README.md +77 -21
  7. data/Rakefile +1 -1
  8. data/bin/completion.bash +10 -0
  9. data/bin/completion.zsh +10 -0
  10. data/bin/init.sh +15 -0
  11. data/bin/troo +12 -3
  12. data/config/cucumber.yml +3 -3
  13. data/config/en.yml +29 -0
  14. data/config/trello_api.yml +19 -0
  15. data/features/add/board.feature +3 -19
  16. data/features/add/card.feature +14 -18
  17. data/features/add/comment.feature +14 -14
  18. data/features/add/list.feature +11 -14
  19. data/features/default/board.feature +4 -4
  20. data/features/default/card.feature +4 -4
  21. data/features/default/list.feature +4 -4
  22. data/features/move/card.feature +54 -0
  23. data/features/refresh/all.feature +8 -4
  24. data/features/refresh/board.feature +9 -6
  25. data/features/refresh/card.feature +9 -6
  26. data/features/refresh/list.feature +9 -6
  27. data/features/show/board.feature +7 -7
  28. data/features/show/boards.feature +19 -0
  29. data/features/show/card.feature +86 -15
  30. data/features/show/comment.feature +14 -12
  31. data/features/show/list.feature +19 -14
  32. data/features/status.feature +27 -13
  33. data/features/step_definitions/fabrication_steps.rb +43 -8
  34. data/features/step_definitions/troo_steps.rb +3 -2
  35. data/features/support/env.rb +1 -0
  36. data/features/troo.feature +0 -12
  37. data/lib/troo.rb +32 -29
  38. data/lib/troo/api/client.rb +117 -0
  39. data/lib/troo/api/endpoints.rb +39 -0
  40. data/lib/troo/api/headers.rb +44 -0
  41. data/lib/troo/api/oauth_settings.rb +36 -0
  42. data/lib/troo/api/request.rb +37 -0
  43. data/lib/troo/api/response.rb +31 -0
  44. data/lib/troo/cli/add.rb +8 -12
  45. data/lib/troo/cli/commands/add.rb +95 -0
  46. data/lib/troo/cli/commands/default.rb +44 -0
  47. data/lib/troo/cli/commands/move/card.rb +95 -0
  48. data/lib/troo/cli/commands/refresh.rb +80 -0
  49. data/lib/troo/cli/commands/refresh/all.rb +52 -0
  50. data/lib/troo/cli/commands/show.rb +56 -0
  51. data/lib/troo/cli/commands/show/show_boards.rb +36 -0
  52. data/lib/troo/cli/commands/show/show_comments.rb +54 -0
  53. data/lib/troo/cli/commands/status.rb +68 -0
  54. data/lib/troo/cli/default.rb +3 -3
  55. data/lib/troo/cli/main.rb +60 -9
  56. data/lib/troo/cli/refresh.rb +4 -4
  57. data/lib/troo/cli/show.rb +7 -7
  58. data/lib/troo/cli/thor_fixes.rb +1 -5
  59. data/lib/troo/configuration.rb +53 -0
  60. data/lib/troo/debug.rb +18 -0
  61. data/lib/troo/decorators/member.rb +2 -19
  62. data/lib/troo/decorators/resource.rb +130 -0
  63. data/lib/troo/helpers/decorator_helpers.rb +21 -74
  64. data/lib/troo/helpers/model_helpers.rb +19 -4
  65. data/lib/troo/helpers/remote_model_helpers.rb +54 -0
  66. data/lib/troo/models/board.rb +19 -11
  67. data/lib/troo/models/card.rb +20 -17
  68. data/lib/troo/models/comment.rb +28 -8
  69. data/lib/troo/models/list.rb +22 -14
  70. data/lib/troo/models/member.rb +21 -5
  71. data/lib/troo/models/refresh.rb +3 -4
  72. data/lib/troo/persistence/local.rb +63 -0
  73. data/lib/troo/presentation/formatter.rb +132 -0
  74. data/lib/troo/presentation/template.rb +0 -4
  75. data/lib/troo/presenters/board.rb +32 -51
  76. data/lib/troo/presenters/card.rb +4 -11
  77. data/lib/troo/presenters/comment.rb +30 -16
  78. data/lib/troo/presenters/list.rb +25 -21
  79. data/lib/troo/presenters/member.rb +1 -8
  80. data/lib/troo/remote/all.rb +16 -0
  81. data/lib/troo/remote/board.rb +64 -0
  82. data/lib/troo/remote/card.rb +81 -0
  83. data/lib/troo/remote/comment.rb +70 -0
  84. data/lib/troo/remote/comment_data.rb +11 -0
  85. data/lib/troo/remote/comment_data_board.rb +13 -0
  86. data/lib/troo/remote/comment_data_card.rb +15 -0
  87. data/lib/troo/remote/list.rb +49 -0
  88. data/lib/troo/remote/member.rb +75 -0
  89. data/lib/troo/remote/persistence/board.rb +57 -0
  90. data/lib/troo/remote/persistence/card.rb +59 -0
  91. data/lib/troo/remote/persistence/comment.rb +58 -0
  92. data/lib/troo/remote/persistence/list.rb +57 -0
  93. data/lib/troo/remote/persistence/move_card.rb +85 -0
  94. data/lib/troo/retrieval/local.rb +100 -0
  95. data/lib/troo/retrieval/remote.rb +91 -0
  96. data/lib/troo/troo.rb +42 -42
  97. data/lib/troo/version.rb +1 -1
  98. data/lib/troo/views/card.erb +8 -10
  99. data/lib/troo/views/comments.erb +4 -0
  100. data/test/cassettes/board_by_id.yml +21 -30
  101. data/test/cassettes/boards_all.yml +22 -90
  102. data/test/cassettes/card_by_id.yml +49 -0
  103. data/test/cassettes/cards_by_board_id.yml +22 -90
  104. data/test/cassettes/cards_by_list_id.yml +22 -87
  105. data/test/cassettes/comments_by_board_id.yml +22 -95
  106. data/test/cassettes/comments_by_card_id.yml +22 -87
  107. data/test/cassettes/create_board.yml +20 -32
  108. data/test/cassettes/create_card.yml +21 -35
  109. data/test/cassettes/create_comment.yml +19 -37
  110. data/test/cassettes/create_list.yml +18 -32
  111. data/test/cassettes/list_by_id.yml +46 -0
  112. data/test/cassettes/lists_by_board_id.yml +19 -91
  113. data/test/cassettes/member_by_id.yml +48 -0
  114. data/test/cassettes/members_by_board_id.yml +21 -82
  115. data/test/cassettes/move_card_board.yml +49 -0
  116. data/test/cassettes/move_card_list.yml +49 -0
  117. data/test/lib/troo/api/client_test.rb +75 -0
  118. data/test/lib/troo/api/endpoints_test.rb +48 -0
  119. data/test/lib/troo/api/headers_test.rb +27 -0
  120. data/test/lib/troo/api/oauth_settings_test.rb +10 -0
  121. data/test/lib/troo/api/request_test.rb +63 -0
  122. data/test/lib/troo/api/response_test.rb +15 -0
  123. data/test/lib/troo/cli/add_test.rb +113 -0
  124. data/test/lib/troo/cli/commands/add_test.rb +66 -0
  125. data/test/lib/troo/cli/commands/default_test.rb +39 -0
  126. data/test/lib/troo/cli/commands/move/card_test.rb +86 -0
  127. data/test/lib/troo/cli/commands/refresh/all_test.rb +37 -0
  128. data/test/lib/troo/cli/commands/refresh_test.rb +59 -0
  129. data/test/lib/troo/cli/commands/show/show_boards_test.rb +35 -0
  130. data/test/lib/troo/cli/commands/show/show_comments_test.rb +63 -0
  131. data/test/lib/troo/cli/commands/show_test.rb +65 -0
  132. data/test/lib/troo/cli/commands/status_test.rb +48 -0
  133. data/test/lib/troo/cli/default_test.rb +39 -0
  134. data/test/lib/troo/cli/main_test.rb +102 -0
  135. data/test/lib/troo/cli/refresh_test.rb +43 -0
  136. data/test/lib/troo/cli/show_test.rb +49 -0
  137. data/test/lib/troo/cli/thor_fixes_test.rb +38 -0
  138. data/test/lib/troo/configuration_test.rb +43 -0
  139. data/test/lib/troo/debug_test.rb +25 -0
  140. data/test/lib/troo/decorators/card_test.rb +105 -229
  141. data/test/lib/troo/decorators/member_test.rb +20 -35
  142. data/test/lib/troo/decorators/resource_test.rb +157 -0
  143. data/test/lib/troo/helpers/decorator_helpers_test.rb +10 -19
  144. data/test/lib/troo/helpers/model_helpers_test.rb +18 -8
  145. data/test/lib/troo/helpers/remote_model_helpers_test.rb +68 -0
  146. data/test/lib/troo/models/behaviours/set_default_test.rb +0 -10
  147. data/test/lib/troo/models/board_test.rb +2 -2
  148. data/test/lib/troo/models/card_test.rb +2 -2
  149. data/test/lib/troo/models/comment_test.rb +6 -2
  150. data/test/lib/troo/models/list_test.rb +2 -2
  151. data/test/lib/troo/models/member_test.rb +6 -2
  152. data/test/lib/troo/persistence/local_test.rb +31 -0
  153. data/test/lib/troo/presentation/formatter_test.rb +31 -0
  154. data/test/lib/troo/presentation/sentence_test.rb +0 -12
  155. data/test/lib/troo/presentation/template_test.rb +1 -14
  156. data/test/lib/troo/presenters/board_test.rb +17 -36
  157. data/test/lib/troo/presenters/card_test.rb +1 -31
  158. data/test/lib/troo/presenters/comment_test.rb +19 -19
  159. data/test/lib/troo/presenters/list_test.rb +18 -18
  160. data/test/lib/troo/presenters/member_test.rb +1 -14
  161. data/test/lib/troo/remote/board_test.rb +66 -0
  162. data/test/lib/troo/remote/card_test.rb +81 -0
  163. data/test/lib/troo/remote/comment_data_board.rb +9 -0
  164. data/test/lib/troo/remote/comment_data_card_test.rb +9 -0
  165. data/test/lib/troo/remote/comment_data_test.rb +9 -0
  166. data/test/lib/troo/remote/comment_test.rb +100 -0
  167. data/test/lib/troo/remote/list_test.rb +67 -0
  168. data/test/lib/troo/remote/member_test.rb +70 -0
  169. data/test/lib/troo/remote/persistence/board_test.rb +39 -0
  170. data/test/lib/troo/remote/persistence/card_test.rb +50 -0
  171. data/test/lib/troo/remote/persistence/comment_test.rb +45 -0
  172. data/test/lib/troo/remote/persistence/list_test.rb +45 -0
  173. data/test/lib/troo/remote/persistence/move_card_test.rb +78 -0
  174. data/test/lib/troo/retrieval/local_test.rb +192 -0
  175. data/test/lib/troo/retrieval/remote_test.rb +49 -0
  176. data/test/support/fabrication.rb +17 -17
  177. data/test/support/fake_trello/fake_response.rb +38 -0
  178. data/test/support/fake_trello/server.rb +124 -0
  179. data/test/support/remotes/all_boards.json +41 -0
  180. data/test/support/remotes/board.json +140 -0
  181. data/test/support/remotes/board_by_id.json +75 -0
  182. data/test/support/remotes/card.json +40 -0
  183. data/test/support/remotes/card_by_card_id.json +302 -0
  184. data/test/support/remotes/comment.json +27 -0
  185. data/test/support/remotes/create_board.json +38 -0
  186. data/test/support/remotes/list.json +7 -0
  187. data/test/support/remotes/member.json +50 -0
  188. data/test/system_test.sh +21 -1
  189. data/test/test_helper.rb +2 -1
  190. data/troo.gemspec +28 -20
  191. metadata +376 -269
  192. data/configuration.yml.example +0 -7
  193. data/features/cleanup.feature +0 -13
  194. data/lib/troo/actions/create_board.rb +0 -46
  195. data/lib/troo/actions/create_card.rb +0 -44
  196. data/lib/troo/actions/create_comment.rb +0 -46
  197. data/lib/troo/actions/create_list.rb +0 -42
  198. data/lib/troo/actions/move_card.rb +0 -37
  199. data/lib/troo/adaptors/board.rb +0 -32
  200. data/lib/troo/adaptors/card.rb +0 -67
  201. data/lib/troo/adaptors/comment.rb +0 -42
  202. data/lib/troo/adaptors/list.rb +0 -37
  203. data/lib/troo/adaptors/member.rb +0 -52
  204. data/lib/troo/adaptors/resource.rb +0 -17
  205. data/lib/troo/commands/add/board.rb +0 -26
  206. data/lib/troo/commands/add/card.rb +0 -33
  207. data/lib/troo/commands/add/comment.rb +0 -33
  208. data/lib/troo/commands/add/list.rb +0 -33
  209. data/lib/troo/commands/add/resource.rb +0 -21
  210. data/lib/troo/commands/commands.rb +0 -28
  211. data/lib/troo/commands/default/board.rb +0 -25
  212. data/lib/troo/commands/default/card.rb +0 -25
  213. data/lib/troo/commands/default/list.rb +0 -25
  214. data/lib/troo/commands/default/resource.rb +0 -26
  215. data/lib/troo/commands/refresh/all.rb +0 -41
  216. data/lib/troo/commands/refresh/board.rb +0 -28
  217. data/lib/troo/commands/refresh/card.rb +0 -29
  218. data/lib/troo/commands/refresh/list.rb +0 -29
  219. data/lib/troo/commands/refresh/resource.rb +0 -42
  220. data/lib/troo/commands/show/board.rb +0 -13
  221. data/lib/troo/commands/show/boards.rb +0 -35
  222. data/lib/troo/commands/show/card.rb +0 -13
  223. data/lib/troo/commands/show/comments.rb +0 -21
  224. data/lib/troo/commands/show/list.rb +0 -13
  225. data/lib/troo/commands/show/resource.rb +0 -41
  226. data/lib/troo/commands/status/board.rb +0 -30
  227. data/lib/troo/commands/status/card.rb +0 -30
  228. data/lib/troo/commands/status/list.rb +0 -30
  229. data/lib/troo/commands/status/resource.rb +0 -34
  230. data/lib/troo/decorators/board.rb +0 -66
  231. data/lib/troo/decorators/card.rb +0 -105
  232. data/lib/troo/decorators/comment.rb +0 -36
  233. data/lib/troo/decorators/list.rb +0 -60
  234. data/lib/troo/external/board.rb +0 -31
  235. data/lib/troo/external/card.rb +0 -31
  236. data/lib/troo/external/comment.rb +0 -27
  237. data/lib/troo/external/list.rb +0 -27
  238. data/lib/troo/external/member.rb +0 -27
  239. data/lib/troo/external/resource.rb +0 -42
  240. data/lib/troo/helpers/command_helpers.rb +0 -37
  241. data/lib/troo/models/persistence/board.rb +0 -19
  242. data/lib/troo/models/persistence/card.rb +0 -19
  243. data/lib/troo/models/persistence/comment.rb +0 -19
  244. data/lib/troo/models/persistence/list.rb +0 -19
  245. data/lib/troo/models/persistence/member.rb +0 -19
  246. data/lib/troo/models/persistence/resource.rb +0 -50
  247. data/lib/troo/models/remote/comment.rb +0 -21
  248. data/lib/troo/models/remote/resource.rb +0 -25
  249. data/lib/troo/models/retrieval/board.rb +0 -29
  250. data/lib/troo/models/retrieval/card.rb +0 -33
  251. data/lib/troo/models/retrieval/comment.rb +0 -25
  252. data/lib/troo/models/retrieval/list.rb +0 -29
  253. data/lib/troo/models/retrieval/member.rb +0 -25
  254. data/lib/troo/models/retrieval/resource.rb +0 -36
  255. data/lib/troo/views/comment.erb +0 -3
  256. data/test/cassettes/card_by_card_id.yml +0 -58
  257. data/test/cassettes/comments_by_list_id.yml +0 -109
  258. data/test/cassettes/list_by_list_id.yml +0 -56
  259. data/test/cassettes/member_by_member_id.yml +0 -60
  260. data/test/cassettes/move_card.yml +0 -61
  261. data/test/lib/troo/actions/create_board_test.rb +0 -66
  262. data/test/lib/troo/actions/create_card_test.rb +0 -71
  263. data/test/lib/troo/actions/create_comment_test.rb +0 -71
  264. data/test/lib/troo/actions/create_list_test.rb +0 -65
  265. data/test/lib/troo/actions/move_card_test.rb +0 -54
  266. data/test/lib/troo/adaptors/board_test.rb +0 -38
  267. data/test/lib/troo/adaptors/card_test.rb +0 -49
  268. data/test/lib/troo/adaptors/comment_test.rb +0 -41
  269. data/test/lib/troo/adaptors/list_test.rb +0 -38
  270. data/test/lib/troo/adaptors/member_test.rb +0 -44
  271. data/test/lib/troo/commands/add/board_test.rb +0 -43
  272. data/test/lib/troo/commands/add/card_test.rb +0 -44
  273. data/test/lib/troo/commands/add/comment_test.rb +0 -44
  274. data/test/lib/troo/commands/add/list_test.rb +0 -44
  275. data/test/lib/troo/commands/add/resource_test.rb +0 -25
  276. data/test/lib/troo/commands/default/board_test.rb +0 -37
  277. data/test/lib/troo/commands/default/card_test.rb +0 -37
  278. data/test/lib/troo/commands/default/list_test.rb +0 -37
  279. data/test/lib/troo/commands/default/resource_test.rb +0 -20
  280. data/test/lib/troo/commands/refresh/all_test.rb +0 -39
  281. data/test/lib/troo/commands/refresh/board_test.rb +0 -62
  282. data/test/lib/troo/commands/refresh/card_test.rb +0 -62
  283. data/test/lib/troo/commands/refresh/list_test.rb +0 -62
  284. data/test/lib/troo/commands/refresh/resource_test.rb +0 -20
  285. data/test/lib/troo/commands/show/board_test.rb +0 -65
  286. data/test/lib/troo/commands/show/boards_test.rb +0 -36
  287. data/test/lib/troo/commands/show/card_test.rb +0 -64
  288. data/test/lib/troo/commands/show/comments_test.rb +0 -64
  289. data/test/lib/troo/commands/show/list_test.rb +0 -64
  290. data/test/lib/troo/commands/show/resource_test.rb +0 -25
  291. data/test/lib/troo/commands/status/board_test.rb +0 -43
  292. data/test/lib/troo/commands/status/card_test.rb +0 -43
  293. data/test/lib/troo/commands/status/list_test.rb +0 -43
  294. data/test/lib/troo/commands/status/resource_test.rb +0 -19
  295. data/test/lib/troo/decorators/board_test.rb +0 -129
  296. data/test/lib/troo/decorators/comment_test.rb +0 -74
  297. data/test/lib/troo/decorators/list_test.rb +0 -102
  298. data/test/lib/troo/external/board_test.rb +0 -102
  299. data/test/lib/troo/external/card_test.rb +0 -131
  300. data/test/lib/troo/external/comment_test.rb +0 -109
  301. data/test/lib/troo/external/list_test.rb +0 -94
  302. data/test/lib/troo/external/member_test.rb +0 -94
  303. data/test/lib/troo/external/resource_test.rb +0 -25
  304. data/test/lib/troo/helpers/command_helpers_test.rb +0 -82
  305. data/test/lib/troo/models/persistence/board_test.rb +0 -62
  306. data/test/lib/troo/models/persistence/card_test.rb +0 -61
  307. data/test/lib/troo/models/persistence/comment_test.rb +0 -69
  308. data/test/lib/troo/models/persistence/list_test.rb +0 -60
  309. data/test/lib/troo/models/persistence/member_test.rb +0 -60
  310. data/test/lib/troo/models/remote/comment_test.rb +0 -56
  311. data/test/lib/troo/models/remote/resource_test.rb +0 -26
  312. data/test/lib/troo/models/retrieval/board_test.rb +0 -93
  313. data/test/lib/troo/models/retrieval/card_test.rb +0 -101
  314. data/test/lib/troo/models/retrieval/comment_test.rb +0 -46
  315. data/test/lib/troo/models/retrieval/list_test.rb +0 -93
  316. data/test/lib/troo/models/retrieval/member_test.rb +0 -58
@@ -0,0 +1,19 @@
1
+ Feature: Showing all boards
2
+
3
+ @show
4
+ Scenario: When boards exist
5
+ Given a board exists
6
+ When I run `troo show boards`
7
+ Then the output should contain:
8
+ """
9
+ (1) My Test Board
10
+ No lists were found.
11
+ """
12
+
13
+ @show
14
+ Scenario: When no boards exist
15
+ When I run `troo show boards`
16
+ Then the output should contain:
17
+ """
18
+ Boards cannot be found.
19
+ """
@@ -1,16 +1,12 @@
1
1
  Feature: Showing a card
2
- Background:
3
- Given a board exists
4
- And a list exists
5
- And a member exists
6
2
 
7
3
  @show
8
4
  Scenario: Showing a card with ID
9
5
  Given a card exists
10
- When I run `troo show card 1`
6
+ When I run `troo show card 200`
11
7
  Then the output should contain:
12
8
  """
13
- (67) My Test Card
9
+ (1) My Test Card
14
10
 
15
11
  Description:
16
12
  some description
@@ -22,16 +18,19 @@ Feature: Showing a card
22
18
  @gavinlaking1
23
19
 
24
20
  Metadata:
25
- Board: (1) My Test Board
26
- List: (1) My Test List
21
+ Board: (1) My Test Board
22
+ List: (1) My Test List
27
23
  Updated: Tue, Dec 17 at 21:48
28
24
  """
29
25
 
30
26
  @show
31
27
  Scenario: Cannot show card; not found
32
- Given the Trello API is stubbed with "fetch_card_by_id"
33
- When I run `troo show card 69`
34
- Then the output should contain "Card cannot be found."
28
+ Given the Trello API is stubbed with "400_card_by_id"
29
+ When I run `troo show card 400`
30
+ Then the output should contain:
31
+ """
32
+ Card cannot be found.
33
+ """
35
34
 
36
35
  @show
37
36
  Scenario: Showing the default card
@@ -39,7 +38,7 @@ Feature: Showing a card
39
38
  When I run `troo show card`
40
39
  Then the output should contain:
41
40
  """
42
- * (67) My Default Card
41
+ (1) My Default Card *
43
42
 
44
43
  Description:
45
44
  some description
@@ -51,12 +50,84 @@ Feature: Showing a card
51
50
  @gavinlaking1
52
51
 
53
52
  Metadata:
54
- Board: (1) My Test Board
55
- List: (1) My Test List
53
+ Board: (1) My Test Board
54
+ List: (1) My Test List
56
55
  Updated: Tue, Dec 17 at 21:48
57
56
  """
58
57
 
59
58
  @show
60
59
  Scenario: Cannot show; no default card
61
60
  When I run `troo show card`
62
- Then the output should contain "set a default card first"
61
+ Then the output should contain:
62
+ """
63
+ set a default card first
64
+ """
65
+
66
+ @show
67
+ Scenario: Showing a card with comments
68
+ Given a card exists
69
+ Given 2 comments exist
70
+ When I run `troo show card 200`
71
+ Then the output should contain:
72
+ """
73
+ (1) My Test Card
74
+
75
+ Description:
76
+ some description
77
+
78
+ Comments:
79
+ @gavinlaking1:
80
+ My Test Comment
81
+ (Tue, Dec 17 at 22:01)
82
+
83
+ @gavinlaking1:
84
+ My Test Comment
85
+ (Tue, Dec 17 at 22:01)
86
+
87
+
88
+
89
+ Members:
90
+ @gavinlaking1
91
+
92
+ Metadata:
93
+ Board: (1) My Test Board
94
+ List: (1) My Test List
95
+ Updated: Tue, Dec 17 at 21:48
96
+ """
97
+
98
+ @show
99
+ Scenario: Showing a card with many comments
100
+ Given a card exists
101
+ Given 5 comments exist
102
+ When I run `troo show card 200`
103
+ Then the output should contain:
104
+ """
105
+ (1) My Test Card
106
+
107
+ Description:
108
+ some description
109
+
110
+ Comments:
111
+ @gavinlaking1:
112
+ My Test Comment
113
+ (Tue, Dec 17 at 22:01)
114
+
115
+ @gavinlaking1:
116
+ My Test Comment
117
+ (Tue, Dec 17 at 22:01)
118
+
119
+ @gavinlaking1:
120
+ My Test Comment
121
+ (Tue, Dec 17 at 22:01)
122
+
123
+
124
+ (There are more comments, use: 'troo show comments 67' to view all comments.)
125
+
126
+ Members:
127
+ @gavinlaking1
128
+
129
+ Metadata:
130
+ Board: (1) My Test Board
131
+ List: (1) My Test List
132
+ Updated: Tue, Dec 17 at 21:48
133
+ """
@@ -1,23 +1,24 @@
1
1
  Feature: Showing comments
2
- Background:
3
- Given a card exists
4
- And a member exists
5
2
 
6
3
  @show
7
4
  Scenario: Showing comments for a card with ID
8
5
  Given a comment exists
9
- When I run `troo show comments 1`
10
- Then the output should contain "My Test Comment"
6
+ When I run `troo show comments 200`
7
+ Then the output should contain:
8
+ """
9
+ My Test Comment
10
+ """
11
11
 
12
12
  @show
13
13
  Scenario: Showing comments for a card with ID; no comments
14
- When I run `troo show comments 1`
14
+ Given a card exists
15
+ When I run `troo show comments 200`
15
16
  Then the output should contain "No comments"
16
17
 
17
18
  @show
18
19
  Scenario: Cannot show comments; card not found
19
- Given the Trello API is stubbed with "fetch_card_by_id"
20
- When I run `troo show comments 69`
20
+ Given the Trello API is stubbed with "400_card_by_id"
21
+ When I run `troo show comments 400`
21
22
  Then the output should contain "Card cannot be found."
22
23
 
23
24
  @show
@@ -27,10 +28,11 @@ Feature: Showing comments
27
28
  When I run `troo show comments`
28
29
  Then the output should contain:
29
30
  """
30
- * (67) My Default Card
31
- gavinlaking1:
32
- My Test Comment
33
- (Tue, Dec 17 at 22:01)
31
+ (1) My Default Card *
32
+
33
+ @gavinlaking1:
34
+ My Test Comment
35
+ (Tue, Dec 17 at 22:01)
34
36
  """
35
37
 
36
38
  @show
@@ -1,24 +1,25 @@
1
1
  Feature: Showing a list
2
- Background:
3
- Given a board exists
4
- And a card exists
5
2
 
6
3
  @show
7
4
  Scenario: Showing a list with ID
8
5
  Given a list exists
9
- When I run `troo show list 1`
6
+ When I run `troo show list 200`
10
7
  Then the output should contain:
11
8
  """
12
- (1) My Test Board
13
- (1) My Test List
14
- (67) My Test Card
9
+ (1) My Test Board
10
+
11
+ (1) My Test List
12
+ No cards were found.
15
13
  """
16
14
 
17
15
  @show
18
16
  Scenario: Cannot show list; not found
19
- Given the Trello API is stubbed with "fetch_list_by_id"
20
- When I run `troo show list 69`
21
- Then the output should contain "List cannot be found."
17
+ Given the Trello API is stubbed with "400_list_by_id"
18
+ When I run `troo show list 400`
19
+ Then the output should contain:
20
+ """
21
+ List cannot be found.
22
+ """
22
23
 
23
24
  @show
24
25
  Scenario: Showing the default list
@@ -26,12 +27,16 @@ Feature: Showing a list
26
27
  When I run `troo show list`
27
28
  Then the output should contain:
28
29
  """
29
- (1) My Test Board
30
- * (1) My Default List
31
- (67) My Test Card
30
+ (1) My Test Board
31
+
32
+ (1) My Default List *
33
+ No cards were found.
32
34
  """
33
35
 
34
36
  @show
35
37
  Scenario: Cannot show; no default list
36
38
  When I run `troo show list`
37
- Then the output should contain "set a default list first"
39
+ Then the output should contain:
40
+ """
41
+ set a default list first
42
+ """
@@ -13,34 +13,48 @@ Feature: Showing the current status
13
13
 
14
14
  @status
15
15
  Scenario: When there is local data; all defaults set
16
- Given a default board exists
17
- And a default list exists
18
- And a default card exists
16
+ Given local data exists, all defaults set
19
17
  When I run `troo status`
20
18
  Then the output should contain:
21
19
  """
22
20
  Status:
23
21
  Boards: 1 board found.
24
- * (1) My Default Board
22
+ (1) My Default Board *
25
23
  Lists: 1 list found.
26
- * (1) My Default List
24
+ (1) My Default List *
27
25
  Cards: 1 card found.
28
- * (67) My Default Card
26
+ (1) My Default Card *
29
27
  """
30
28
 
31
29
  @status
32
30
  Scenario: When there is local data; some defaults set
33
- Given a default board exists
34
- And a board exists
35
- And a default list exists
36
- And a card exists
31
+ Given local data exists
37
32
  When I run `troo status`
38
33
  Then the output should contain:
39
34
  """
40
35
  Status:
41
36
  Boards: 2 boards found.
42
- * (1) My Default Board
37
+ (1) My Default Board *
43
38
  Lists: 1 list found.
44
- * (1) My Default List
45
- Cards: No default card set.
39
+ (1) My Default List *
40
+ Cards: No default card set. (1)
46
41
  """
42
+
43
+ @status
44
+ Scenario: Reports when local data was last updated
45
+ When I run `troo status`
46
+ Then the output should contain:
47
+ """
48
+ Last refreshed:
49
+ Unknown. Run `troo refresh all`.
50
+ """
51
+
52
+ @status
53
+ Scenario: Reports when local data was last updated
54
+ Given local data exists
55
+ When I run `troo status`
56
+ Then the output should not contain:
57
+ """
58
+ Last refreshed:
59
+ Unknown. Run `troo refresh all`.
60
+ """
@@ -2,33 +2,68 @@ require 'fabrication'
2
2
  require_relative '../../test/support/fabrication.rb'
3
3
 
4
4
  Given(/^a board exists$/) do
5
- Fabricate(:board)
5
+ Fabricate(:board, external_id: 200)
6
6
  end
7
7
 
8
8
  Given(/^a list exists$/) do
9
- Fabricate(:list)
9
+ Fabricate(:board)
10
+ Fabricate(:list, external_id: 200)
10
11
  end
11
12
 
12
13
  Given(/^a card exists$/) do
13
- Fabricate(:card)
14
+ Fabricate(:board)
15
+ Fabricate(:list)
16
+ Fabricate(:member)
17
+ Fabricate(:card, external_id: 200)
14
18
  end
15
19
 
16
20
  Given(/^a comment exists$/) do
17
- Fabricate(:comment)
21
+ Fabricate(:card, external_id: 200)
22
+ Fabricate(:member)
23
+ Fabricate(:comment, external_card_id: 200)
18
24
  end
19
25
 
20
- Given(/^a member exists$/) do
26
+ Given(/^(\d+) comments exist$/) do |count|
27
+ Fabricate(:card, external_id: 200)
21
28
  Fabricate(:member)
29
+ count.to_i.times do
30
+ Fabricate(:comment, external_card_id: 200)
31
+ end
22
32
  end
23
33
 
24
34
  Given(/^a default board exists$/) do
25
- Fabricate(:board, default: true, name: 'My Default Board')
35
+ Fabricate(:board, default: true,
36
+ name: 'My Default Board',
37
+ external_id: 200)
26
38
  end
27
39
 
28
40
  Given(/^a default list exists$/) do
29
- Fabricate(:list, default: true, name: 'My Default List')
41
+ Fabricate(:board)
42
+ Fabricate(:list, default: true,
43
+ name: 'My Default List',
44
+ external_id: 200)
30
45
  end
31
46
 
32
47
  Given(/^a default card exists$/) do
33
- Fabricate(:card, default: true, name: 'My Default Card')
48
+ Fabricate(:board)
49
+ Fabricate(:list)
50
+ Fabricate(:member)
51
+ Fabricate(:card, default: true,
52
+ name: 'My Default Card',
53
+ external_id: 200)
54
+ end
55
+
56
+ Given(/^local data exists, all defaults set$/) do
57
+ Fabricate(:board, default: true, name: 'My Default Board')
58
+ Fabricate(:list, default: true, name: 'My Default List')
59
+ Fabricate(:card, default: true, name: 'My Default Card')
60
+ Troo::Refresh.completed!
61
+ end
62
+
63
+ Given(/^local data exists$/) do
64
+ Fabricate(:board, default: true, name: 'My Default Board')
65
+ Fabricate(:board)
66
+ Fabricate(:list, default: true, name: 'My Default List')
67
+ Fabricate(:card, external_id: 200)
68
+ Troo::Refresh.completed!
34
69
  end
@@ -1,5 +1,5 @@
1
1
  Given(/^the Trello API is stubbed with "(.*?)"$/) do |stub|
2
- VCR.insert_cassette(stub)
2
+ VCR.insert_cassette(stub, allow_playback_repeats: true)
3
3
  end
4
4
 
5
5
  Then(/^the output should be the version number of troo$/) do
@@ -7,7 +7,8 @@ Then(/^the output should be the version number of troo$/) do
7
7
  end
8
8
 
9
9
  Before do
10
- Ohm.connect(db: Troo.config.test_db)
10
+ config = Troo::Configuration.load('test/support/.trooconf', :test)
11
+ Ohm.connect(db: config.database)
11
12
  end
12
13
 
13
14
  After do
@@ -5,6 +5,7 @@ require 'aruba/in_process'
5
5
  require 'ohm'
6
6
  require 'vcr'
7
7
  require 'webmock/cucumber'
8
+ require 'mocha/api'
8
9
 
9
10
  SimpleCov.start do
10
11
  add_filter '/test/'
@@ -17,15 +17,3 @@ Feature: Troo Basics
17
17
  """
18
18
  Could not find command "unknown".
19
19
  """
20
-
21
- @pending @authentication
22
- Scenario: Not authenticated with Trello
23
- Given the Trello API is stubbed with "unauthenticated"
24
-
25
- @pending @connectivity
26
- Scenario: Trello not responding
27
- Given the Trello API is stubbed with "trello_failure"
28
-
29
- @pending @connectivity
30
- Scenario: No network connection
31
-
@@ -1,32 +1,36 @@
1
+ $LOAD_PATH << File.expand_path(File.dirname(__FILE__) + '/../lib')
2
+
1
3
  require_relative 'troo/troo'
2
4
  require_relative 'troo/version'
3
5
 
4
6
  module Troo
5
- class InvalidAccessToken < StandardError; end
6
-
7
- def self.config
8
- @config ||= OpenStruct.new(YAML.load_file(Dir.home + '/.trooconf'))
9
- rescue Errno::ENOENT
10
- warn 'No configuration file found...'
11
- src = File.dirname(__FILE__) + '/../configuration.yml.example'
12
- dst = Dir.home + '/.trooconf'
13
- FileUtils.cp(src, dst)
14
- warn "New configuration file created at '#{Dir.home}/.trooconf'"
15
- exit!
7
+ InvalidAccessToken = Class.new(StandardError)
8
+ EndpointNotFound = Class.new(StandardError)
9
+
10
+ def self.configuration(file = Dir.home + '/.trooconf', env = :default)
11
+ @configuration ||= Troo::Configuration.load(file, env)
16
12
  end
13
+ configuration
17
14
 
18
- def self.logger
19
- @logger ||= Logger.new('logs/troo.log')
15
+ def self.endpoints(version = :version_1)
16
+ @endpoints ||= Troo::API::Endpoints
17
+ .load(File.dirname(__FILE__) + '/../config/trello_api.yml', version)
20
18
  end
19
+ endpoints
21
20
 
22
- # Trello.logger = Logger.new("logs/trello.log")
23
- Trello.configure do |trello|
24
- trello.consumer_key = config.key
25
- trello.consumer_secret = config.secret
26
- trello.oauth_token = config.oauth_token
27
- trello.oauth_token_secret = config.oauth_token_secret
21
+ def self.logger
22
+ @logger ||= Logger
23
+ .new(File.dirname(__FILE__) + '/../logs/troo.log').tap do |log|
24
+ log.formatter = proc do |mode, time, prog, msg|
25
+ "#{time.iso8601} #{mode}:\n#{msg}\n\n"
26
+ end
27
+ end
28
28
  end
29
29
 
30
+ # RestClient.log = File.dirname(__FILE__) + '/../logs/restclient.log'
31
+
32
+ Ohm.connect(db: Troo.configuration.database)
33
+
30
34
  class Launcher
31
35
  def initialize(argv, stdin = STDIN,
32
36
  stdout = STDOUT,
@@ -41,19 +45,18 @@ module Troo
41
45
 
42
46
  def execute!
43
47
  $stdin, $stdout, $stderr = @stdin, @stdout, @stderr
48
+ pad { Troo::CLI::Main.start(@argv) }
49
+ @kernel.exit(0)
50
+ ensure
51
+ $stdin, $stdout, $stderr = STDIN, STDOUT, STDERR
52
+ end
44
53
 
54
+ private
55
+
56
+ def pad
45
57
  puts
46
- Troo::CLI::Main.start(@argv)
58
+ yield
47
59
  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
60
  end
58
61
  end
59
62
  end