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,79 @@
1
+ require_relative '../../../test_helper'
2
+
3
+ module Troo
4
+ module Presenters
5
+ describe Board do
6
+ let(:described_class) { Board }
7
+ let(:options) { {} }
8
+
9
+ before do
10
+ @board = Fabricate(:board)
11
+ @list = Fabricate(:list)
12
+ @card = Fabricate(:card)
13
+ end
14
+
15
+ after { database_cleanup }
16
+
17
+ describe '#initialize' do
18
+ subject { described_class.new(@board, options) }
19
+
20
+ it 'assigns the board to an instance variable' do
21
+ subject.instance_variable_get('@board').must_equal(@board)
22
+ end
23
+
24
+ it 'assigns the options to an instance variable' do
25
+ subject.instance_variable_get('@options').must_equal(options)
26
+ end
27
+ end
28
+
29
+ describe '#all' do
30
+ subject { capture_io { described_class.all([@board], options) }.join }
31
+
32
+ context 'when the board has lists' do
33
+ it 'renders the view' do
34
+ subject.must_match(/My Test Board/)
35
+ subject.must_match(/My Test List/)
36
+ end
37
+ end
38
+
39
+ context 'when the board has no lists' do
40
+ before { @list.delete }
41
+
42
+ it 'returns a polite message' do
43
+ subject.must_match(/No lists were found./)
44
+ end
45
+ end
46
+ end
47
+
48
+ describe '#show' do
49
+ subject { capture_io { described_class.show(@board, options) }.join }
50
+
51
+ context 'when the board has lists' do
52
+ context 'and the list has cards' do
53
+ it 'renders the view' do
54
+ subject.must_match(/My Test Board/)
55
+ subject.must_match(/My Test List/)
56
+ subject.must_match(/My Test Card/)
57
+ end
58
+ end
59
+
60
+ context 'and the list has no cards' do
61
+ before { @card.delete }
62
+
63
+ it 'returns a polite message' do
64
+ subject.must_match(/No cards were found./)
65
+ end
66
+ end
67
+ end
68
+
69
+ context 'when the board has no lists' do
70
+ before { @board.stubs(:lists).returns([]) }
71
+
72
+ it 'returns a polite message' do
73
+ subject.must_match(/No lists were found./)
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,41 @@
1
+ require_relative '../../../test_helper'
2
+
3
+ module Troo
4
+ module Presenters
5
+ describe Card do
6
+ let(:described_class) { Card }
7
+ let(:options) { {} }
8
+
9
+ before do
10
+ @card = Fabricate(:card)
11
+ @board = Fabricate(:board)
12
+ @list = Fabricate(:list)
13
+ @member = Fabricate(:member)
14
+ end
15
+
16
+ after { database_cleanup }
17
+
18
+ describe '#initialize' do
19
+ subject { described_class.new(@card, options) }
20
+
21
+ it 'assigns the card to an instance variable' do
22
+ subject.instance_variable_get('@card').must_equal(@card)
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 '#show' do
31
+ subject { capture_io { described_class.show(@card, options) }.join }
32
+
33
+ it 'renders the view' do
34
+ subject.must_match(/My Test Card/)
35
+ subject.must_match(/No comments have been left/)
36
+ subject.must_match(/Metadata/)
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,49 @@
1
+ require_relative '../../../test_helper'
2
+
3
+ module Troo
4
+ module Presenters
5
+ describe Comment do
6
+ let(:described_class) { Comment }
7
+ let(:options) { {} }
8
+
9
+ before do
10
+ @card = Fabricate(:card)
11
+ @comment = Fabricate(:comment)
12
+ @member = Fabricate(:member)
13
+ end
14
+
15
+ after { database_cleanup }
16
+
17
+ describe '#initialize' do
18
+ subject { described_class.new(@card, options) }
19
+
20
+ it 'assigns the card to an instance variable' do
21
+ subject.instance_variable_get('@card').must_equal(@card)
22
+ end
23
+
24
+ it 'assigns the options to an instance variable' do
25
+ subject.instance_variable_get('@options').must_equal(options)
26
+ end
27
+ end
28
+
29
+ describe '#show' do
30
+ subject { capture_io { described_class.show(@card, options) }.join }
31
+
32
+ context 'when the card has comments' do
33
+ it 'renders the view' do
34
+ subject.must_match(/My Test Card/)
35
+ subject.must_match(/My Test Comment/)
36
+ end
37
+ end
38
+
39
+ context 'when the card has no comments' do
40
+ before { @comment.delete }
41
+
42
+ it 'returns a polite message' do
43
+ subject.must_match(/No comments were found/)
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,50 @@
1
+ require_relative '../../../test_helper'
2
+
3
+ module Troo
4
+ module Presenters
5
+ describe List do
6
+ let(:described_class) { List }
7
+ let(:options) { {} }
8
+
9
+ before do
10
+ @list = Fabricate(:list)
11
+ @board = Fabricate(:board)
12
+ @card = Fabricate(:card)
13
+ end
14
+
15
+ after { database_cleanup }
16
+
17
+ describe '#initialize' do
18
+ subject { described_class.new(@list, options) }
19
+
20
+ it 'assigns the list to an instance variable' do
21
+ subject.instance_variable_get('@list').must_equal(@list)
22
+ end
23
+
24
+ it 'assigns the options to an instance variable' do
25
+ subject.instance_variable_get('@options').must_equal(options)
26
+ end
27
+ end
28
+
29
+ describe '#show' do
30
+ subject { capture_io { described_class.show(@list, options) }.join }
31
+
32
+ context 'when the list has cards' do
33
+ it 'renders the view' do
34
+ subject.must_match(/My Test Board/)
35
+ subject.must_match(/My Test List/)
36
+ subject.must_match(/My Test Card/)
37
+ end
38
+ end
39
+
40
+ context 'when the list has no cards' do
41
+ before { @card.delete }
42
+
43
+ it 'returns a polite message' do
44
+ subject.must_match(/No cards were found./)
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,40 @@
1
+ require_relative '../../../test_helper'
2
+
3
+ module Troo
4
+ module Presenters
5
+ describe Member do
6
+ let(:described_class) { Member }
7
+ let(:options) { {} }
8
+ let(:external_member_ids) { ['5195fdb5a8c01a2318004f5d'] }
9
+
10
+ before do
11
+ @card = Fabricate(:card,
12
+ external_member_ids: external_member_ids)
13
+ @member = Fabricate(:member)
14
+ end
15
+
16
+ after { database_cleanup }
17
+
18
+ describe '#initialize' do
19
+ subject { described_class.new(@card, options) }
20
+
21
+ it 'assigns the card to an instance variable' do
22
+ subject.instance_variable_get('@card').must_equal(@card)
23
+ end
24
+
25
+ it 'assigns the options to an instance variable' do
26
+ subject.instance_variable_get('@options')
27
+ .must_equal(options)
28
+ end
29
+ end
30
+
31
+ describe '#show' do
32
+ subject { described_class.show(@card, options) }
33
+
34
+ it 'returns the members as a sentence' do
35
+ subject.must_equal('@gavinlaking1')
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -1,56 +1,55 @@
1
1
  Fabricator(:board, from: Troo::Board) do
