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,157 @@
1
+ require_relative '../../../test_helper'
2
+
3
+ module Troo
4
+ module Decorators
5
+ describe Resource do
6
+ let(:described_class) { Resource }
7
+ let(:klass) do
8
+ stub(id: 67,
9
+ name: resource_name,
10
+ description: description,
11
+ member: member,
12
+ text: 'Some text...',
13
+ date: 'Wed, Dec 17 at 22:01',
14
+ type: :resource_type)
15
+ end
16
+ let(:options) { {} }
17
+ let(:described_instance) { described_class.new(klass, options) }
18
+ let(:resource_name) { 'My Resource' }
19
+ let(:description) { 'Some description' }
20
+ let(:member) { stub(username: 'gavinlaking1') }
21
+ let(:default) { true }
22
+
23
+ before do
24
+ klass.stubs(:default?).returns(default)
25
+ klass.stubs(:type).returns(:resource_type)
26
+ end
27
+
28
+ describe '#title' do
29
+ subject { described_instance.title }
30
+
31
+ it { subject.must_match(/My Resource/) }
32
+ end
33
+
34
+ describe '#description' do
35
+ subject { described_instance.description }
36
+
37
+ context 'when a description exists' do
38
+ it 'returns the description' do
39
+ subject.must_equal(klass.description)
40
+ end
41
+ end
42
+
43
+ context 'when a description does not exist' do
44
+ before { klass.stubs(:description) }
45
+
46
+ it 'returns N/A' do
47
+ subject.must_equal('N/A')
48
+ end
49
+ end
50
+ end
51
+
52
+ describe '#default' do
53
+ subject { described_instance.default }
54
+
55
+ context 'when the resource is default' do
56
+ it 'returns a marker' do
57
+ subject.must_equal('*')
58
+ end
59
+ end
60
+
61
+ context 'when the resource is not the default' do
62
+ let(:default) { false }
63
+
64
+ it { subject.must_equal nil }
65
+ end
66
+ end
67
+
68
+ describe '#name' do
69
+ subject { described_instance.name }
70
+
71
+ context 'when the resource has a name' do
72
+ let(:resource_name) { 'My Resource' }
73
+
74
+ it { subject.must_equal('My Resource') }
75
+ end
76
+
77
+ context 'when the resource has a end of line character' do
78
+ let(:resource_name) { "My Resource\n" }
79
+
80
+ it { subject.must_equal('My Resource') }
81
+ end
82
+
83
+ context 'when the resource does not have a name' do
84
+ let(:resource_name) {}
85
+
86
+ it { subject.must_equal('N/A') }
87
+ end
88
+ end
89
+
90
+ describe '#board' do
91
+ subject { described_instance.board }
92
+
93
+ it 'returns the board details' do
94
+ skip
95
+ end
96
+ end
97
+
98
+ describe '#list' do
99
+ subject { described_instance.list }
100
+
101
+ it 'returns the list details' do
102
+ skip
103
+ end
104
+ end
105
+
106
+ describe '#lists' do
107
+ subject { described_instance.lists }
108
+
109
+ it 'returns the lists details' do
110
+ skip
111
+ end
112
+ end
113
+
114
+ describe '#cards' do
115
+ subject { described_instance.cards }
116
+
117
+ it 'returns the cards details' do
118
+ skip
119
+ end
120
+ end
121
+
122
+ describe '#as_view' do
123
+ before { Template.stubs(:parse).returns('some output') }
124
+
125
+ subject { described_instance.as_view }
126
+
127
+ it 'returns the rendered content' do
128
+ subject.must_match(/some output/)
129
+ end
130
+ end
131
+
132
+ describe '#username' do
133
+ subject { described_instance.username }
134
+
135
+ it 'returns the comment member username' do
136
+ subject.must_equal('@' + klass.member.username)
137
+ end
138
+ end
139
+
140
+ describe '#text' do
141
+ subject { described_instance.text }
142
+
143
+ it 'returns the comment text' do
144
+ subject.must_equal(klass.text)
145
+ end
146
+ end
147
+
148
+ describe '#date' do
149
+ subject { described_instance.date }
150
+
151
+ it 'returns the comment date' do
152
+ subject.must_equal(klass.date)
153
+ end
154
+ end
155
+ end
156
+ end
157
+ end
@@ -1,27 +1,18 @@
1
1
  require_relative '../../../test_helper'
2
2
 
3
- class DecoratorHelpersDummy
4
- include Troo::DecoratorHelpers
3
+ module Troo
4
+ module Decorators
5
+ class DecoratorHelpersDummy < Resource
6
+ include Troo::DecoratorHelpers
7
+ end
8
+ end
5
9
  end
6
10
 
