troo 0.0.7 → 0.0.8

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 (271) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.rubocop.yml +2 -0
  4. data/Guardfile +3 -1
  5. data/Rakefile +7 -0
  6. data/bin/troo +3 -8
  7. data/config/.gitkeep +0 -0
  8. data/config/cucumber.yml +8 -0
  9. data/features/add/board.feature +26 -0
  10. data/features/add/card.feature +34 -0
  11. data/features/add/comment.feature +21 -0
  12. data/features/add/list.feature +24 -0
  13. data/features/cleanup.feature +13 -0
  14. data/features/default/board.feature +21 -0
  15. data/features/default/card.feature +21 -0
  16. data/features/default/list.feature +21 -0
  17. data/features/refresh/all.feature +7 -0
  18. data/features/refresh/board.feature +26 -0
  19. data/features/refresh/card.feature +27 -0
  20. data/features/refresh/list.feature +27 -0
  21. data/features/show/board.feature +32 -0
  22. data/features/show/card.feature +62 -0
  23. data/features/show/comment.feature +39 -0
  24. data/features/show/list.feature +37 -0
  25. data/features/status.feature +46 -1
  26. data/features/step_definitions/fabrication_steps.rb +34 -0
  27. data/features/step_definitions/troo_steps.rb +16 -0
  28. data/features/support/env.rb +22 -24
  29. data/features/troo.feature +31 -1
  30. data/lib/troo/actions/create_board.rb +10 -7
  31. data/lib/troo/actions/create_card.rb +5 -4
  32. data/lib/troo/actions/create_comment.rb +15 -13
  33. data/lib/troo/actions/create_list.rb +5 -4
  34. data/lib/troo/actions/move_card.rb +4 -3
  35. data/lib/troo/{external/board_adaptor.rb → adaptors/board.rb} +3 -14
  36. data/lib/troo/{external/card_adaptor.rb → adaptors/card.rb} +4 -15
  37. data/lib/troo/{external/comment_adaptor.rb → adaptors/comment.rb} +6 -17
  38. data/lib/troo/{external/list_adaptor.rb → adaptors/list.rb} +3 -14
  39. data/lib/troo/{external/member_adaptor.rb → adaptors/member.rb} +3 -14
  40. data/lib/troo/adaptors/resource.rb +17 -0
  41. data/lib/troo/cli/add.rb +53 -0
  42. data/lib/troo/cli/default.rb +25 -0
  43. data/lib/troo/cli/main.rb +46 -0
  44. data/lib/troo/cli/refresh.rb +31 -0
  45. data/lib/troo/cli/show.rb +41 -0
  46. data/lib/troo/cli/thor_fixes.rb +13 -0
  47. data/lib/troo/commands/add/board.rb +26 -0
  48. data/lib/troo/commands/add/card.rb +33 -0
  49. data/lib/troo/commands/add/comment.rb +33 -0
  50. data/lib/troo/commands/add/list.rb +33 -0
  51. data/lib/troo/commands/add/resource.rb +21 -0
  52. data/lib/troo/commands/commands.rb +28 -0
  53. data/lib/troo/commands/default/board.rb +25 -0
  54. data/lib/troo/commands/default/card.rb +25 -0
  55. data/lib/troo/commands/default/list.rb +25 -0
  56. data/lib/troo/commands/default/resource.rb +26 -0
  57. data/lib/troo/commands/refresh/all.rb +41 -0
  58. data/lib/troo/commands/refresh/board.rb +28 -0
  59. data/lib/troo/commands/refresh/card.rb +29 -0
  60. data/lib/troo/commands/refresh/list.rb +29 -0
  61. data/lib/troo/commands/refresh/resource.rb +42 -0
  62. data/lib/troo/commands/show/board.rb +13 -0
  63. data/lib/troo/commands/show/boards.rb +35 -0
  64. data/lib/troo/commands/show/card.rb +13 -0
  65. data/lib/troo/commands/show/comments.rb +21 -0
  66. data/lib/troo/commands/show/list.rb +13 -0
  67. data/lib/troo/commands/show/resource.rb +41 -0
  68. data/lib/troo/commands/status/board.rb +30 -0
  69. data/lib/troo/commands/status/card.rb +30 -0
  70. data/lib/troo/commands/status/list.rb +30 -0
  71. data/lib/troo/commands/status/resource.rb +34 -0
  72. data/lib/troo/decorators/board.rb +66 -0
  73. data/lib/troo/decorators/card.rb +105 -0
  74. data/lib/troo/decorators/comment.rb +36 -0
  75. data/lib/troo/decorators/list.rb +60 -0
  76. data/lib/troo/decorators/member.rb +28 -0
  77. data/lib/troo/external/board.rb +14 -26
  78. data/lib/troo/external/card.rb +2 -19
  79. data/lib/troo/external/comment.rb +5 -23
  80. data/lib/troo/external/list.rb +2 -20
  81. data/lib/troo/external/member.rb +2 -20
  82. data/lib/troo/external/resource.rb +21 -6
  83. data/lib/troo/helpers/command_helpers.rb +37 -0
  84. data/lib/troo/{display → helpers}/decorator_helpers.rb +23 -17
  85. data/lib/troo/{models → helpers}/model_helpers.rb +1 -1
  86. data/lib/troo/models/behaviours/set_default.rb +49 -0
  87. data/lib/troo/models/board.rb +10 -7
  88. data/lib/troo/models/card.rb +33 -15
  89. data/lib/troo/models/comment.rb +8 -5
  90. data/lib/troo/models/list.rb +10 -6
  91. data/lib/troo/models/member.rb +7 -4
  92. data/lib/troo/models/persistence/board.rb +19 -0
  93. data/lib/troo/models/persistence/card.rb +19 -0
  94. data/lib/troo/models/persistence/comment.rb +19 -0
  95. data/lib/troo/models/persistence/list.rb +19 -0
  96. data/lib/troo/models/persistence/member.rb +19 -0
  97. data/lib/troo/models/persistence/resource.rb +50 -0
  98. data/lib/troo/models/refresh.rb +1 -1
  99. data/lib/troo/models/remote/comment.rb +21 -0
  100. data/lib/troo/models/remote/resource.rb +25 -0
  101. data/lib/troo/models/retrieval/board.rb +29 -0
  102. data/lib/troo/models/retrieval/card.rb +33 -0
  103. data/lib/troo/models/retrieval/comment.rb +25 -0
  104. data/lib/troo/models/retrieval/list.rb +29 -0
  105. data/lib/troo/models/retrieval/member.rb +25 -0
  106. data/lib/troo/models/retrieval/resource.rb +36 -0
  107. data/lib/troo/presentation/sentence.rb +57 -0
  108. data/lib/troo/presentation/template.rb +4 -3
  109. data/lib/troo/presenters/board.rb +81 -0
  110. data/lib/troo/presenters/card.rb +30 -0
  111. data/lib/troo/presenters/comment.rb +38 -0
  112. data/lib/troo/presenters/list.rb +44 -0
  113. data/lib/troo/presenters/member.rb +32 -0
  114. data/lib/troo/troo.rb +79 -65
  115. data/lib/troo/version.rb +1 -2
  116. data/lib/troo.rb +36 -8
  117. data/test/lib/troo/actions/create_board_test.rb +34 -15
  118. data/test/lib/troo/actions/create_card_test.rb +35 -18
  119. data/test/lib/troo/actions/create_comment_test.rb +38 -16
  120. data/test/lib/troo/actions/create_list_test.rb +31 -15
  121. data/test/lib/troo/actions/move_card_test.rb +23 -15
  122. data/test/lib/troo/adaptors/board_test.rb +38 -0
  123. data/test/lib/troo/adaptors/card_test.rb +49 -0
  124. data/test/lib/troo/adaptors/comment_test.rb +41 -0
  125. data/test/lib/troo/adaptors/list_test.rb +38 -0
  126. data/test/lib/troo/adaptors/member_test.rb +44 -0
  127. data/test/lib/troo/commands/add/board_test.rb +43 -0
  128. data/test/lib/troo/commands/add/card_test.rb +44 -0
  129. data/test/lib/troo/commands/add/comment_test.rb +44 -0
  130. data/test/lib/troo/commands/add/list_test.rb +44 -0
  131. data/test/lib/troo/commands/add/resource_test.rb +25 -0
  132. data/test/lib/troo/commands/default/board_test.rb +37 -0
  133. data/test/lib/troo/commands/default/card_test.rb +37 -0
  134. data/test/lib/troo/commands/default/list_test.rb +37 -0
  135. data/test/lib/troo/commands/default/resource_test.rb +20 -0
  136. data/test/lib/troo/commands/refresh/all_test.rb +39 -0
  137. data/test/lib/troo/commands/refresh/board_test.rb +62 -0
  138. data/test/lib/troo/commands/refresh/card_test.rb +62 -0
  139. data/test/lib/troo/commands/refresh/list_test.rb +62 -0
  140. data/test/lib/troo/commands/refresh/resource_test.rb +20 -0
  141. data/test/lib/troo/commands/show/board_test.rb +65 -0
  142. data/test/lib/troo/commands/show/boards_test.rb +36 -0
  143. data/test/lib/troo/commands/show/card_test.rb +64 -0
  144. data/test/lib/troo/commands/show/comments_test.rb +64 -0
  145. data/test/lib/troo/commands/show/list_test.rb +64 -0
  146. data/test/lib/troo/commands/show/resource_test.rb +25 -0
  147. data/test/lib/troo/commands/status/board_test.rb +43 -0
  148. data/test/lib/troo/commands/status/card_test.rb +43 -0
  149. data/test/lib/troo/commands/status/list_test.rb +43 -0
  150. data/test/lib/troo/commands/status/resource_test.rb +19 -0
  151. data/test/lib/troo/decorators/board_test.rb +129 -0
  152. data/test/lib/troo/decorators/card_test.rb +237 -0
  153. data/test/lib/troo/decorators/comment_test.rb +74 -0
  154. data/test/lib/troo/decorators/list_test.rb +102 -0
  155. data/test/lib/troo/decorators/member_test.rb +50 -0
  156. data/test/lib/troo/external/board_test.rb +74 -41
  157. data/test/lib/troo/external/card_test.rb +49 -37
  158. data/test/lib/troo/external/comment_test.rb +43 -33
  159. data/test/lib/troo/external/list_test.rb +37 -30
  160. data/test/lib/troo/external/member_test.rb +37 -30
  161. data/test/lib/troo/external/resource_test.rb +18 -1
  162. data/test/lib/troo/helpers/command_helpers_test.rb +82 -0
  163. data/test/lib/troo/{display → helpers}/decorator_helpers_test.rb +6 -6
  164. data/test/lib/troo/helpers/model_helpers_test.rb +103 -0
  165. data/test/lib/troo/models/behaviours/set_default_test.rb +54 -0
  166. data/test/lib/troo/models/board_test.rb +13 -14
  167. data/test/lib/troo/models/card_test.rb +64 -33
  168. data/test/lib/troo/models/comment_test.rb +18 -19
  169. data/test/lib/troo/models/list_test.rb +15 -15
  170. data/test/lib/troo/models/member_test.rb +18 -18
  171. data/test/lib/troo/models/persistence/board_test.rb +62 -0
  172. data/test/lib/troo/models/persistence/card_test.rb +61 -0
  173. data/test/lib/troo/models/persistence/comment_test.rb +69 -0
  174. data/test/lib/troo/models/persistence/list_test.rb +60 -0
  175. data/test/lib/troo/models/persistence/member_test.rb +60 -0
  176. data/test/lib/troo/models/refresh_test.rb +12 -11
  177. data/test/lib/troo/models/remote/comment_test.rb +56 -0
  178. data/test/lib/troo/models/remote/resource_test.rb +26 -0
  179. data/test/lib/troo/models/retrieval/board_test.rb +93 -0
  180. data/test/lib/troo/models/retrieval/card_test.rb +101 -0
  181. data/test/lib/troo/models/retrieval/comment_test.rb +46 -0
  182. data/test/lib/troo/models/retrieval/list_test.rb +93 -0
  183. data/test/lib/troo/models/retrieval/member_test.rb +58 -0
  184. data/test/lib/troo/presentation/sentence_test.rb +57 -0
  185. data/test/lib/troo/presentation/template_test.rb +17 -16
  186. data/test/lib/troo/presenters/board_test.rb +79 -0
  187. data/test/lib/troo/presenters/card_test.rb +41 -0
  188. data/test/lib/troo/presenters/comment_test.rb +49 -0
  189. data/test/lib/troo/presenters/list_test.rb +50 -0
  190. data/test/lib/troo/presenters/member_test.rb +40 -0
  191. data/test/support/fabrication.rb +31 -32
  192. data/test/support/vcr_setup.rb +7 -9
  193. data/test/system_test.sh +55 -0
  194. data/test/test_helper.rb +10 -10
  195. data/troo.gemspec +1 -0
  196. metadata +232 -134
  197. data/features/add_board.feature +0 -1
  198. data/features/add_card.feature +0 -1
  199. data/features/add_comment.feature +0 -1
  200. data/features/add_list.feature +0 -1
  201. data/features/move_card_to_list.feature +0 -1
  202. data/features/refresh.feature +0 -1
  203. data/features/set_default.feature +0 -7
  204. data/features/show_board.feature +0 -1
  205. data/features/show_boards.feature +0 -1
  206. data/features/show_card.feature +0 -1
  207. data/features/show_comments.feature +0 -1
  208. data/features/show_list.feature +0 -1
  209. data/features/version.feature +0 -8
  210. data/lib/troo/actions/refresh_all.rb +0 -79
  211. data/lib/troo/actions/set_default.rb +0 -46
  212. data/lib/troo/cli/add_cli.rb +0 -83
  213. data/lib/troo/cli/cli_helpers.rb +0 -34
  214. data/lib/troo/cli/default_cli.rb +0 -32
  215. data/lib/troo/cli/main_cli.rb +0 -132
  216. data/lib/troo/cli/show_cli.rb +0 -64
  217. data/lib/troo/display/board_decorator.rb +0 -62
  218. data/lib/troo/display/board_presenter.rb +0 -71
  219. data/lib/troo/display/card_decorator.rb +0 -100
  220. data/lib/troo/display/card_presenter.rb +0 -27
  221. data/lib/troo/display/comment_decorator.rb +0 -33
  222. data/lib/troo/display/comment_presenter.rb +0 -31
  223. data/lib/troo/display/list_decorator.rb +0 -57
  224. data/lib/troo/display/list_presenter.rb +0 -41
  225. data/lib/troo/display/member_decorator.rb +0 -25
  226. data/lib/troo/display/member_presenter.rb +0 -59
  227. data/lib/troo/models/board_persistence.rb +0 -25
  228. data/lib/troo/models/board_retrieval.rb +0 -45
  229. data/lib/troo/models/card_persistence.rb +0 -25
  230. data/lib/troo/models/card_retrieval.rb +0 -49
  231. data/lib/troo/models/comment_persistence.rb +0 -25
  232. data/lib/troo/models/comment_retrieval.rb +0 -32
  233. data/lib/troo/models/list_persistence.rb +0 -25
  234. data/lib/troo/models/list_retrieval.rb +0 -45
  235. data/lib/troo/models/member_persistence.rb +0 -25
  236. data/lib/troo/models/member_retrieval.rb +0 -36
  237. data/lib/troo/models/persistence.rb +0 -39
  238. data/test/lib/troo/actions/refresh_all_test.rb +0 -68
  239. data/test/lib/troo/actions/set_default_test.rb +0 -44
  240. data/test/lib/troo/cli/add_cli_test.rb +0 -216
  241. data/test/lib/troo/cli/cli_helpers_test.rb +0 -24
  242. data/test/lib/troo/cli/default_cli_test.rb +0 -85
  243. data/test/lib/troo/cli/main_cli_test.rb +0 -234
  244. data/test/lib/troo/cli/show_cli_test.rb +0 -251
  245. data/test/lib/troo/display/board_decorator_test.rb +0 -126
  246. data/test/lib/troo/display/board_presenter_test.rb +0 -77
  247. data/test/lib/troo/display/card_decorator_test.rb +0 -213
  248. data/test/lib/troo/display/card_presenter_test.rb +0 -38
  249. data/test/lib/troo/display/comment_decorator_test.rb +0 -70
  250. data/test/lib/troo/display/comment_presenter_test.rb +0 -47
  251. data/test/lib/troo/display/list_decorator_test.rb +0 -98
  252. data/test/lib/troo/display/list_presenter_test.rb +0 -48
  253. data/test/lib/troo/display/member_decorator_test.rb +0 -47
  254. data/test/lib/troo/display/member_presenter_test.rb +0 -70
  255. data/test/lib/troo/external/board_adaptor_test.rb +0 -36
  256. data/test/lib/troo/external/card_adaptor_test.rb +0 -50
  257. data/test/lib/troo/external/comment_adaptor_test.rb +0 -41
  258. data/test/lib/troo/external/list_adaptor_test.rb +0 -38
  259. data/test/lib/troo/external/member_adaptor_test.rb +0 -44
  260. data/test/lib/troo/models/board_persistence_test.rb +0 -61
  261. data/test/lib/troo/models/board_retrieval_test.rb +0 -93
  262. data/test/lib/troo/models/card_persistence_test.rb +0 -60
  263. data/test/lib/troo/models/card_retrieval_test.rb +0 -101
  264. data/test/lib/troo/models/comment_persistence_test.rb +0 -65
  265. data/test/lib/troo/models/comment_retrieval_test.rb +0 -46
  266. data/test/lib/troo/models/list_persistence_test.rb +0 -60
  267. data/test/lib/troo/models/list_retrieval_test.rb +0 -93
  268. data/test/lib/troo/models/member_persistence_test.rb +0 -59
  269. data/test/lib/troo/models/member_retrieval_test.rb +0 -58
  270. data/test/lib/troo/models/model_helpers_test.rb +0 -103
  271. data/test/lib/troo/models/persistence_test.rb +0 -6