2
- external_board_id "526d8e130a14a9d846001d96"
3
- name "My Test Board"
4
- description "A very brief description..."
2
+ external_board_id '526d8e130a14a9d846001d96'
3
+ name 'My Test Board'
4
+ description 'A very brief description...'
5
5
  default false
6
6
  closed false
7
7
  end
8
8
 
9
9
  Fabricator(:list, from: Troo::List) do
10
- external_board_id "526d8e130a14a9d846001d96"
11
- external_list_id "526d8e130a14a9d846001d97"
12
- name "My Test List"
13
- position 32768
10
+ external_board_id '526d8e130a14a9d846001d96'
11
+ external_list_id '526d8e130a14a9d846001d97'
12
+ name 'My Test List'
13
+ position 32_768
14
14
  default false
15
15
  closed false
16
16
  end
17
17
 
18
18
  Fabricator(:card, from: Troo::Card) do
19
- external_board_id "526d8e130a14a9d846001d96"
20
- external_list_id "526d8e130a14a9d846001d97"
21
- external_card_id "526d8f19ddb279532e005259"
22
- external_member_ids ["5195fdb5a8c01a2318004f5d"]
23
- short_id "67"
24
- name "My Test Card"
25
- desc "some description"
26
- url "some trello url"
19
+ external_board_id '526d8e130a14a9d846001d96'
20
+ external_list_id '526d8e130a14a9d846001d97'
21
+ external_card_id '526d8f19ddb279532e005259'
22
+ external_member_ids ['5195fdb5a8c01a2318004f5d']
23
+ short_id '67'
24
+ name 'My Test Card'
25
+ desc 'some description'
26
+ url 'some trello url'
27
27
  position 16
