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
@@ -1,216 +0,0 @@
1
- require_relative "../../../test_helper"
2
- require "thor"
3
-
4
- module Troo
5
- module CLI
6
- describe Add do
7
- let(:described_class) { Add }
8
-
9
- before do
10
- @board = Fabricate.build(:board, name: "My New Test Board")
11
- @card = Fabricate.build(:card, name: "My New Test Card")
12
- @comment = Fabricate.build(:comment)
13
- @list = Fabricate.build(:list, name: "My New Test List")
14
-
15
- CreateBoard.stubs(:with).returns(@board)
16
- CreateCard.stubs(:for).returns(@card)
17
- CreateComment.stubs(:for).returns(@comment)
18
- CreateList.stubs(:for).returns(@list)
19
- end
20
-
21
- after { database_cleanup }
22
-
23
- describe "#board" do
24
- let(:board_name) { "My New Test Board" }
25
-
26
- subject { capture_io { described_class.new.board(board_name) }.join }
27
-
28
- context "when the name was not provided" do
29
- let(:board_name) { }
30
-
31
- before { $stdin.stubs(:gets).returns(@board.name) }
32
-
33
- it "prompts the user" do
34
- subject.must_match /enter a name/
35
- end
36
- end
37
-
38
- context "when the board was created" do
39
- it "returns a polite message" do
40
- subject.must_match /New board '#{@board.name}' created/
41
- end
42
- end
43
-
44
- context "when the board was not created" do
45
- before { CreateBoard.stubs(:with).returns(false) }
46
-
47
- it "returns a polite message" do
48
- subject.must_match /Board could not be created/
49
- end
50
- end
51
-
52
- context "when the Trello access token credentials are invalid" do
53
- before { CreateBoard.stubs(:with).raises(Troo::InvalidAccessToken) }
54
-
55
- it "returns a polite message" do
56
- subject.must_match /access credentials have expired, please renew/
57
- end
58
- end
59
- end
60
-
61
- describe "#card" do
62
- let(:list_id) { "526d8e130a14a9d846001d97" }
63
- let(:card_name) { "My New Test Card" }
64
- let(:description) { "A very brief description..." }
65
-
66
- before { ListRetrieval.stubs(:retrieve).returns(@list) }
67
-
68
- subject { capture_io { described_class.new.card(list_id, card_name, description) }.join }
69
-
70
- context "when the list was found" do
71
- context "when the name was not provided" do
72
- let(:card_name) { }
73
-
74
- before { $stdin.stubs(:gets).returns(@card.name) }
75
-
76
- it "prompts the user" do
77
- subject.must_match /enter a name/
78
- end
79
- end
80
-
81
- context "when the card was created" do
82
- it "returns a polite message" do
83
- subject.must_match /New card '#{@card.name}' created/
84
- end
85
- end
86
-
87
- context "when the card was not created" do
88
- before { CreateCard.stubs(:for).returns(false) }
89
-
90
- it "returns a polite message" do
91
- subject.must_match /Card could not be created/
92
- end
93
- end
94
-
95
- context "when the Trello access token credentials are invalid" do
96
- before { CreateCard.stubs(:for).raises(Troo::InvalidAccessToken) }
97
-
98
- it "returns a polite message" do
99
- subject.must_match /access credentials have expired, please renew/
100
- end
101
- end
102
- end
103
-
104
- context "when the list was not found" do
105
- before { ListRetrieval.stubs(:retrieve) }
106
-
107
- it "returns a polite message" do
108
- subject.must_match /list was not found/
109
- end
110
- end
111
- end
112
-
113
- describe "#comment" do
114
- let(:card_id) { "526d8f19ddb279532e005259" }
115
- let(:comment) { "A very brief description..." }
116
-
117
- before { CardRetrieval.stubs(:retrieve).returns(@card) }
118
-
119
- subject { capture_io { described_class.new.comment(card_id, comment) }.join }
120
-
121
- context "when the card was found" do
122
- context "when the name was not provided" do
123
- let(:comment) { }
124
-
125
- before { $stdin.stubs(:gets).returns(@comment.text) }
126
-
127
- it "prompts the user" do
128
- subject.must_match /enter a comment/
129
- end
130
- end
131
-
132
- context "when the comment was created" do
133
- it "returns a polite message" do
134
- subject.must_match /New comment created/
135
- end
136
- end
137
-
138
- context "when the comment was not created" do
139
- before { CreateComment.stubs(:for).returns(false) }
140
-
141
- it "returns a polite message" do
142
- subject.must_match /Comment could not be created/
143
- end
144
- end
145
-
146
- context "when the Trello access token credentials are invalid" do
147
- before { CreateComment.stubs(:for).raises(Troo::InvalidAccessToken) }
148
-
149
- it "returns a polite message" do
150
- subject.must_match /access credentials have expired, please renew/
151
- end
152
- end
153
- end
154
-
155
- context "when the card was not found" do
156
- before { CardRetrieval.stubs(:retrieve) }
157
-
158
- it "returns a polite message" do
159
- subject.must_match /card was not found/
160
- end
161
- end
162
- end
163
-
164
- describe "#list" do
165
- let(:board_id) { "526d8e130a14a9d846001d96" }
166
- let(:list_name) { "My New List" }
167
-
168
- before { BoardRetrieval.stubs(:retrieve).returns(@board) }
169
-
170
- subject { capture_io { described_class.new.list(board_id, list_name) }.join }
171
-
172
- context "when the board was found" do
173
- context "when the name was not provided" do
174
- let(:list_name) { }
175
-
176
- before { $stdin.stubs(:gets).returns(@list.name) }
177
-
178
- it "prompts the user" do
179
- subject.must_match /enter a name/
180
- end
181
- end
182
-
183
- context "when the list was created" do
184
- it "returns a polite message" do
185
- subject.must_match /New list '#{@list.name}' created/
186
- end
187
- end
188
-
189
- context "when the list was not created" do
190
- before { CreateList.stubs(:for).returns(false) }
191
-
192
- it "returns a polite message" do
193
- subject.must_match /List could not be created/
194
- end
195
- end
196
-
197
- context "when the Trello access token credentials are invalid" do
198
- before { CreateList.stubs(:for).raises(Troo::InvalidAccessToken) }
199
-
200
- it "returns a polite message" do
201
- subject.must_match /access credentials have expired, please renew/
202
- end
203
- end
204
- end
205
-
206
- context "when the board was not found" do
207
- before { BoardRetrieval.stubs(:retrieve) }
208
-
209
- it "returns a polite message" do
210
- subject.must_match /board was not found/
211
- end
212
- end
213
- end
214
- end
215
- end
216
- end
@@ -1,24 +0,0 @@
1
- require_relative "../../../test_helper"
2
- require "thor"
3
-
4
- module Troo
5
- module CLI
6
- module Helpers
7
- end
8
-
9
- describe ThorFixes do
10
- let(:described_class) { ThorFixes }
11
-
12
- describe ".banner" do
13
- let(:command) { OpenStruct.new(usage: "some usage") }
14
-
15
- before { File.stubs(:basename).returns("troo") }
16
- subject { described_class.banner(command) }
17
-
18
- it "should override Thor to provide proper subcommand help" do
19
- subject.must_equal("troo some usage")
20
- end
21
- end
22
- end
23
- end
24
- end
@@ -1,85 +0,0 @@
1
- require_relative "../../../test_helper"
2
- require "thor"
3
-
4
- module Troo
5
- module CLI
6
- describe Default do
7
- let(:described_class) { Default }
8
-
9
- describe "#board" do
10
- let(:id) { "526d8e130a14a9d846001d96" }
11
-
12
- subject { capture_io { described_class.new.board(id) }.join }
13
-
14
- context "when the id cannot be found" do
15
- before { BoardRetrieval.stubs(:retrieve) }
16
-
17
- it "returns a polite message" do
18
- subject.must_match /Board cannot be found/
19
- end
20
- end
21
-
22
- context "when the id was found" do
23
- before do
24
- @board = Fabricate.build(:board)
25
- BoardRetrieval.stubs(:retrieve).returns(@board)
26
- end
27
-
28
- it "returns a polite message" do
29
- subject.must_match /'#{@board.name}' set as default/
30
- end
31
- end
32
- end
33
-
34
- describe "#card" do
35
- let(:id) { "526d8f19ddb279532e005259" }
36
-
37
- before do
38
- @card = Fabricate.build(:card)
39
- CardRetrieval.stubs(:retrieve).returns(@card)
40
- end
41
-
42
- subject { capture_io { described_class.new.card(id) }.join }
43
-
44
- context "when the id cannot be found" do
45
- before { CardRetrieval.stubs(:retrieve) }
46
-
47
- it "returns a polite message" do
48
- subject.must_match /Card cannot be found/
49
- end
50
- end
51
-
52
- context "when the id was found" do
53
- it "returns a polite message" do
54
- subject.must_match /'#{@card.name}' set as default/
55
- end
56
- end
57
- end
58
-
59
- describe "#list" do
60
- let(:id) { "526d8e130a14a9d846001d97" }
61
-
62
- subject { capture_io { described_class.new.list(id) }.join }
63
-
64
- context "when the id cannot be found" do
65
- before { ListRetrieval.stubs(:retrieve) }
66
-
67
- it "returns a polite message" do
68
- subject.must_match /List cannot be found/
69
- end
70
- end
71
-
72
- context "when the id was found" do
73
- before do
74
- @list = Fabricate.build(:list)
75
- ListRetrieval.stubs(:retrieve).returns(@list)
76
- end
77
-
78
- it "returns a polite message" do
79
- subject.must_match /'#{@list.name}' set as default/
80
- end
81
- end
82
- end
83
- end
84
- end
85
- end
@@ -1,234 +0,0 @@
1
- require_relative "../../../test_helper"
2
- require "thor"
3
-
4
- module Troo
5
- module CLI
6
- describe Main do
7
- let(:described_class) { Main }
8
- let(:described_instance) { described_class.new }
9
-
10
- before { @board = Fabricate(:board) }
11
- after { database_cleanup }
12
-
13
- describe "#status" do
14
- let(:default) { false }
15
-
16
- before do
17
- @board = Fabricate(:board, default: default)
18
- @list = Fabricate(:list, default: default)
19
- @card = Fabricate(:card, default: default)
20
- end
21
-
22
- subject { capture_io { described_instance.status }.join }
23
-
24
- context "when a default board is set" do
25
- let(:default) { true }
26
-
27
- it "returns a polite message" do
28
- subject.must_match /My Test Board/
29
- end
30
- end
31
-
32
- context "when a default board is not set" do
33
- it "returns a polite message" do
34
- subject.must_match /No default board set/
35
- end
36
- end
37
-
38
- context "when a default list is set" do
39
- let(:default) { true }
40
-
41
- it "returns a polite message" do
42
- subject.must_match /My Test List/
43
- end
44
- end
45
-
46
- context "when a default list is not set" do
47
- it "returns a polite message" do
48
- subject.must_match /No default list set/
49
- end
50
- end
51
-
52
- context "when a default card is set" do
53
- let(:default) { true }
54
-
55
- it "returns a polite message" do
56
- subject.must_match /My Test Card/
57
- end
58
- end
59
-
60
- context "when a default card is not set" do
61
- it "returns a polite message" do
62
- subject.must_match /No default card set/
63
- end
64
- end
65
-
66
- context "when there are no boards" do
67
- before { Troo::Board.stubs(:count).returns(0) }
68
-
69
- it "returns a polite message" do
70
- subject.must_match /No boards found/
71
- end
72
- end
73
-
74
- context "when there are no lists" do
75
- before { Troo::List.stubs(:count).returns(0) }
76
-
77
- it "returns a polite message" do
78
- subject.must_match /No lists found/
79
- end
80
- end
81
-
82
- context "when there are no cards" do
83
- before { Troo::Card.stubs(:count).returns(0) }
84
-
85
- it "returns a polite message" do
86
- subject.must_match /No cards found/
87
- end
88
- end
89
- end
90
-
91
- describe "#refresh" do
92
- let(:default) { @board }
93
-
94
- subject { capture_io { described_instance.refresh }.join }
95
-
96
- before do
97
- RefreshAll.stubs(:all)
98
- RefreshAll.stubs(:default)
99
- BoardRetrieval.stubs(:default).returns(default)
100
- RefreshAll.stubs(:lists)
101
- RefreshAll.stubs(:cards)
102
- end
103
-
104
- context "when the --all option is set" do
105
- before { described_instance.stubs(:options).returns({"all" => true}) }
106
-
107
- it "refreshes all local data" do
108
- subject.must_match /All local data has been refreshed./
109
- end
110
- end
111
-
112
- context "when the default board is set" do
113
- context "when the --lists option is set" do
114
- before { described_instance.stubs(:options).returns({"lists" => true}) }
115
-
116
- it "refresh all the lists for the default board" do
117
- subject.must_match /lists for the default board have been refreshed/
118
- end
119
- end
120
-
121
- context "when the --cards option is set" do
122
- before { described_instance.stubs(:options).returns({"cards" => true}) }
123
-
124
- it "retreshes all the cards for the default board" do
125
- subject.must_match /cards for the default board have been refreshed/
126
- end
127
- end
128
-
129
- context "when no additional options are set" do
130
- it "refreshes all local data" do
131
- subject.must_match /All data for the default board has been refreshed./
132
- end
133
- end
134
- end
135
-
136
- context "when the default board is not set" do
137
- let(:default) { }
138
-
139
- it "returns a polite message" do
140
- subject.must_match /to set a default board first/
141
- end
142
- end
143
-
144
- context "when the Trello access token credentials are invalid" do
145
- before do
146
- described_instance.stubs(:options).returns({"all" => true})
147
- Troo::RefreshAll.stubs(:all).raises(Troo::InvalidAccessToken)
148
- end
149
-
150
- it "returns a polite message" do
151
- subject.must_match /access credentials have expired, please renew/
152
- end
153
- end
154
- end
155
-
156
- describe "#cleanup" do
157
- subject { capture_io { described_class.new.cleanup }.join }
158
-
159
- context "when the user confirms their intentions" do
160
- before { $stdin.stubs(:gets).returns("y\n") }
161
-
162
- it "removes all local data" do
163
- subject.must_match /All local data has been removed./
164
- end
165
- end
166
-
167
- context "when the user denies their intentions" do
168
- before { $stdin.stubs(:gets).returns("n\n") }
169
-
170
- it "does not remove the local data" do
171
- subject.must_match("")
172
- end
173
- end
174
- end
175
-
176
- describe "#version" do
177
- subject { capture_io { described_class.new.version }.join }
178
-
179
- it "prints the version" do
180
- subject.must_match /troo #{Troo::VERSION}/
181
- end
182
- end
183
-
184
- describe "#move" do
185
- let(:card_id) { "526d8f19ddb279532e005259" }
186
- let(:list_id) { "526d8e130a14a9d846001d98" }
187
-
188
- before do
189
- @card = Fabricate(:card)
190
- @list = Fabricate(:list)
191
- Troo::MoveCard.stubs(:with).returns(true)
192
- CardRetrieval.stubs(:retrieve).returns(@card)
193
- ListRetrieval.stubs(:retrieve).returns(@list)
194
- end
195
-
196
- subject { capture_io { described_class.new.move(card_id, list_id) }.join }
197
-
198
- context "when the card was found" do
199
- context "when the list was found" do
200
- context "when the card could be moved" do
201
- it "returns a polite message" do
202
- subject.must_match /Card moved from/
203
- end
204
- end
205
-
206
- context "when the card could not be moved" do
207
- before { Troo::MoveCard.stubs(:with).returns(false) }
208
-
209
- it "returns a polite message" do
210
- subject.must_match /could not be moved/
211
- end
212
- end
213
- end
214
-
215
- context "when the list was not found" do
216
- before { ListRetrieval.stubs(:retrieve) }
217
-
218
- it "returns a polite message" do
219
- subject.must_match /list was not found/
220
- end
221
- end
222
- end
223
-
224
- context "when the card was not found" do
225
- before { CardRetrieval.stubs(:retrieve) }
226
-
227
- it "returns a polite message" do
228
- subject.must_match /card was not found/
229
- end
230
- end
231
- end
232
- end
233
- end
234
- end