@@ -0,0 +1,44 @@
1
+ require_relative '../../../../test_helper'
2
+
3
+ module Troo
4
+ module Commands
5
+ module Add
6
+ describe List do
7
+ let(:described_class) { List }
8
+ let(:value) { 'Add List Test' }
9
+ let(:id) {}
10
+
11
+ before do
12
+ Retrieval::Board.stubs(:retrieve)
13
+ CreateList.stubs(:for).returns(false)
14
+ end
15
+
16
+ describe '#add' do
17
+ subject { described_class.new(value, id).add }
18
+
19
+ context 'when the parent resource exists' do
20
+ context 'and the list was created' do
21
+ before { CreateList.stubs(:for).returns(true) }
22
+
23
+ it 'returns a polite message' do
24
+ subject.must_match(/\'Add List Test\' created/)
25
+ end
26
+ end
27
+
28
+ context 'and the list was not created' do
29
+ it 'returns a polite message' do
30
+ subject.must_match(/could not/)
31
+ end
32
+ end
33
+ end
34
+
35
+ context 'when the parent resource does not exist' do
36
+ it 'returns a polite message' do
37
+ subject.must_match(/could not/)
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,25 @@
1
+ require_relative '../../../../test_helper'
2
+
3
+ module Troo
4
+ module Commands
5
+ module Add
6
+ describe Resource do
7
+ let(:described_class) { Resource }
8
+ let(:value) {}
9
+ let(:id) {}
10
+
11
+ describe '#initialize' do
12
+ subject { described_class.new(value, id) }
13
+
14
+ it 'assigns the value to an instance variable' do
15
+ subject.instance_variable_get('@value').must_equal(value)
16
+ end
17
+
18
+ it 'assigns the id to an instance variable' do
19
+ subject.instance_variable_get('@id').must_equal(id)
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,37 @@
1
+ require_relative '../../../../test_helper'
2
+
3
+ module Troo
4
+ module Commands
5
+ module Default
6
+ describe Board do
7
+ let(:described_class) { Board }
8
+ let(:id) { '1' }
9
+
10
+ before do
11
+ @board = Fabricate.build(:board)
12
+ Retrieval::Board.stubs(:retrieve).returns(resource)
13
+ end
14
+
15
+ describe '.dispatch' do
16
+ subject { described_class.dispatch(id) }
17
+
18
+ context 'when the resource exists' do
19
+ let(:resource) { @board }
20
+
21
+ it 'sets the default and returns a polite message' do
22
+ subject.must_match(/set as default/)
23
+ end
24
+ end
25
+
26
+ context 'when the resource does not exist' do
27
+ let(:resource) {}
28
+
29
+ it 'returns a polite message' do
30
+ subject.must_match(/cannot be found/)
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,37 @@
1
+ require_relative '../../../../test_helper'
2
+
3
+ module Troo
4
+ module Commands
5
+ module Default
6
+ describe Card do
7
+ let(:described_class) { Card }
8
+ let(:id) { '1' }
9
+
10
+ before do
11
+ @card = Fabricate.build(:card)
12
+ Retrieval::Card.stubs(:retrieve).returns(resource)
13
+ end
14
+
15
+ describe '.dispatch' do
16
+ subject { described_class.dispatch(id) }
17
+
18
+ context 'when the resource exists' do
19
+ let(:resource) { @card }
20
+
21
+ it 'sets the default and returns a polite message' do
22
+ subject.must_match(/set as default/)
23
+ end
24
+ end
25
+
26
+ context 'when the resource does not exist' do
27
+ let(:resource) {}
28
+
29
+ it 'returns a polite message' do
30
+ subject.must_match(/cannot be found/)
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,37 @@
1
+ require_relative '../../../../test_helper'
2
+
3
+ module Troo
4
+ module Commands
5
+ module Default
6
+ describe List do
7
+ let(:described_class) { List }
8
+ let(:id) { '1' }
9
+
10
+ before do
11
+ @list = Fabricate.build(:list)
12
+ Retrieval::List.stubs(:retrieve).returns(resource)
13
+ end
14
+
15
+ describe '.dispatch' do
16
+ subject { described_class.dispatch(id) }
17
+
18
+ context 'when the resource exists' do
19
+ let(:resource) { @list }
20
+
21
+ it 'sets the default and returns a polite message' do
22
+ subject.must_match(/set as default/)
23
+ end
24
+ end
25
+
26
+ context 'when the resource does not exist' do
27
+ let(:resource) {}
28
+
29
+ it 'returns a polite message' do
30
+ subject.must_match(/cannot be found/)
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,20 @@
1
+ require_relative '../../../../test_helper'
2
+
3
+ module Troo
4
+ module Commands
5
+ module Default
6
+ describe Resource do
7
+ let(:described_class) { Resource }
8
+ let(:id) {}
9
+
10
+ describe '#initialize' do
11
+ subject { described_class.new(id) }
12
+
13
+ it 'assigns the id to an instance variable' do
14
+ subject.instance_variable_get('@id').must_equal(id)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,39 @@
1
+ require_relative '../../../../test_helper'
2
+
3
+ module Troo
4
+ module Commands
5
+ module Refresh
6
+ describe All do
7
+ let(:described_class) { All }
8
+
9
+ before do
10
+ @board = Fabricate.build(:board)
11
+ @list = Fabricate.build(:list)
12
+ @card = Fabricate.build(:card)
13
+
14
+ External::Board.stubs(:fetch).returns([@board])
15
+ External::List.stubs(:fetch).returns([@list])
16
+ External::Card.stubs(:fetch).returns([@card])
17
+ External::Comment.stubs(:fetch).returns([])
18
+ External::Member.stubs(:fetch).returns([])
19
+ end
20
+
21
+ describe '.dispatch' do
22
+ subject { described_class.dispatch }
23
+
24
+ context 'when all the resources are refreshed' do
25
+ it 'returns a polite message' do
26
+ subject.must_match(/All local data refreshed/)
27
+ end
28
+ end
29
+
30
+ context 'when all the resources are not refreshed' do
31
+ it 'returns a polite message' do
32
+ skip('Not implemented yet.')
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,62 @@
1
+ require_relative '../../../../test_helper'
2
+
3
+ module Troo
4
+ module Commands
5
+ module Refresh
6
+ describe Board do
7
+ let(:described_class) { Board }
8
+ let(:id) { '1' }
9
+ let(:resource) {}
10
+ let(:retrieved) {}
11
+
12
+ before do
13
+ @board = Fabricate.build(:board)
14
+ Retrieval::Board.stubs(:retrieve).returns(resource)
15
+ External::Board.stubs(:fetch).returns(retrieved)
16
+ end
17
+
18
+ after { database_cleanup }
19
+
20
+ describe '.dispatch' do
21
+ subject { described_class.dispatch(id) }
22
+
23
+ context 'when the resource exists' do
24
+ let(:resource) { @board }
25
+ let(:retrieved) { [@board] }
26
+
27
+ context 'and the resource is refreshed' do
28
+ it 'returns a polite message' do
29
+ subject.must_match(/refreshed/)
30
+ end
31
+ end
32
+
33
+ context 'and multiple resources are refreshed' do
34
+ let(:retrieved) { [@board, @board] }
35
+
36
+ it 'returns a polite message' do
37
+ subject.must_match(/Multiple/)
38
+ end
39
+ end
40
+ end
41
+
42
+ context 'when the resource does not exist' do
43
+ let(:resource) {}
44
+
45
+ it 'returns a polite message' do
46
+ subject.must_match(/Board cannot be found/)
47
+ end
48
+ end
49
+
50
+ context 'and the default resource does not exist' do
51
+ let(:id) {}
52
+ let(:resource) {}
53
+
54
+ it 'returns a polite message' do
55
+ subject.must_match(/Default board cannot be found/)
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,62 @@
1
+ require_relative '../../../../test_helper'
2
+
3
+ module Troo
4
+ module Commands
5
+ module Refresh
6
+ describe Card do
7
+ let(:described_class) { Card }
8
+ let(:id) { '1' }
9
+ let(:resource) {}
10
+ let(:retrieved) {}
11
+
12
+ before do
13
+ @card = Fabricate.build(:card)
14
+ Retrieval::Card.stubs(:retrieve).returns(resource)
15
+ External::Card.stubs(:fetch).returns(retrieved)
16
+ end
17
+
18
+ after { database_cleanup }
19
+
20
+ describe '.dispatch' do
21
+ subject { described_class.dispatch(id) }
22
+
23
+ context 'when the resource exists' do
24
+ let(:resource) { @card }
25
+ let(:retrieved) { [@card] }
26
+
27
+ context 'and the resource is refreshed' do
28
+ it 'returns a polite message' do
29
+ subject.must_match(/refreshed/)
30
+ end
31
+ end
32
+
33
+ context 'and multiple resources are refreshed' do
34
+ let(:retrieved) { [@card, @card] }
35
+
36
+ it 'returns a polite message' do
37
+ subject.must_match(/Multiple/)
38
+ end
39
+ end
40
+ end
41
+
42
+ context 'when the resource does not exist' do
43
+ let(:resource) {}
44
+
45
+ it 'returns a polite message' do
46
+ subject.must_match(/Card cannot be found/)
47
+ end
48
+ end
49
+
50
+ context 'and the default resource does not exist' do
51
+ let(:id) {}
52
+ let(:resource) {}
53
+
54
+ it 'returns a polite message' do
55
+ subject.must_match(/Default card cannot be found/)
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,62 @@
1
+ require_relative '../../../../test_helper'
2
+
3
+ module Troo
4
+ module Commands
5
+ module Refresh
6
+ describe List do
7
+ let(:described_class) { List }
8
+ let(:id) { '1' }
9
+ let(:resource) {}
10
+ let(:retrieved) {}
11
+
12
+ before do
13
+ @list = Fabricate.build(:list)
14
+ Retrieval::List.stubs(:retrieve).returns(resource)
15
+ External::List.stubs(:fetch).returns(retrieved)
16
+ end
17
+
18
+ after { database_cleanup }
19
+
20
+ describe '.dispatch' do
21
+ subject { described_class.dispatch(id) }
22
+
23
+ context 'when the resource exists' do
24
+ let(:resource) { @list }
25
+ let(:retrieved) { [@list] }
26
+
27
+ context 'and the resource is refreshed' do
28
+ it 'returns a polite message' do
29
+ subject.must_match(/refreshed/)
30
+ end
31
+ end
32
+
33
+ context 'and multiple resources are refreshed' do
34
+ let(:retrieved) { [@list, @list] }
35
+
36
+ it 'returns a polite message' do
37
+ subject.must_match(/Multiple/)
38
+ end
39
+ end
40
+ end
41
+
42
+ context 'when the resource does not exist' do
43
+ let(:resource) {}
44
+
45
+ it 'returns a polite message' do
46
+ subject.must_match(/List cannot be found/)
47
+ end
48
+ end
49
+
50
+ context 'and the default resource does not exist' do
51
+ let(:id) {}
52
+ let(:resource) {}
53
+
54
+ it 'returns a polite message' do
55
+ subject.must_match(/Default list cannot be found/)
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,20 @@
1
+ require_relative '../../../../test_helper'
2
+
3
+ module Troo
4
+ module Commands
5
+ module Refresh
6
+ describe Resource do
7
+ let(:described_class) { Resource }
8
+ let(:id) {}
9
+
10
+ describe '#initialize' do
11
+ subject { described_class.new(id) }
12
+
13
+ it 'assigns the id to an instance variable' do
14
+ subject.instance_variable_get('@id').must_equal(id)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,65 @@
1
+ require_relative '../../../../test_helper'
2
+ require 'thor'
3
+
4
+ module Troo
5
+ module Commands
6
+ module Show
7
+ describe Board do
8
+ let(:described_class) { Board }
9
+ let(:type) { :board }
10
+ let(:id) { '1' }
11
+ let(:default) { false }
12
+ let(:resource) {}
13
+ let(:presenter) { stub }
14
+
15
+ before do
16
+ @board = Fabricate.build(:board, default: default)
17
+ Retrieval::Board.stubs(:retrieve).returns(resource)
18
+ Presenters::Board.stubs(:new).returns(presenter)
19
+ presenter.stubs(:show).returns(@board.name)
20
+ end
21
+
22
+ after { database_cleanup }
23
+
24
+ describe '.dispatch' do
25
+ subject { described_class.dispatch(type, id) }
26
+
27
+ context 'when a resource ID is provided' do
28
+ context 'and the resource exists' do
29
+ let(:resource) { @board }
30
+
31
+ it 'presents the board' do
32
+ subject.must_match(/#{@board.name}/)
33
+ end
34
+ end
35
+
36
+ context 'but the resource does not exist' do
37
+ it 'returns a polite message' do
38
+ subject.must_match(/Board cannot be found/)
39
+ end
40
+ end
41
+ end
42
+
43
+ context 'when a resource ID is not provided' do
44
+ let(:id) {}
45
+
46
+ context 'and a default resource is set' do
47
+ let(:default) { true }
48
+ let(:resource) { @board }
49
+
50
+ it 'presents the board' do
51
+ subject.must_match(/#{@board.name}/)
52
+ end
53
+ end
54
+
55
+ context 'and a default resource is not set' do
56
+ it 'returns a polite message' do
57
+ subject.must_match(/to set a default board first/)
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,36 @@
1
+ require_relative '../../../../test_helper'
2
+
3
+ module Troo
4
+ module Commands
5
+ module Show
6
+ describe Boards do
7
+ let(:described_class) { Boards }
8
+ let(:resources) { [] }
9
+
10
+ before do
11
+ @board = Fabricate.build(:board)
12
+ Retrieval::Board.stubs(:all).returns(resources)
13
+ Presenters::Board.stubs(:all).returns(@board.name)
14
+ end
15
+
16
+ describe '.dispatch' do
17
+ subject { described_class.dispatch }
18
+
19
+ context 'when boards exist' do
20
+ let(:resources) { [@board] }
21
+
22
+ it 'presents the boards' do
23
+ subject.must_match(/#{@board.name}/)
24
+ end
25
+ end
26
+
27
+ context 'when no boards exist' do
28
+ it 'returns a polite message' do
29
+ subject.must_match(/Boards cannot be found/)
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,64 @@
1
+ require_relative '../../../../test_helper'
2
+
3
+ module Troo
4
+ module Commands
5
+ module Show
6
+ describe Card do
7
+ let(:described_class) { Card }
8
+ let(:type) { :card }
9
+ let(:id) { '1' }
10
+ let(:default) { false }
11
+ let(:resource) {}
12
+ let(:presenter) { stub }
13
+
14
+ before do
15
+ @card = Fabricate.build(:card, default: default)
16
+ Retrieval::Card.stubs(:retrieve).returns(resource)
17
+ Presenters::Card.stubs(:new).returns(presenter)
18
+ presenter.stubs(:show).returns(@card.name)
19
+ end
20
+
21
+ after { database_cleanup }
22
+
23
+ describe '.dispatch' do
24
+ subject { described_class.dispatch(type, id) }
25
+
26
+ context 'when a resource ID is provided' do
27
+ context 'and the resource exists' do
28
+ let(:resource) { @card }
29
+
30
+ it 'presents the cards' do
31
+ subject.must_match(/#{@card.name}/)
32
+ end
33
+ end
34
+
35
+ context 'but the resource does not exist' do
36
+ it 'returns a polite message' do
37
+ subject.must_match(/Card cannot be found/)
38
+ end
39
+ end
40
+ end
41
+
42
+ context 'when a resource ID is not provided' do
43
+ let(:id) {}
44
+
45
+ context 'and a default resource is set' do
46
+ let(:default) { true }
47
+ let(:resource) { @card }
48
+
49
+ it 'presents the cards' do
50
+ subject.must_match(/#{@card.name}/)
51
+ end
52
+ end
53
+
54
+ context 'and a default resource is not set' do
55
+ it 'returns a polite message' do
56
+ subject.must_match(/to set a default card first/)
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,64 @@
1
+ require_relative '../../../../test_helper'
2
+
3
+ module Troo
4
+ module Commands
5
+ module Show
6
+ describe Comments do
7
+ let(:described_class) { Comments }
8
+ let(:type) { :comments }
9
+ let(:id) { '1' }
10
+ let(:default) { false }
11
+ let(:resource) {}
12
+ let(:presenter) { stub }
13
+
14
+ before do
15
+ @card = Fabricate.build(:card, default: default)
16
+ Retrieval::Card.stubs(:retrieve).returns(resource)
17
+ Presenters::Comment.stubs(:new).returns(presenter)
18
+ presenter.stubs(:show).returns(@card.name)
19
+ end
20
+
21
+ after { database_cleanup }
22
+
23
+ describe '.dispatch' do
24
+ subject { described_class.dispatch(type, id) }
25
+
26
+ context 'when a resource ID is provided' do
27
+ context 'and the resource exists' do
28
+ let(:resource) { @card }
29
+
30
+ it 'presents the comments' do
31
+ subject.must_match(/#{@card.name}/)
32
+ end
33
+ end
34
+
35
+ context 'but the resource does not exist' do
36
+ it 'returns a polite message' do
37
+ subject.must_match(/Card cannot be found/)
38
+ end
39
+ end
40
+ end
41
+
42
+ context 'when a resource ID is not provided' do
43
+ let(:id) {}
44
+
45
+ context 'and a default resource is set' do
46
+ let(:default) { true }
47
+ let(:resource) { @card }
48
+
49
+ it 'presents the comments' do
50
+ subject.must_match(/#{@card.name}/)
51
+ end
52
+ end
53
+
54
+ context 'and a default resource is not set' do
55
+ it 'returns a polite message' do
56
+ subject.must_match(/to set a default card first/)
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end