28
- last_activity_date "2013-12-17 21:48:09 UTC"
28
+ last_activity_date '2013-12-17 21:48:09 UTC'
29
29
  default false
30
30
  closed false
31
31
  end
32
32
 
33
33
  Fabricator(:comment, from: Troo::Comment) do
34
- external_board_id "526d8e130a14a9d846001d96"
35
- external_card_id "526d8f19ddb279532e005259"
36
- external_comment_id "51f9277b2822b8654f0023af"
37
- external_member_id "5195fdb5a8c01a2318004f5d"
38
- text "My Test Comment"
39
- date "2013-12-17 22:01:13 UTC"
34
+ external_board_id '526d8e130a14a9d846001d96'
35
+ external_card_id '526d8f19ddb279532e005259'
36
+ external_comment_id '51f9277b2822b8654f0023af'
37
+ external_member_id '5195fdb5a8c01a2318004f5d'
38
+ text 'My Test Comment'
39
+ date '2013-12-17 22:01:13 UTC'
40
40
  end
41
41
 
42
42
  Fabricator(:member, from: Troo::Member) do
43
- external_member_id "5195fdb5a8c01a2318004f5d"
44
- username "gavinlaking1"
45
- email "gavinlaking@gmail.com"
46
- full_name "Gavin Laking"
47
- initials "GL"
48
- avatar_id "some_avatar_id"
49
- bio "some bio"
50
- url "http://www.gavinlaking.name/"
43
+ external_member_id '5195fdb5a8c01a2318004f5d'
44
+ username 'gavinlaking1'
45
+ email 'gavinlaking@gmail.com'
46
+ full_name 'Gavin Laking'
47
+ initials 'GL'
48
+ avatar_id 'some_avatar_id'
49
+ bio 'some bio'
50
+ url 'http://www.gavinlaking.name/'
51
51
  end
52
52
 
53
53
  Fabricator(:refresh, from: Troo::Refresh) do
54
- last_performed_at "2014-01-16 21:00:00 UTC"
54
+ last_performed_at '2014-01-16 21:00:00 UTC'
55
55
  end
56
-
@@ -1,4 +1,4 @@
1
- require "vcr"
1
+ require 'vcr'
2
2
 
3
3
  VCR.configure do |c|
4
4
  c.cassette_library_dir = 'test/cassettes'
@@ -8,7 +8,6 @@ VCR.configure do |c|
8
8
  interaction.request.headers['Authorization'].first
9
9
  end
10
10
 
11
- # hack hack hack
12
11
  # Couldn't work out how to instruct VCR to filter urls, shortUrls
13
12
  # and shortLinks from the returned body string; hate myself.
14
13
  c.filter_sensitive_data('<Trello URL>') do |interaction|
@@ -16,21 +15,20 @@ VCR.configure do |c|
16
15
  if parsed.is_a?(Array)
17
16
  parsed.map do |hash|
18
17
  hash.map do |k, v|
19
- hash[k] = "<Trello URL>" if (k == "url" ||
20
- k == "shortUrl" ||
21
- k == "shortLink")
18
+ hash[k] = '<Trello URL>' if k == 'url' ||
19
+ k == 'shortUrl' ||
20
+ k == 'shortLink'
22
21
  end
23
22
  end
24
23
  interaction.response.body = JSON.dump(parsed)
