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,9 @@
1
+ require_relative '../../../test_helper'
2
+
3
+ module Troo
4
+ module Remote
5
+ describe CommentDataBoard do
6
+ let(:described_class) { CommentDataBoard }
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ require_relative '../../../test_helper'
2
+
3
+ module Troo
4
+ module Remote
5
+ describe CommentDataCard do
6
+ let(:described_class) { CommentDataCard }
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ require_relative '../../../test_helper'
2
+
3
+ module Troo
4
+ module Remote
5
+ describe CommentData do
6
+ let(:described_class) { CommentData }
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,100 @@
1
+ require_relative '../../../test_helper'
2
+
3
+ module Troo
4
+ module Remote
5
+ describe Comment do
6
+ def load_mock_trello_response
7
+ json = File.read('./test/support/remotes/comment.json')
8
+ hash = Yajl::Parser.parse(json)
9
+ Troo::Remote::Comment.new(hash)
10
+ end
11
+
12
+ let(:described_class) { Comment }
13
+ let(:resource) { load_mock_trello_response }
14
+ let(:described_instance) { described_class.new(resource) }
15
+
16
+ describe '.remote_options' do
17
+ subject { described_class.remote_options }
18
+
19
+ it 'returns the default remote options' do
20
+ subject.fetch(:mode).must_equal(:card)
21
+ end
22
+ end
23
+
24
+ describe '.by_board_id' do
25
+ subject { described_class.by_board_id }
26
+
27
+ it 'returns the resource parameters' do
28
+ subject.fetch(:endpoint).must_equal(:comments_by_board_id)
29
+ end
30
+ end
31
+
32
+ describe '.by_card_id' do
33
+ subject { described_class.by_card_id }
34
+
35
+ it 'returns the resource parameters' do
36
+ subject.fetch(:endpoint).must_equal(:comments_by_card_id)
37
+ end
38
+ end
39
+
40
+ describe '#external_board_id' do
41
+ subject { described_instance.external_board_id }
42
+
43
+ it 'delegates to the CommentData model' do
44
+ subject.must_equal('526d8e130a14a9d846001d96')
45
+ end
46
+ end
47
+
48
+ describe '#external_card_id' do
49
+ subject { described_instance.external_card_id }
50
+
51
+ it 'delegates to the CommentData model' do
52
+ subject.must_equal('526d8f19ddb279532e005259')
53
+ end
54
+ end
55
+
56
+ describe '#external_comment_id' do
57
+ subject { described_instance.external_comment_id }
58
+
59
+ it 'returns the value of the id attribute' do
60
+ subject.must_equal('51f9277b2822b8654f0023af')
61
+ end
62
+ end
63
+
64
+ describe '#text' do
65
+ subject { described_instance.text }
66
+
67
+ it 'delegates to the CommentData model' do
68
+ subject.must_equal('My Test Comment')
69
+ end
70
+ end
71
+
72
+ describe '#associations' do
73
+ subject { described_instance.associations }
74
+
75
+ it { subject.must_equal [:memberCreator] }
76
+ end
77
+
78
+ describe '#local_model' do
79
+ subject { described_instance.local_model }
80
+
81
+ it { subject.must_equal Troo::Comment }
82
+ end
83
+
84
+ describe '#adapted' do
85
+ subject { described_instance.adapted }
86
+
87
+ it 'returns an adapted resource for local persistence' do
88
+ subject.must_equal(
89
+ external_id: '51f9277b2822b8654f0023af',
90
+ external_board_id: '526d8e130a14a9d846001d96',
91
+ external_card_id: '526d8f19ddb279532e005259',
92
+ external_member_id: '5195fdb5a8c01a2318004f5d',
93
+ date: '2014-02-07T18:02:24.297Z',
94
+ text: 'My Test Comment'
95
+ )
96
+ end
97
+ end
98
+ end
99
+ end
100
+ end
@@ -0,0 +1,67 @@
1
+ require_relative '../../../test_helper'
2
+
3
+ module Troo
4
+ module Remote
5
+ describe List do
6
+ def load_mock_trello_response
7
+ json = File.read('./test/support/remotes/list.json')
8
+ hash = Yajl::Parser.parse(json)
9
+ Troo::Remote::List.new(hash)
10
+ end
11
+
12
+ let(:described_class) { List }
13
+ let(:resource) { load_mock_trello_response }
14
+ let(:described_instance) { described_class.new(resource) }
15
+
16
+ describe '.remote_options' do
17
+ subject { described_class.remote_options }
18
+
19
+ it 'returns the default remote options' do
20
+ subject.fetch(:mode).must_equal(:list)
21
+ end
22
+ end
23
+
24
+ describe '.by_board_id' do
25
+ subject { described_class.by_board_id }
26
+
27
+ it 'returns the resource parameters' do
28
+ subject.fetch(:endpoint).must_equal(:lists_by_board_id)
29
+ end
30
+ end
31
+
32
+ describe '.by_list_id' do
33
+ subject { described_class.by_list_id }
34
+
35
+ it 'returns the resource parameters' do
36
+ subject.fetch(:endpoint).must_equal(:list_by_id)
37
+ end
38
+ end
39
+
40
+ describe '#associations' do
41
+ subject { described_instance.associations }
42
+
43
+ it { subject.must_equal [] }
44
+ end
45
+
46
+ describe '#local_model' do
47
+ subject { described_instance.local_model }
48
+
49
+ it { subject.must_equal Troo::List }
50
+ end
51
+
52
+ describe '#adapted' do
53
+ subject { described_instance.adapted }
54
+
55
+ it 'returns an adapted resource for local persistence' do
56
+ subject.must_equal(
57
+ external_board_id: '526d8e130a14a9d846001d96',
58
+ external_id: '526d8e130a14a9d846001d97',
59
+ name: 'My Test List',
60
+ position: 32_768,
61
+ closed: false
62
+ )
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,70 @@
1
+ require_relative '../../../test_helper'
2
+
3
+ module Troo
4
+ module Remote
5
+ describe Member do
6
+ let(:described_class) { Member }
7
+ let(:resource) { load_mock_trello_response }
8
+ let(:described_instance) { described_class.new(resource) }
9
+
10
+ def load_mock_trello_response
11
+ json = File.read('./test/support/remotes/member.json')
12
+ hash = Yajl::Parser.parse(json)
13
+ Troo::Remote::Member.new(hash)
14
+ end
15
+
16
+ describe '.remote_options' do
17
+ subject { described_class.remote_options }
18
+
19
+ it 'returns the default remote options' do
20
+ subject.fetch(:mode).must_equal(:member)
21
+ end
22
+ end
23
+
24
+ describe '.by_board_id' do
25
+ subject { described_class.by_board_id }
26
+
27
+ it 'returns the resource parameters' do
28
+ subject.fetch(:endpoint).must_equal(:members_by_board_id)
29
+ end
30
+ end
31
+
32
+ describe '.by_member_id' do
33
+ subject { described_class.by_member_id }
34
+
35
+ it 'returns the resource parameters' do
36
+ subject.fetch(:endpoint).must_equal(:member_by_id)
37
+ end
38
+ end
39
+
40
+ describe '#associations' do
41
+ subject { described_instance.associations }
42
+
43
+ it { subject.must_equal [] }
44
+ end
45
+
46
+ describe '#local_model' do
47
+ subject { described_instance.local_model }
48
+
49
+ it { subject.must_equal Troo::Member }
50
+ end
51
+
52
+ describe '#adapted' do
53
+ subject { described_instance.adapted }
54
+
55
+ it 'returns an adapted resource for local persistence' do
56
+ subject.must_equal(
57
+ external_id: '5195fdb5a8c01a2318004f5d',
58
+ username: 'gavinlaking1',
59
+ email: 'gavinlaking@gmail.com',
60
+ full_name: 'Gavin Laking',
61
+ initials: 'GL',
62
+ avatar_id: '045fd924d84699c9ba451e181bba33a3',
63
+ bio: 'some bio',
64
+ url: '<Trello URL>'
65
+ )
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,39 @@
1
+ require_relative '../../../../test_helper'
2
+
3
+ module Troo
4
+ module Remote
5
+ module Persistence
6
+ describe Board do
7
+ let(:described_class) { Board }
8
+ let(:resource_name) { 'My New Board' }
9
+ let(:description) { 'A very brief description...' }
10
+
11
+ describe '.with' do
12
+ subject { described_class.with(resource_name, description) }
13
+
14
+ context 'when the board was created' do
15
+ before do
16
+ VCR.insert_cassette(:create_board,
17
+ decode_compressed_response: true)
18
+ end
19
+
20
+ after do
21
+ database_cleanup
22
+ VCR.eject_cassette
23
+ end
24
+
25
+ it 'returns the new board' do
26
+ subject.must_be_instance_of Troo::Board
27
+ end
28
+ end
29
+
30
+ context 'when the board was not created' do
31
+ before { API::Client.stubs(:perform).returns([]) }
32
+
33
+ it { subject.must_equal false }
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,50 @@
1
+ require_relative '../../../../test_helper'
2
+
3
+ module Troo
4
+ module Remote
5
+ module Persistence
6
+ describe Card do
7
+ let(:described_class) { Card }
8
+ let(:external_list_id) { '526d8e130a14a9d846001d97' }
9
+ let(:resource_name) { 'My New Card' }
10
+ let(:description) { 'A description to get us started.' }
11
+ let(:card) do
12
+ [Fabricate.build(:card, name: resource_name,
13
+ desc: description)]
14
+ end
15
+
16
+ before do
17
+ Troo::Persistence::Local.stubs(:with_collection)
18
+ .returns(card)
19
+ end
20
+ after { database_cleanup }
21
+
22
+ describe '.with' do
23
+ before do
24
+ VCR.insert_cassette(:create_card,
25
+ decode_compressed_response: true)
26
+ end
27
+
28
+ after { VCR.eject_cassette }
29
+
30
+ subject do
31
+ described_class
32
+ .with(external_list_id, resource_name, description)
33
+ end
34
+
35
+ context 'when the card was created' do
36
+ it 'returns the new card' do
37
+ subject.must_be_instance_of Troo::Card
38
+ end
39
+ end
40
+
41
+ context 'when the card was not created' do
42
+ before { API::Client.stubs(:perform).returns([]) }
43
+
44
+ it { subject.must_equal false }
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,45 @@
1
+ require_relative '../../../../test_helper'
2
+
3
+ module Troo
4
+ module Remote
5
+ module Persistence
6
+ describe Comment do
7
+ let(:described_class) { Comment }
8
+ let(:external_card_id) { '526d8f19ddb279532e005259' }
9
+ let(:text) { 'Some much needed feedback...' }
10
+ let(:comment) do
11
+ [Fabricate.build(:comment, text: text)]
12
+ end
13
+
14
+ before do
15
+ Troo::Persistence::Local.stubs(:with_collection)
16
+ .returns(comment)
17
+ end
18
+ after { database_cleanup }
19
+
20
+ describe '.with' do
21
+ before do
22
+ VCR.insert_cassette(:create_comment,
23
+ decode_compressed_response: true)
24
+ end
25
+
26
+ after { VCR.eject_cassette }
27
+
28
+ subject { described_class.with(external_card_id, text) }
29
+
30
+ context 'when the comment was created' do
31
+ it 'returns the new comment' do
32
+ subject.must_be_instance_of Troo::Comment
33
+ end
34
+ end
35
+
36
+ context 'when the comment was not created' do
37
+ before { API::Client.stubs(:perform).returns([]) }
38
+
39
+ it { subject.must_equal false }
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,45 @@
1
+ require_relative '../../../../test_helper'
2
+
3
+ module Troo
4
+ module Remote
5
+ module Persistence
6
+ describe List do
7
+ let(:described_class) { List }
8
+ let(:external_board_id) { '526d8e130a14a9d846001d96' }
9
+ let(:resource_name) { 'My New List' }
10
+ let(:list) do
11
+ [Fabricate.build(:list, name: resource_name)]
12
+ end
13
+
14
+ before do
15
+ Troo::Persistence::Local.stubs(:with_collection)
16
+ .returns(list)
17
+ end
18
+ after { database_cleanup }
19
+
20
+ describe '.with' do
21
+ before do
22
+ VCR.insert_cassette(:create_list,
23
+ decode_compressed_response: true)
24
+ end
25
+
26
+ after { VCR.eject_cassette }
27
+
28
+ subject { described_class.with(@board, resource_name) }
29
+
30
+ context 'when the list was created' do
31
+ it 'returns the new list' do
32
+ subject.must_be_instance_of Troo::List
33
+ end
34
+ end
35
+
36
+ context 'when the list was not created' do
37
+ before { API::Client.stubs(:perform).returns([]) }
38
+
39
+ it { subject.must_equal false }
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end