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
@@ -1,74 +0,0 @@
1
- require_relative '../../../test_helper'
2
-
3
- module Troo
4
- module Decorators
5
- describe Comment do
6
- let(:described_class) { Comment }
7
- let(:default) { true }
8
- let(:options) { {} }
9
-
10
- before do
11
- @comment = Fabricate(:comment)
12
- @member = Fabricate(:member)
13
- end
14
-
15
- after { database_cleanup }
16
-
17
- describe '#initialize' do
18
- subject { described_class.new(@comment, options) }
19
-
20
- it 'assigns the comment to an instance variable' do
21
- subject.instance_variable_get('@comment')
22
- .must_equal(@comment)
23
- end
24
-
25
- it 'assigns the options to an instance variable' do
26
- subject.instance_variable_get('@options')
27
- .must_equal(options)
28
- end
29
- end
30
-
31
- describe '#as_view' do
32
- subject { described_class.new(@comment).as_view }
33
-
34
- it 'returns the rendered comment' do
35
- subject.must_match(/gavinlaking1/)
36
- subject.must_match(/My Test Comment/)
37
- subject.must_match(/Tue, Dec 17 at 22:01/)
38
- end
39
- end
40
-
41
- describe '#member_username' do
42
- subject { described_class.new(@comment).member_username }
43
-
44
- it 'returns the comment member username' do
45
- subject.must_equal(@comment.member.username + ':')
46
- end
47
- end
48
-
49
- describe '#text' do
50
- subject { described_class.new(@comment).text }
51
-
52
- it 'returns the comment text' do
53
- subject.must_equal(@comment.text)
54
- end
55
- end
56
-
57
- describe '#date' do
58
- subject { described_class.new(@comment).date }
59
-
60
- it 'returns the comment date' do
61
- subject.must_equal('Tue, Dec 17 at 22:01')
62
- end
63
- end
64
-
65
- describe '#id' do
66
- subject { described_class.new(@comment).id }
67
-
68
- it 'returns the comment id' do
69
- subject.must_equal("(#{@comment.id})")
70
- end
71
- end
72
- end
73
- end
74
- end
@@ -1,102 +0,0 @@
1
- require_relative '../../../test_helper'
2
-
3
- module Troo
4
- module Decorators
5
- describe List do
6
- let(:described_class) { List }
7
- let(:default) { true }
8
- let(:options) { {} }
9
-
10
- before { @list = Fabricate(:list, default: default) }
11
- after { database_cleanup }
12
-
13
- describe '#initialize' do
14
- subject { described_class.new(@list, options) }
15
-
16
- it 'assigns the list to an instance variable' do
17
- subject.instance_variable_get('@list').must_equal(@list)
18
- end
19
-
20
- it 'assigns the options to an instance variable' do
21
- subject.instance_variable_get('@options')
22
- .must_equal(options)
23
- end
24
- end
25
-
26
- describe '#short' do
27
- subject { described_class.new(@list, options).short }
28
-
29
- it 'returns a one line overview of the list' do
30
- subject.must_equal(" * \e[32m\e[4m(1) \e[0m\e[32m\e[4mMy " \
31
- "Test List\e[0m\n")
32
- end
33
-
34
- context 'when the ansicolor option is false' do
35
- let(:options) { { ansicolor: false } }
36
-
37
- it 'returns a one line overview of the board' do
38
- subject.must_equal(" * (1) My Test List\n")
39
- end
40
- end
41
- end
42
-
43
- describe '#name_str' do
44
- subject { described_class.new(@list).name_str }
45
-
46
- it 'returns the formatted list name' do
47
- subject.must_equal("\e[32m\e[4mMy Test List\e[0m")
48
- end
49
- end
50
-
51
- describe '#default_str' do
52
- subject { described_class.new(@list).default_str }
53
-
54
- it 'returns the formatted card default indicator' do
55
- subject.must_equal(' * ')
56
- end
57
- end
58
-
59
- describe '#id_str' do
60
- subject { described_class.new(@list).id_str }
61
-
62
- it 'returns the formatted list id' do
63
- subject.must_equal("\e[32m\e[4m(1) \e[0m")
64
- end
65
- end
66
-
67
- describe '#name' do
68
- subject { described_class.new(@list).name }
69
-
70
- it 'returns the list name' do
71
- subject.must_equal(@list.name)
72
- end
73
- end
74
-
75
- describe '#default' do
76
- subject { described_class.new(@list).default }
77
-
78
- context 'when default' do
79
- it 'return an indicator' do
80
- subject.must_equal('*')
81
- end
82
- end
83
-
84
- context 'when not default' do
85
- let(:default) { false }
86
-
87
- it 'returns nothing' do
88
- subject.must_equal('')
89
- end
90
- end
91
- end
92
-
93
- describe '#id' do
94
- subject { described_class.new(@list).id }
95
-
96
- it 'returns the list id' do
97
- subject.must_equal(@list.id.to_s)
98
- end
99
- end
100
- end
101
- end
102
- end
@@ -1,102 +0,0 @@
1
- require_relative '../../../test_helper'
2
-
3
- module Troo
4
- module External
5
- describe Board do
6
- let(:described_class) { Board }
7
- let(:board_id) { '526d8e130a14a9d846001d96' }
8
- let(:options) { {} }
9
-
10
- describe '.fetch' do
11
- subject { described_class.fetch(board_id, options) }
12
-
13
- context 'when the all option is set' do
14
- let(:options) { { mode: :all } }
15
-
16
- before do
17
- VCR.insert_cassette(:boards_all,
18
- decode_compressed_response: true)
19
- end
20
- after { VCR.eject_cassette }
21
-
22
- it 'returns multiple boards' do
23
- subject.size.must_equal(1)
24
- end
25
-
26
- context 'when no boards can be found' do
27
- before { Trello::Board.stubs(:all).raises(Trello::Error) }
28
-
29
- it 'returns an empty collection' do
30
- subject.must_equal([])
31
- end
32
- end
33
-
34
- context 'and the option is :list' do
35
- let(:options) { { mode: :list } }
36
-
37
- it 'returns an empty collection' do
38
- subject.must_equal([])
39
- end
40
- end
41
-
42
- context 'and the option is :card' do
43
- let(:options) { { mode: :card } }
44
-
45
- it 'returns an empty collection' do
46
- subject.must_equal([])
47
- end
48
- end
49
-
50
- context 'and the option is :member' do
51
- let(:options) { { mode: :member } }
52
-
53
- it 'returns an empty collection' do
54
- subject.must_equal([])
55
- end
56
- end
57
- end
58
-
59
- context 'when the all option is not set' do
60
- before do
61
- VCR.insert_cassette(:board_by_id,
62
- decode_compressed_response: true)
63
- end
64
- after { VCR.eject_cassette }
65
-
66
- it 'returns a single board' do
67
- subject.size.must_equal(1)
68
- end
69
-
70
- it 'returns a board with the board_id' do
71
- subject.first.external_board_id.must_equal(board_id)
72
- end
73
-
74
- it 'returns a board with the correct name' do
75
- subject.first.name.must_equal('Troo App')
76
- end
77
-
78
- context 'when the board cannot be found' do
79
- before { Trello::Board.stubs(:find).raises(Trello::Error) }
80
-
81
- it 'returns an empty collection' do
82
- subject.must_equal([])
83
- end
84
- end
85
-
86
- context 'when the access token is invalid' do
87
- before do
88
- Trello::Board.stubs(:find)
89
- .raises(Trello::InvalidAccessToken)
90
- end
91
-
92
- subject { described_class.new(board_id, options).fetch }
93
-
94
- it 'catches the exception and re-raises' do
95
- proc { subject }.must_raise(Troo::InvalidAccessToken)
96
- end
97
- end
98
- end
99
- end
100
- end
101
- end
102
- end
@@ -1,131 +0,0 @@
1
- require_relative '../../../test_helper'
2
-
3
- module Troo
4
- module External
5
- describe Card do
6
- let(:described_class) { Card }
7
- let(:card_id) { '526d8f19ddb279532e005259' }
8
- let(:options) { {} }
9
-
10
- before { @card = Fabricate(:card) }
11
- after { database_cleanup }
12
-
13
- describe 'when the mode is board' do
14
- before do
15
- VCR.insert_cassette(:cards_by_board_id,
16
- decode_compressed_response: true)
17
- end
18
- after { VCR.eject_cassette }
19
-
20
- let(:board_id) { '526d8e130a14a9d846001d96' }
21
- let(:options) { { mode: :board, comments: false } }
22
-
23
- subject { described_class.fetch(board_id, options) }
24
-
25
- it 'returns multiple cards' do
26
- subject.size.must_equal(2)
27
- end
28
-
29
- context 'when the board cannot be found' do
30
- before { Trello::Board.stubs(:find).raises(Trello::Error) }
31
-
32
- it 'returns an empty collection' do
33
- subject.must_equal([])
34
- end
35
- end
36
-
37
- context 'when the access token is invalid' do
38
- before do
39
- Trello::Board.stubs(:find)
40
- .raises(Trello::InvalidAccessToken)
41
- end
42
-
43
- subject { described_class.new(board_id, options).fetch }
44
-
45
- it 'catches the exception and re-raises' do
46
- proc { subject }.must_raise(Troo::InvalidAccessToken)
47
- end
48
- end
49
- end
50
-
51
- describe 'when the mode is list' do
52
- before do
53
- VCR.insert_cassette(:cards_by_list_id,
54
- decode_compressed_response: true)
55
- end
56
- after { VCR.eject_cassette }
57
-
58
- let(:list_id) { '526d8e130a14a9d846001d97' }
59
- let(:options) { { mode: :list, comments: false } }
60
-
61
- subject { described_class.fetch(list_id, options) }
62
-
63
- it 'returns multiple cards' do
64
- subject.size.must_equal(1)
65
- end
66
-
67
- context 'when the list cannot be found' do
68
- before { Trello::List.stubs(:find).raises(Trello::Error) }
69
-
70
- it 'returns an empty collection' do
71
- subject.must_equal([])
72
- end
73
- end
74
- end
75
-
76
- describe 'when the mode is card' do
77
- before do
78
- VCR.insert_cassette(:card_by_card_id,
79
- decode_compressed_response: true)
80
- end
81
- after { VCR.eject_cassette }
82
-
83
- let(:card_id) { '526d8f19ddb279532e005259' }
84
- let(:options) { { mode: :card, comments: false } }
85
-
86
- subject { described_class.fetch(card_id, options) }
87
-
88
- it 'returns a single card' do
89
- subject.size.must_equal(1)
90
- end
91
-
92
- context 'when the card cannot be found' do
93
- before { Trello::Card.stubs(:find).raises(Trello::Error) }
94
-
95
- it 'returns an empty collection' do
96
- subject.must_equal([])
97
- end
98
- end
99
- end
100
-
101
- describe 'when the comments options is enabled' do
102
- before do
103
- Trello::Card.stubs(:find).returns(resource)
104
- External::Comment.stubs(:fetch)
105
- end
106
-
107
- let(:resource) do
108
- OpenStruct.new(id: '526d8f19ddb279532e005259')
109
- end
110
- let(:options) { { mode: :card, comments: true } }
111
-
112
- subject { described_class.fetch(card_id, options) }
113
-
114
- it 'fetches the comments for the card' do
115
- subject.size.must_equal(1)
116
- end
117
- end
118
-
119
- describe 'when the mode is member' do
120
- let(:member_id) { '5195fdb5a8c01a2318004f5d' }
121
- let(:options) { { mode: :member, comments: false } }
122
-
123
- subject { described_class.fetch(member_id, options) }
124
-
125
- it 'returns an empty collection' do
126
- subject.must_equal([])
127
- end
128
- end
129
- end
130
- end
131
- end
@@ -1,109 +0,0 @@
1
- require_relative '../../../test_helper'
2
-
3
- module Troo
4
- module External
5
- describe Comment do
6
- let(:described_class) { Comment }
7
- let(:options) { {} }
8
-
9
- describe 'when the mode is board' do
10
- before do
11
- VCR.insert_cassette(:comments_by_board_id,
12
- decode_compressed_response: true)
13
- end
14
- after { VCR.eject_cassette }
15
-
16
- let(:board_id) { '526d8e130a14a9d846001d96' }
17
- let(:options) { { mode: :board } }
18
-
19
- subject { described_class.fetch(board_id, options) }
20
-
21
- it 'returns multiple comments' do
22
- subject.size.must_equal(2)
23
- end
24
-
25
- context 'when the board cannot be found' do
26
- before { Trello::Board.stubs(:find).raises(Trello::Error) }
27
-
28
- it 'returns an empty collection' do
29
- subject.must_equal([])
30
- end
31
- end
32
-
33
- context 'when the access token is invalid' do
34
- before do
35
- Trello::Board.stubs(:find)
36
- .raises(Trello::InvalidAccessToken)
37
- end
38
-
39
- subject { described_class.new(board_id, options).fetch }
40
-
41
- it 'catches the exception and re-raises' do
42
- proc { subject }.must_raise(Troo::InvalidAccessToken)
43
- end
44
- end
45
- end
46
-
47
- describe 'when the mode is list' do
48
- before do
49
- VCR.insert_cassette(:comments_by_list_id,
50
- decode_compressed_response: true)
51
- end
52
- after { VCR.eject_cassette }
53
-
54
- let(:list_id) { '526d8e130a14a9d846001d97' }
55
- let(:options) { { mode: :list } }
56
-
57
- subject { described_class.fetch(list_id, options) }
58
-
59
- it 'returns comments with the list_id' do
60
- subject.size.must_equal(0)
61
- end
62
-
63
- context 'when the list cannot be found' do
64
- before { Trello::List.stubs(:find).raises(Trello::Error) }
65
-
66
- it 'returns an empty collection' do
67
- subject.must_equal([])
68
- end
69
- end
70
- end
71
-
72
- describe 'when the mode is card' do
73
- before do
74
- VCR.insert_cassette(:comments_by_card_id,
75
- decode_compressed_response: true)
76
- end
77
- after { VCR.eject_cassette }
78
-
79
- let(:card_id) { '526d8f19ddb279532e005259' }
80
- let(:options) { { mode: :card } }
81
-
82
- subject { described_class.fetch(card_id, options) }
83
-
84
- it 'returns a comment with the card_id' do
85
- subject.size.must_equal(2)
86
- end
87
-
88
- context 'when the card cannot be found' do
89
- before { Trello::Card.stubs(:find).raises(Trello::Error) }
90
-
91
- it 'returns an empty collection' do
92
- subject.must_equal([])
93
- end
94
- end
95
- end
96
-
97
- describe 'when the mode is member' do
98
- let(:member_id) { '5195fdb5a8c01a2318004f5d' }
99
- let(:options) { { mode: :member } }
100
-
101
- subject { described_class.fetch(member_id, options) }
102
-
103
- it 'returns an empty collection' do
104
- subject.must_equal([])
105
- end
106
- end
107
- end
108
- end
109
- end