25
24
  elsif parsed.is_a?(Hash)
26
25
  parsed.map do |k, v|
27
- parsed[k] = "<Trello URL>" if (k == "url" ||
28
- k == "shortUrl" ||
29
- k == "shortLink")
26
+ parsed[k] = '<Trello URL>' if k == 'url' ||
27
+ k == 'shortUrl' ||
28
+ k == 'shortLink'
30
29
  end
31
30
  interaction.response.body = JSON.dump(parsed)
32
31
  end
33
32
  nil
34
33
  end
35
34
  end
36
-
@@ -0,0 +1,55 @@
1
+ #!/bin/bash
2
+
3
+ function partition() {
4
+ echo $1
5
+ echo -e "--------------------------------------------------------"
6
+ }
7
+
8
+ if [ -e ./bin/troo ]
9
+ then
10
+ partition "version"
11
+ ./bin/troo version
12
+
13
+ partition "status"
14
+ ./bin/troo status
15
+
16
+ partition "refresh all"
17
+ ./bin/troo refresh all
18
+
19
+ partition "refresh board 1"
20
+ ./bin/troo refresh board 1
21
+
22
+ partition "refresh list 1"
23
+ ./bin/troo refresh list 1
24
+
25
+ partition "refresh card 1"
26
+ ./bin/troo refresh card 1
27
+
28
+ partition "show board 1"
29
+ ./bin/troo show board 1
30
+
31
+ partition "show list 1"
32
+ ./bin/troo show list 1
33
+
34
+ partition "show card 1"
35
+ ./bin/troo show card 1
36
+
37
+ partition "show comments 1"
38
+ ./bin/troo show comments 1
39
+
40
+ partition "default board 1"
41
+ ./bin/troo default board 1
42
+
43
+ partition "default list 1"
44
+ ./bin/troo default list 1
45
+
46
+ partition "default card 1"
47
+ ./bin/troo default card 1
48
+
49
+ partition "cleanup"
50
+ ./bin/troo cleanup
51
+ else
52
+ echo -e "\nExecute this from the root of the project, i.e: ./test/system_test.sh\n"
53
+ fi
54
+
55
+ # troo add [board|list|card|comment] <id> # Add board, list, card or comment.
data/test/test_helper.rb CHANGED
@@ -1,11 +1,11 @@
1
- require "simplecov"
2
- require "minitest/autorun"
3
- require "minitest/pride"
4
- require "fabrication"
1
+ require 'simplecov'
2
+ require 'minitest/autorun'
3
+ require 'minitest/pride'
4
+ require 'fabrication'
5
5
 
6
6
  SimpleCov.start do
7
- command_name "MiniTest::Spec"
8
- add_filter "/test/"
7
+ command_name 'MiniTest::Spec'
8
+ add_filter '/test/'
9
9
  end
10
10
 
11
11
  module MiniTest
@@ -16,13 +16,13 @@ module MiniTest
16
16
  end
17
17
  end
18
18
 
19
- require_relative "./support/vcr_setup.rb"
20
- require_relative "../lib/troo.rb"
21
- require_relative "./support/fabrication.rb"
19
+ require_relative './support/vcr_setup.rb'
20
+ require_relative '../lib/troo.rb'
21
+ require_relative './support/fabrication.rb'
22
22
 
23
23
  Ohm.connect(db: Troo.config.test_db)
24
24
 
25
- require "mocha/setup"
25
+ require 'mocha/setup'
26
26
 
27
27
  def database_cleanup(delay = 0)
28
28
  Ohm.redis.flushdb
data/troo.gemspec CHANGED
@@ -23,6 +23,7 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency "cucumber", "1.3.10"
24
24
  spec.add_development_dependency "fabrication", "2.9.3"
25
25
  spec.add_development_dependency "guard", "2.2.5"
26
+ spec.add_development_dependency "guard-cucumber"
26
27
  spec.add_development_dependency "guard-minitest", "2.1.3"
27
28
  spec.add_development_dependency "minitest", "5.0.8"
28
29
  spec.add_development_dependency "mocha", "0.14.0"