7
11
  module Troo
8
12
  describe DecoratorHelpers do
9
- let(:described_class) { DecoratorHelpersDummy }
10
- let(:described_instance) { described_class.new }
11
-
12
- describe '#title' do
13
- before do
14
- described_instance.stubs(:default).returns('*')
15
- described_instance.stubs(:id).returns(67)
16
- described_instance.stubs(:name).returns('My Test Dummy')
17
- described_instance.stubs(:options).returns({})
18
- end
19
-
20
- subject { described_instance.title }
21
-
22
- it 'returns a formatted string representing the card title' do
23
- subject.must_match(/\* \(67\) My Test Dummy/)
24
- end
25
- end
13
+ let(:described_class) { Troo::Decorators::DecoratorHelpersDummy }
14
+ let(:described_instance) { described_class.new(klass, options) }
15
+ let(:klass) { stub }
16
+ let(:options) { {} }
26
17
  end
27
18
  end
@@ -71,19 +71,33 @@ module Troo
71
71
  describe '.default' do
72
72
  subject { described_class.default }
73
73
 
74
- context 'when there is no default model' do
74
+ context 'when there is a default model' do
75
75
  it 'returns the model' do
76
76
  subject.must_equal(@dumber)
77
77
  end
78
78
  end
79
79
 
80
- context 'when there is a default model' do
80
+ context 'when there is no default model' do
81
81
  before { @dumber.delete }
82
82
 
83
83
  it { subject.must_equal(nil) }
84
84
  end
85
85
  end
86
86
 
87
+ describe '.default?' do
88
+ subject { described_class.default? }
89
+
90
+ context 'when there is a default model' do
91
+ it { subject.must_equal true }
92
+ end
93
+
94
+ context 'when there is no default model' do
95
+ before { @dumber.delete }
96
+
97
+ it { subject.must_equal false }
98
+ end
99
+ end
100
+
87
101
  describe '.count' do
88
102
  subject { described_class.count }
89
103
 
@@ -92,12 +106,8 @@ module Troo
92
106
  end
93
107
  end
94
108
 
95
- describe '#external_attributes' do
96
- subject { @dumb.external_attributes }
97
-
98
- it 'returns the attributes of the model which Trello affects' do
99
- subject.must_equal(name: 'My Dumb Model')
100
- end
109
+ describe '.retrieve' do
110
+ subject { described_class.retrieve(id, options) }
101
111
  end
102
112
  end
103
113
  end
@@ -0,0 +1,68 @@
1
+ require_relative '../../../test_helper'
2
+
3
+ class RemoteModelHelpersDummy
4
+ include Troo::RemoteModelHelpers
5
+
6
+ def initialize(hash)
7
+ @hash = hash
8
+ end
9
+ end
10
+
11
+ module Troo
12
+ describe RemoteModelHelpersDummy do
13
+ let(:described_class) { RemoteModelHelpersDummy }
14
+ let(:resources) { [{}, {}] }
15
+
16
+ describe '.with_collection' do
17
+ subject { described_class.with_collection(resources) }
18
+
19
+ it 'instantiates classes' do
20
+ subject.first.must_be_instance_of(RemoteModelHelpersDummy)
21
+ end
22
+
23
+ it 'returns a collection of instantiated classes' do
24
+ subject.size.must_equal(2)
25
+ end
26
+ end
27
+
28
+ describe '.all' do
29
+ subject { described_class.all }
30
+
31
+ it 'returns the resource parameters' do
32
+ subject.must_equal({})
33
+ end
34
+ end
35
+
36
+ describe '.by_board_id' do
37
+ subject { described_class.by_board_id }
38
+
39
+ it 'returns the resource parameters' do
40
+ subject.must_equal({})
41
+ end
42
+ end
43
+
44
+ describe '.by_list_id' do
45
+ subject { described_class.by_list_id }
46
+
47
+ it 'returns the resource parameters' do
48
+ subject.must_equal({})
49
+ end
50
+ end
51
+
52
+ describe '.by_card_id' do
53
+ subject { described_class.by_card_id }
54
+
55
+ it 'returns the resource parameters' do
56
+ subject.must_equal({})
57
+ end
58
+ end
59
+
60
+ describe '.by_member_id' do
61
+ subject { described_class.by_member_id }
62
+
63
+ it 'returns the resource parameters' do
64
+ subject.must_equal({})
65
+ end
66
+ end
67
+ end
68
+ end
@@ -14,16 +14,6 @@ module Troo
14
14
  describe Behaviours::SetDefault do
15
15
  let(:described_class) { Behaviours::SetDefault }
16
16
 
