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,60 +0,0 @@
1
- require_relative '../../../../test_helper'
2
-
3
- module Troo
4
- describe Persistence::List do
5
- let(:described_class) { Persistence::List }
6
- let(:resource) do
7
- OpenStruct.new(
8
- id: '526d8e130a14a9d846001d97',
9
- name: resource_name,
10
- closed: false)
11
- end
12
- let(:resource_name) { 'My Test List' }
13
- let(:options) { {} }
14
-
15
- before { @list = Fabricate(:list) }
16
- after { database_cleanup }
17
-
18
- describe '.initialize' do
19
- subject { described_class.new(resource, options) }
20
-
21
- it 'assigns the resource to an instance variable' do
22
- subject.instance_variable_get('@resource').must_equal(resource)
23
- end
24
-
25
- it 'assigns the options to an instance variable' do
26
- subject.instance_variable_get('@options').must_equal(options)
27
- end
28
- end
29
-
30
- describe '#persist' do
31
- subject { described_class.for(resource, options) }
32
-
33
- context 'when there is already a local copy' do
34
- context 'and the local copy is identical' do
35
- it 'returns the local copy' do
36
- subject.must_equal(@list)
37
- end
38
- end
39
-
40
- context 'and the local copy is out of date' do
41
- let(:resource_name) { 'My Renamed List' }
42
-
43
- it 'updates and returns the new local copy' do
44
- subject.name.must_equal(resource_name)
45
- end
46
- end
47
- end
48
-
49
- context 'when there is not already a local copy' do
50
- let(:resource_name) { 'My New Test List' }
51
-
52
- before { database_cleanup }
53
-
54
- it 'creates and returns the new local copy' do
55
- subject.name.must_equal(resource_name)
56
- end
57
- end
58
- end
59
- end
60
- end
@@ -1,60 +0,0 @@
1
- require_relative '../../../../test_helper'
2
-
3
- module Troo
4
- describe Persistence::Member do
5
- let(:described_class) { Persistence::Member }
6
- let(:resource) do
7
- OpenStruct.new(
8
- id: '5195fdb5a8c01a2318004f5d',
9
- full_name: resource_full_name)
10
- end
11
- let(:resource_full_name) { 'My Test Member' }
12
- let(:options) { {} }
13
-
14
- before { @member = Fabricate(:member) }
15
- after { database_cleanup }
16
-
17
- describe '.initialize' do
18
- subject { described_class.new(resource, options) }
19
-
20
- it 'assigns the resource to an instance variable' do
21
- subject.instance_variable_get('@resource')
22
- .must_equal(resource)
23
- end
24
-
25
- it 'assigns the options to an instance variable' do
26
- subject.instance_variable_get('@options').must_equal(options)
27
- end
28
- end
29
-
30
- describe '#persist' do
31
- subject { described_class.for(resource, options) }
32
-
33
- context 'when there is already a local copy' do
34
- context 'and the local copy is identical' do
35
- it 'returns the local copy' do
36
- subject.must_equal(@member)
37
- end
38
- end
39
-
40
- context 'and the local copy is out of date' do
41
- let(:resource_full_name) { 'My Renamed Member' }
42
-
43
- it 'updates and returns the new local copy' do
44
- subject.full_name.must_equal(resource_full_name)
45
- end
46
- end
47
- end
48
-
49
- context 'when there is not already a local copy' do
50
- let(:resource_full_name) { 'My New Test Member' }
51
-
52
- before { database_cleanup }
53
-
54
- it 'creates and returns the new local copy' do
55
- subject.full_name.must_equal(resource_full_name)
56
- end
57
- end
58
- end
59
- end
60
- end
@@ -1,56 +0,0 @@
1
- require_relative '../../../../test_helper'
2
-
3
- module Troo
4
- module Remote
5
- describe Comment do
6
- let(:described_class) { Comment }
7
- let(:json) do
8
- "{\"id\":\"52f51fb0b6e6b1fb2de2949e\"," \
9
- "\"idMemberCreator\":\"5195fdb5a8c01a2318004f5d\"," \
10
- "\"data\":{\"text\":\"This is a comment.\"," \
11
- "\"card\":{\"id\":\"526d8f19ddb279532e005259\"}," \
12
- "\"board\":{\"id\":\"526d8e130a14a9d846001d96\"}}," \
13
- "\"date\":\"2014-02-07T18:02:24.297Z\"}"
14
- end
15
-
16
- describe '#id' do
17
- subject { described_class.create(json).id }
18
-
19
- it 'returns the comment ID' do
20
- subject.must_equal('52f51fb0b6e6b1fb2de2949e')
21
- end
22
- end
23
-
24
- describe '#member_creator_id' do
25
- subject { described_class.create(json).member_creator_id }
26
-
27
- it 'returns the member creator ID' do
28
- subject.must_equal('5195fdb5a8c01a2318004f5d')
29
- end
30
- end
31
-
32
- describe '#date' do
33
- subject { described_class.create(json).date }
34
-
35
- it 'returns the date the comment was created' do
36
- subject.must_equal('2014-02-07T18:02:24.297Z')
37
- end
38
- end
39
-
40
- describe '#data' do
41
- subject { described_class.create(json).data }
42
-
43
- it 'returns a hash of useful data' do
44
- subject.must_equal(
45
- 'text' => 'This is a comment.',
46
- 'card' => {
47
- 'id' => '526d8f19ddb279532e005259'
48
- },
49
- 'board' => {
50
- 'id' => '526d8e130a14a9d846001d96'
51
- })
52
- end
53
- end
54
- end
55
- end
56
- end
@@ -1,26 +0,0 @@
1
- require_relative '../../../../test_helper'
2
-
3
- module Troo
4
- module Remote
5
- describe Resource do
6
- let(:described_class) { Resource }
7
- let(:json) { "{\"some_key\":\"some_value\"}" }
8
-
9
- describe '#initialize' do
10
- subject { described_class.new(json) }
11
-
12
- it 'assigns the JSON to an instance variable' do
13
- subject.instance_variable_get('@json').must_equal(json)
14
- end
15
- end
16
-
17
- describe '.create' do
18
- subject { described_class.create(json) }
19
-
20
- it 'returns the resource' do
21
- subject.must_be_instance_of described_class
22
- end
23
- end
24
- end
25
- end
26
- end
@@ -1,93 +0,0 @@
1
- require_relative '../../../../test_helper'
2
-
3
- module Troo
4
- describe Retrieval::Board do
5
- let(:described_class) { Retrieval::Board }
6
- let(:default) { true }
7
- let(:board_name) { 'My Test Board' }
8
-
9
- before { @board = Fabricate(:board, default: default, name: board_name) }
10
- after { database_cleanup }
11
-
12
- describe '.all' do
13
- subject { described_class.all }
14
-
15
- it 'retrieves all locally stored lists' do
16
- subject.size.must_equal 1
17
- end
18
- end
19
-
20
- describe '.default' do
21
- subject { described_class.default }
22
-
23
- context 'when default is set' do
24
- it 'returns the default' do
25
- subject.must_equal @board
26
- end
27
- end
28
-
29
- context 'when default is not set' do
30
- let(:default) { false }
31
-
32
- it { subject.must_equal(nil) }
33
- end
34
- end
35
-
36
- describe '.retrieve' do
37
- context 'without an ID' do
38
- subject { described_class.retrieve }
39
-
40
- context 'when default is set' do
41
- it 'returns the default' do
42
- subject.must_equal @board
43
- end
44
- end
45
-
46
- context 'when default is not set' do
47
- let(:default) { false }
48
-
49
- it { subject.must_equal(nil) }
50
- end
51
- end
52
-
53
- context 'with an ID' do
54
- subject { described_class.retrieve(id) }
55
-
56
- context 'local retrieval by database ID' do
57
- let(:id) { @board.id }
58
-
59
- it 'returns the correct board' do
60
- subject.name.must_equal('My Test Board')
61
- end
62
- end
63
-
64
- context 'local retrieval by external ID' do
65
- let(:id) { '526d8e130a14a9d846001d96' }
66
-
67
- it 'returns the correct board' do
68
- subject.name.must_equal('My Test Board')
69
- end
70
- end
71
-
72
- context 'remote retrieval by either ID' do
73
- let(:id) { '526d_remote_board_005259' }
74
- let(:board_name) { 'My Remote Test Board' }
75
-
76
- before { External::Board.stubs(:fetch).returns([@board]) }
77
-
78
- it 'returns the correct board' do
79
- subject.name.must_equal('My Remote Test Board')
80
- end
81
- end
82
-
83
- context 'when the ID cannot be found' do
84
- let(:id) { 'not_found_id' }
85
-
86
- before { External::Board.stubs(:fetch).returns([]) }
87
-
88
- it { subject.must_equal(nil) }
89
- end
90
- end
91
- end
92
- end
93
- end
@@ -1,101 +0,0 @@
1
- require_relative '../../../../test_helper'
2
-
3
- module Troo
4
- describe Retrieval::Card do
5
- let(:described_class) { Retrieval::Card }
6
- let(:default) { true }
7
- let(:card_name) { 'My Test Card' }
8
-
9
- before { @card = Fabricate(:card, default: default, name: card_name) }
10
- after { database_cleanup }
11
-
12
- describe '.all' do
13
- subject { described_class.all }
14
-
15
- it 'retrieves all locally stored cards' do
16
- subject.size.must_equal 1
17
- end
18
- end
19
-
20
- describe '.default' do
21
- subject { described_class.default }
22
-
23
- context 'when default is set' do
24
- it 'returns the default' do
25
- subject.must_equal @card
26
- end
27
- end
28
-
29
- context 'when default is not set' do
30
- let(:default) { false }
31
-
32
- it { subject.must_equal(nil) }
33
- end
34
- end
35
-
36
- describe '.retrieve' do
37
- context 'without an ID' do
38
- subject { described_class.retrieve }
39
-
40
- context 'when default is set' do
41
- it 'returns the default' do
42
- subject.must_equal @card
43
- end
44
- end
45
-
46
- context 'when default is not set' do
47
- let(:default) { false }
48
-
49
- it { subject.must_equal(nil) }
50
- end
51
- end
52
-
53
- context 'with an ID' do
54
- subject { described_class.retrieve(id) }
55
-
56
- context 'local retrieval by short_id' do
57
- let(:id) { 67 }
58
-
59
- it 'returns the correct card' do
60
- subject.name.must_equal('My Test Card')
61
- end
62
- end
63
-
64
- context 'local retrieval by database ID' do
65
- let(:id) { @card.id }
66
-
67
- it 'returns the correct card' do
68
- subject.name.must_equal('My Test Card')
69
- end
70
- end
71
-
72
- context 'local retrieval by external ID' do
73
- let(:id) { '526d8f19ddb279532e005259' }
74
-
75
- it 'returns the correct card' do
76
- subject.name.must_equal('My Test Card')
77
- end
78
- end
79
-
80
- context 'remote retrieval by either ID' do
81
- let(:id) { '526d_remote_card_005259' }
82
- let(:card_name) { 'My Remote Test Card' }
83
-
84
- before { External::Card.stubs(:fetch).returns([@card]) }
85
-
86
- it 'returns the correct card' do
87
- subject.name.must_equal('My Remote Test Card')
88
- end
89
- end
90
-
91
- context 'when the ID cannot be found' do
92
- let(:id) { 'not_found_id' }
93
-
94
- before { External::Card.stubs(:fetch).returns([]) }
95
-
96
- it { subject.must_equal(nil) }
97
- end
98
- end
99
- end
100
- end
101
- end
@@ -1,46 +0,0 @@
1
- require_relative '../../../../test_helper'
2
-
3
- module Troo
4
- describe Retrieval::Comment do
5
- let(:described_class) { Retrieval::Comment }
6
-
7
- before { @comment = Fabricate(:comment) }
8
- after { database_cleanup }
9
-
10
- describe '.all' do
11
- subject { described_class.all }
12
-
13
- it 'retrieves all locally stored comments' do
14
- subject.size.must_equal 1
15
- end
16
- end
17
-
18
- describe '.retrieve' do
19
- subject { described_class.retrieve(id) }
20
-
21
- context 'local retrieval by database ID' do
22
- let(:id) { @comment.id }
23
-
24
- it 'returns the correct comment' do
25
- subject.text.must_equal('My Test Comment')
26
- end
27
- end
28
-
29
- context 'local retrieval by external ID' do
30
- let(:id) { '51f9277b2822b8654f0023af' }
31
-
32
- it 'returns the correct comment' do
33
- subject.text.must_equal('My Test Comment')
34
- end
35
- end
36
-
37
- context 'when the ID cannot be found' do
38
- let(:id) { 'not_found_id' }
39
-
40
- before { External::Comment.stubs(:fetch).returns([]) }
41
-
42
- it { subject.must_equal(nil) }
43
- end
44
- end
45
- end
46
- end