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