17
- describe '.initialize' do
18
- let(:entity) { :some_model }
19
-
20
- subject { described_class.new(entity) }
21
-
22
- it 'assigns the entity to an instance variable' do
23
- subject.instance_variable_get('@entity').must_equal(entity)
24
- end
25
- end
26
-
27
17
  describe '#set_default!' do
28
18
  before do
29
19
  @board_1 = Fabricate(:board, default: true)
@@ -24,8 +24,8 @@ module Troo
24
24
  subject.closed.must_equal false
25
25
  end
26
26
 
27
- it 'should have an external_board_id attribute' do
28
- subject.external_board_id.must_equal '526d8e130a14a9d846001d96'
27
+ it 'should have an external_id attribute' do
28
+ subject.external_id.must_equal '526d8e130a14a9d846001d96'
29
29
  end
30
30
  end
31
31
 
@@ -84,8 +84,8 @@ module Troo
84
84
  subject.external_list_id.must_equal '526d8e130a14a9d846001d97'
85
85
  end
86
86
 
87
- it 'should have an external_card_id attribute' do
88
- subject.external_card_id.must_equal '526d8f19ddb279532e005259'
87
+ it 'should have an external_id attribute' do
88
+ subject.external_id.must_equal '526d8f19ddb279532e005259'
89
89
  end
90
90
  end
91
91
 
@@ -24,13 +24,17 @@ module Troo
24
24
  subject.external_card_id.must_equal '526d8f19ddb279532e005259'
25
25
  end
26
26
 
27
- it 'should have an external_comment_id attribute' do
28
- subject.external_comment_id.must_equal '51f9277b2822b8654f0023af'
27
+ it 'should have an external_id attribute' do
28
+ subject.external_id.must_equal '51f9277b2822b8654f0023af'
29
29
  end
30
30
 
31
31
  it 'should have a external_member_id attribute' do
32
32
  subject.external_member_id.must_equal '5195fdb5a8c01a2318004f5d'
33
33
  end
34
+
35
+ it 'should always respond false to default?' do
36
+ subject.default?.must_equal false
37
+ end
34
38
  end
35
39
 
36
40
  context 'associations' do
@@ -28,8 +28,8 @@ module Troo
28
28
  subject.external_board_id.must_equal '526d8e130a14a9d846001d96'
29
29
  end
30
30
 
31
- it 'should have an external_list_id attribute' do
32
- subject.external_list_id.must_equal '526d8e130a14a9d846001d97'
31
+ it 'should have an external_id attribute' do
32
+ subject.external_id.must_equal '526d8e130a14a9d846001d97'
33
33
  end
34
34
  end
35
35
 
@@ -36,8 +36,12 @@ module Troo
36
36
  subject.url.must_equal 'http://www.gavinlaking.name/'
37
37
  end
38
38
 
39
- it 'should have an external_member_id attribute' do
40
- subject.external_member_id.must_equal '5195fdb5a8c01a2318004f5d'
39
+ it 'should have an external_id attribute' do
40
+ subject.external_id.must_equal '5195fdb5a8c01a2318004f5d'
41
+ end
42
+
43
+ it 'should always respond false to default?' do
44
+ subject.default?.must_equal false
41
45
  end
42
46
  end
43
47
  end
@@ -0,0 +1,31 @@
1
+ require_relative '../../../test_helper'
2
+
3
+ module Troo
4
+ module Persistence
5
+ describe Local do
6
+ let(:described_class) { Local }
7
+ let(:resources) { [] }
8
+ let(:resource) { stub }
9
+
10
+ before { resource.stubs(:preprocess).returns(resource) }
11
+
12
+ describe '.with_collection' do
13
+ subject { described_class.with_collection(resources) }
14
+
15
+ context 'when the collection is empty' do
16
+ it 'returns the empty collection' do
17
+ subject.must_equal []
18
+ end
19
+ end
20
+
21
+ context 'when the collection is not empty' do
22
+ let(:resources) { [resource] }
23
+
24
+ it 'returns the last persisted resource' do
25
+ subject.must_equal [resource]
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,31 @@
1
+ require_relative '../../../test_helper'
2
+
3
+ module Troo
4
+ describe Esc do
5
+ let(:described_class) { Esc }
6
+ end
7
+ end
8
+
9
+ module Troo
10
+ describe Align do
11
+ let(:described_class) { Align }
12
+ end
13
+ end
14
+
15
+ module Troo
16
+ describe Format do
17
+ let(:described_class) { Format }
18
+ end
19
+ end
20
+
21
+ module Troo
22
+ describe Formatter do
23
+ let(:described_class) { Formatter }
24
+ end
25
+ end
26
+
27
+ module Troo
28
+ describe Output do
29
+ let(:described_class) { Output }
30
+ end
31
+ end