troo 0.0.8 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (316) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -1
  3. data/.ruby-version +1 -1
  4. data/.trooconf.example +18 -0
  5. data/Gemfile.lock +178 -0
  6. data/README.md +77 -21
  7. data/Rakefile +1 -1
  8. data/bin/completion.bash +10 -0
  9. data/bin/completion.zsh +10 -0
  10. data/bin/init.sh +15 -0
  11. data/bin/troo +12 -3
  12. data/config/cucumber.yml +3 -3
  13. data/config/en.yml +29 -0
  14. data/config/trello_api.yml +19 -0
  15. data/features/add/board.feature +3 -19
  16. data/features/add/card.feature +14 -18
  17. data/features/add/comment.feature +14 -14
  18. data/features/add/list.feature +11 -14
  19. data/features/default/board.feature +4 -4
  20. data/features/default/card.feature +4 -4
  21. data/features/default/list.feature +4 -4
  22. data/features/move/card.feature +54 -0
  23. data/features/refresh/all.feature +8 -4
  24. data/features/refresh/board.feature +9 -6
  25. data/features/refresh/card.feature +9 -6
  26. data/features/refresh/list.feature +9 -6
  27. data/features/show/board.feature +7 -7
  28. data/features/show/boards.feature +19 -0
  29. data/features/show/card.feature +86 -15
  30. data/features/show/comment.feature +14 -12
  31. data/features/show/list.feature +19 -14
  32. data/features/status.feature +27 -13
  33. data/features/step_definitions/fabrication_steps.rb +43 -8
  34. data/features/step_definitions/troo_steps.rb +3 -2
  35. data/features/support/env.rb +1 -0
  36. data/features/troo.feature +0 -12
  37. data/lib/troo.rb +32 -29
  38. data/lib/troo/api/client.rb +117 -0
  39. data/lib/troo/api/endpoints.rb +39 -0
  40. data/lib/troo/api/headers.rb +44 -0
  41. data/lib/troo/api/oauth_settings.rb +36 -0
  42. data/lib/troo/api/request.rb +37 -0
  43. data/lib/troo/api/response.rb +31 -0
  44. data/lib/troo/cli/add.rb +8 -12
  45. data/lib/troo/cli/commands/add.rb +95 -0
  46. data/lib/troo/cli/commands/default.rb +44 -0
  47. data/lib/troo/cli/commands/move/card.rb +95 -0
  48. data/lib/troo/cli/commands/refresh.rb +80 -0
  49. data/lib/troo/cli/commands/refresh/all.rb +52 -0
  50. data/lib/troo/cli/commands/show.rb +56 -0
  51. data/lib/troo/cli/commands/show/show_boards.rb +36 -0
  52. data/lib/troo/cli/commands/show/show_comments.rb +54 -0
  53. data/lib/troo/cli/commands/status.rb +68 -0
  54. data/lib/troo/cli/default.rb +3 -3
  55. data/lib/troo/cli/main.rb +60 -9
  56. data/lib/troo/cli/refresh.rb +4 -4
  57. data/lib/troo/cli/show.rb +7 -7
  58. data/lib/troo/cli/thor_fixes.rb +1 -5
  59. data/lib/troo/configuration.rb +53 -0
  60. data/lib/troo/debug.rb +18 -0
  61. data/lib/troo/decorators/member.rb +2 -19
  62. data/lib/troo/decorators/resource.rb +130 -0
  63. data/lib/troo/helpers/decorator_helpers.rb +21 -74
  64. data/lib/troo/helpers/model_helpers.rb +19 -4
  65. data/lib/troo/helpers/remote_model_helpers.rb +54 -0
  66. data/lib/troo/models/board.rb +19 -11
  67. data/lib/troo/models/card.rb +20 -17
  68. data/lib/troo/models/comment.rb +28 -8
  69. data/lib/troo/models/list.rb +22 -14
  70. data/lib/troo/models/member.rb +21 -5
  71. data/lib/troo/models/refresh.rb +3 -4
  72. data/lib/troo/persistence/local.rb +63 -0
  73. data/lib/troo/presentation/formatter.rb +132 -0
  74. data/lib/troo/presentation/template.rb +0 -4
  75. data/lib/troo/presenters/board.rb +32 -51
  76. data/lib/troo/presenters/card.rb +4 -11
  77. data/lib/troo/presenters/comment.rb +30 -16
  78. data/lib/troo/presenters/list.rb +25 -21
  79. data/lib/troo/presenters/member.rb +1 -8
  80. data/lib/troo/remote/all.rb +16 -0
  81. data/lib/troo/remote/board.rb +64 -0
  82. data/lib/troo/remote/card.rb +81 -0
  83. data/lib/troo/remote/comment.rb +70 -0
  84. data/lib/troo/remote/comment_data.rb +11 -0
  85. data/lib/troo/remote/comment_data_board.rb +13 -0
  86. data/lib/troo/remote/comment_data_card.rb +15 -0
  87. data/lib/troo/remote/list.rb +49 -0
  88. data/lib/troo/remote/member.rb +75 -0
  89. data/lib/troo/remote/persistence/board.rb +57 -0
  90. data/lib/troo/remote/persistence/card.rb +59 -0
  91. data/lib/troo/remote/persistence/comment.rb +58 -0
  92. data/lib/troo/remote/persistence/list.rb +57 -0
  93. data/lib/troo/remote/persistence/move_card.rb +85 -0
  94. data/lib/troo/retrieval/local.rb +100 -0
  95. data/lib/troo/retrieval/remote.rb +91 -0
  96. data/lib/troo/troo.rb +42 -42
  97. data/lib/troo/version.rb +1 -1
  98. data/lib/troo/views/card.erb +8 -10
  99. data/lib/troo/views/comments.erb +4 -0
  100. data/test/cassettes/board_by_id.yml +21 -30
  101. data/test/cassettes/boards_all.yml +22 -90
  102. data/test/cassettes/card_by_id.yml +49 -0
  103. data/test/cassettes/cards_by_board_id.yml +22 -90
  104. data/test/cassettes/cards_by_list_id.yml +22 -87
  105. data/test/cassettes/comments_by_board_id.yml +22 -95
  106. data/test/cassettes/comments_by_card_id.yml +22 -87
  107. data/test/cassettes/create_board.yml +20 -32
  108. data/test/cassettes/create_card.yml +21 -35
  109. data/test/cassettes/create_comment.yml +19 -37
  110. data/test/cassettes/create_list.yml +18 -32
  111. data/test/cassettes/list_by_id.yml +46 -0
  112. data/test/cassettes/lists_by_board_id.yml +19 -91
  113. data/test/cassettes/member_by_id.yml +48 -0
  114. data/test/cassettes/members_by_board_id.yml +21 -82
  115. data/test/cassettes/move_card_board.yml +49 -0
  116. data/test/cassettes/move_card_list.yml +49 -0
  117. data/test/lib/troo/api/client_test.rb +75 -0
  118. data/test/lib/troo/api/endpoints_test.rb +48 -0
  119. data/test/lib/troo/api/headers_test.rb +27 -0
  120. data/test/lib/troo/api/oauth_settings_test.rb +10 -0
  121. data/test/lib/troo/api/request_test.rb +63 -0
  122. data/test/lib/troo/api/response_test.rb +15 -0
  123. data/test/lib/troo/cli/add_test.rb +113 -0
  124. data/test/lib/troo/cli/commands/add_test.rb +66 -0
  125. data/test/lib/troo/cli/commands/default_test.rb +39 -0
  126. data/test/lib/troo/cli/commands/move/card_test.rb +86 -0
  127. data/test/lib/troo/cli/commands/refresh/all_test.rb +37 -0
  128. data/test/lib/troo/cli/commands/refresh_test.rb +59 -0
  129. data/test/lib/troo/cli/commands/show/show_boards_test.rb +35 -0
  130. data/test/lib/troo/cli/commands/show/show_comments_test.rb +63 -0
  131. data/test/lib/troo/cli/commands/show_test.rb +65 -0
  132. data/test/lib/troo/cli/commands/status_test.rb +48 -0
  133. data/test/lib/troo/cli/default_test.rb +39 -0
  134. data/test/lib/troo/cli/main_test.rb +102 -0
  135. data/test/lib/troo/cli/refresh_test.rb +43 -0
  136. data/test/lib/troo/cli/show_test.rb +49 -0
  137. data/test/lib/troo/cli/thor_fixes_test.rb +38 -0
  138. data/test/lib/troo/configuration_test.rb +43 -0
  139. data/test/lib/troo/debug_test.rb +25 -0
  140. data/test/lib/troo/decorators/card_test.rb +105 -229
  141. data/test/lib/troo/decorators/member_test.rb +20 -35
  142. data/test/lib/troo/decorators/resource_test.rb +157 -0
  143. data/test/lib/troo/helpers/decorator_helpers_test.rb +10 -19
  144. data/test/lib/troo/helpers/model_helpers_test.rb +18 -8
  145. data/test/lib/troo/helpers/remote_model_helpers_test.rb +68 -0
  146. data/test/lib/troo/models/behaviours/set_default_test.rb +0 -10
  147. data/test/lib/troo/models/board_test.rb +2 -2
  148. data/test/lib/troo/models/card_test.rb +2 -2
  149. data/test/lib/troo/models/comment_test.rb +6 -2
  150. data/test/lib/troo/models/list_test.rb +2 -2
  151. data/test/lib/troo/models/member_test.rb +6 -2
  152. data/test/lib/troo/persistence/local_test.rb +31 -0
  153. data/test/lib/troo/presentation/formatter_test.rb +31 -0
  154. data/test/lib/troo/presentation/sentence_test.rb +0 -12
  155. data/test/lib/troo/presentation/template_test.rb +1 -14
  156. data/test/lib/troo/presenters/board_test.rb +17 -36
  157. data/test/lib/troo/presenters/card_test.rb +1 -31
  158. data/test/lib/troo/presenters/comment_test.rb +19 -19
  159. data/test/lib/troo/presenters/list_test.rb +18 -18
  160. data/test/lib/troo/presenters/member_test.rb +1 -14
  161. data/test/lib/troo/remote/board_test.rb +66 -0
  162. data/test/lib/troo/remote/card_test.rb +81 -0
  163. data/test/lib/troo/remote/comment_data_board.rb +9 -0
  164. data/test/lib/troo/remote/comment_data_card_test.rb +9 -0
  165. data/test/lib/troo/remote/comment_data_test.rb +9 -0
  166. data/test/lib/troo/remote/comment_test.rb +100 -0
  167. data/test/lib/troo/remote/list_test.rb +67 -0
  168. data/test/lib/troo/remote/member_test.rb +70 -0
  169. data/test/lib/troo/remote/persistence/board_test.rb +39 -0
  170. data/test/lib/troo/remote/persistence/card_test.rb +50 -0
  171. data/test/lib/troo/remote/persistence/comment_test.rb +45 -0
  172. data/test/lib/troo/remote/persistence/list_test.rb +45 -0
  173. data/test/lib/troo/remote/persistence/move_card_test.rb +78 -0
  174. data/test/lib/troo/retrieval/local_test.rb +192 -0
  175. data/test/lib/troo/retrieval/remote_test.rb +49 -0
  176. data/test/support/fabrication.rb +17 -17
  177. data/test/support/fake_trello/fake_response.rb +38 -0
  178. data/test/support/fake_trello/server.rb +124 -0
  179. data/test/support/remotes/all_boards.json +41 -0
  180. data/test/support/remotes/board.json +140 -0
  181. data/test/support/remotes/board_by_id.json +75 -0
  182. data/test/support/remotes/card.json +40 -0
  183. data/test/support/remotes/card_by_card_id.json +302 -0
  184. data/test/support/remotes/comment.json +27 -0
  185. data/test/support/remotes/create_board.json +38 -0
  186. data/test/support/remotes/list.json +7 -0
  187. data/test/support/remotes/member.json +50 -0
  188. data/test/system_test.sh +21 -1
  189. data/test/test_helper.rb +2 -1
  190. data/troo.gemspec +28 -20
  191. metadata +376 -269
  192. data/configuration.yml.example +0 -7
  193. data/features/cleanup.feature +0 -13
  194. data/lib/troo/actions/create_board.rb +0 -46
  195. data/lib/troo/actions/create_card.rb +0 -44
  196. data/lib/troo/actions/create_comment.rb +0 -46
  197. data/lib/troo/actions/create_list.rb +0 -42
  198. data/lib/troo/actions/move_card.rb +0 -37
  199. data/lib/troo/adaptors/board.rb +0 -32
  200. data/lib/troo/adaptors/card.rb +0 -67
  201. data/lib/troo/adaptors/comment.rb +0 -42
  202. data/lib/troo/adaptors/list.rb +0 -37
  203. data/lib/troo/adaptors/member.rb +0 -52
  204. data/lib/troo/adaptors/resource.rb +0 -17
  205. data/lib/troo/commands/add/board.rb +0 -26
  206. data/lib/troo/commands/add/card.rb +0 -33
  207. data/lib/troo/commands/add/comment.rb +0 -33
  208. data/lib/troo/commands/add/list.rb +0 -33
  209. data/lib/troo/commands/add/resource.rb +0 -21
  210. data/lib/troo/commands/commands.rb +0 -28
  211. data/lib/troo/commands/default/board.rb +0 -25
  212. data/lib/troo/commands/default/card.rb +0 -25
  213. data/lib/troo/commands/default/list.rb +0 -25
  214. data/lib/troo/commands/default/resource.rb +0 -26
  215. data/lib/troo/commands/refresh/all.rb +0 -41
  216. data/lib/troo/commands/refresh/board.rb +0 -28
  217. data/lib/troo/commands/refresh/card.rb +0 -29
  218. data/lib/troo/commands/refresh/list.rb +0 -29
  219. data/lib/troo/commands/refresh/resource.rb +0 -42
  220. data/lib/troo/commands/show/board.rb +0 -13
  221. data/lib/troo/commands/show/boards.rb +0 -35
  222. data/lib/troo/commands/show/card.rb +0 -13
  223. data/lib/troo/commands/show/comments.rb +0 -21
  224. data/lib/troo/commands/show/list.rb +0 -13
  225. data/lib/troo/commands/show/resource.rb +0 -41
  226. data/lib/troo/commands/status/board.rb +0 -30
  227. data/lib/troo/commands/status/card.rb +0 -30
  228. data/lib/troo/commands/status/list.rb +0 -30
  229. data/lib/troo/commands/status/resource.rb +0 -34
  230. data/lib/troo/decorators/board.rb +0 -66
  231. data/lib/troo/decorators/card.rb +0 -105
  232. data/lib/troo/decorators/comment.rb +0 -36
  233. data/lib/troo/decorators/list.rb +0 -60
  234. data/lib/troo/external/board.rb +0 -31
  235. data/lib/troo/external/card.rb +0 -31
  236. data/lib/troo/external/comment.rb +0 -27
  237. data/lib/troo/external/list.rb +0 -27
  238. data/lib/troo/external/member.rb +0 -27
  239. data/lib/troo/external/resource.rb +0 -42
  240. data/lib/troo/helpers/command_helpers.rb +0 -37
  241. data/lib/troo/models/persistence/board.rb +0 -19
  242. data/lib/troo/models/persistence/card.rb +0 -19
  243. data/lib/troo/models/persistence/comment.rb +0 -19
  244. data/lib/troo/models/persistence/list.rb +0 -19
  245. data/lib/troo/models/persistence/member.rb +0 -19
  246. data/lib/troo/models/persistence/resource.rb +0 -50
  247. data/lib/troo/models/remote/comment.rb +0 -21
  248. data/lib/troo/models/remote/resource.rb +0 -25
  249. data/lib/troo/models/retrieval/board.rb +0 -29
  250. data/lib/troo/models/retrieval/card.rb +0 -33
  251. data/lib/troo/models/retrieval/comment.rb +0 -25
  252. data/lib/troo/models/retrieval/list.rb +0 -29
  253. data/lib/troo/models/retrieval/member.rb +0 -25
  254. data/lib/troo/models/retrieval/resource.rb +0 -36
  255. data/lib/troo/views/comment.erb +0 -3
  256. data/test/cassettes/card_by_card_id.yml +0 -58
  257. data/test/cassettes/comments_by_list_id.yml +0 -109
  258. data/test/cassettes/list_by_list_id.yml +0 -56
  259. data/test/cassettes/member_by_member_id.yml +0 -60
  260. data/test/cassettes/move_card.yml +0 -61
  261. data/test/lib/troo/actions/create_board_test.rb +0 -66
  262. data/test/lib/troo/actions/create_card_test.rb +0 -71
  263. data/test/lib/troo/actions/create_comment_test.rb +0 -71
  264. data/test/lib/troo/actions/create_list_test.rb +0 -65
  265. data/test/lib/troo/actions/move_card_test.rb +0 -54
  266. data/test/lib/troo/adaptors/board_test.rb +0 -38
  267. data/test/lib/troo/adaptors/card_test.rb +0 -49
  268. data/test/lib/troo/adaptors/comment_test.rb +0 -41
  269. data/test/lib/troo/adaptors/list_test.rb +0 -38
  270. data/test/lib/troo/adaptors/member_test.rb +0 -44
  271. data/test/lib/troo/commands/add/board_test.rb +0 -43
  272. data/test/lib/troo/commands/add/card_test.rb +0 -44
  273. data/test/lib/troo/commands/add/comment_test.rb +0 -44
  274. data/test/lib/troo/commands/add/list_test.rb +0 -44
  275. data/test/lib/troo/commands/add/resource_test.rb +0 -25
  276. data/test/lib/troo/commands/default/board_test.rb +0 -37
  277. data/test/lib/troo/commands/default/card_test.rb +0 -37
  278. data/test/lib/troo/commands/default/list_test.rb +0 -37
  279. data/test/lib/troo/commands/default/resource_test.rb +0 -20
  280. data/test/lib/troo/commands/refresh/all_test.rb +0 -39
  281. data/test/lib/troo/commands/refresh/board_test.rb +0 -62
  282. data/test/lib/troo/commands/refresh/card_test.rb +0 -62
  283. data/test/lib/troo/commands/refresh/list_test.rb +0 -62
  284. data/test/lib/troo/commands/refresh/resource_test.rb +0 -20
  285. data/test/lib/troo/commands/show/board_test.rb +0 -65
  286. data/test/lib/troo/commands/show/boards_test.rb +0 -36
  287. data/test/lib/troo/commands/show/card_test.rb +0 -64
  288. data/test/lib/troo/commands/show/comments_test.rb +0 -64
  289. data/test/lib/troo/commands/show/list_test.rb +0 -64
  290. data/test/lib/troo/commands/show/resource_test.rb +0 -25
  291. data/test/lib/troo/commands/status/board_test.rb +0 -43
  292. data/test/lib/troo/commands/status/card_test.rb +0 -43
  293. data/test/lib/troo/commands/status/list_test.rb +0 -43
  294. data/test/lib/troo/commands/status/resource_test.rb +0 -19
  295. data/test/lib/troo/decorators/board_test.rb +0 -129
  296. data/test/lib/troo/decorators/comment_test.rb +0 -74
  297. data/test/lib/troo/decorators/list_test.rb +0 -102
  298. data/test/lib/troo/external/board_test.rb +0 -102
  299. data/test/lib/troo/external/card_test.rb +0 -131
  300. data/test/lib/troo/external/comment_test.rb +0 -109
  301. data/test/lib/troo/external/list_test.rb +0 -94
  302. data/test/lib/troo/external/member_test.rb +0 -94
  303. data/test/lib/troo/external/resource_test.rb +0 -25
  304. data/test/lib/troo/helpers/command_helpers_test.rb +0 -82
  305. data/test/lib/troo/models/persistence/board_test.rb +0 -62
  306. data/test/lib/troo/models/persistence/card_test.rb +0 -61
  307. data/test/lib/troo/models/persistence/comment_test.rb +0 -69
  308. data/test/lib/troo/models/persistence/list_test.rb +0 -60
  309. data/test/lib/troo/models/persistence/member_test.rb +0 -60
  310. data/test/lib/troo/models/remote/comment_test.rb +0 -56
  311. data/test/lib/troo/models/remote/resource_test.rb +0 -26
  312. data/test/lib/troo/models/retrieval/board_test.rb +0 -93
  313. data/test/lib/troo/models/retrieval/card_test.rb +0 -101
  314. data/test/lib/troo/models/retrieval/comment_test.rb +0 -46
  315. data/test/lib/troo/models/retrieval/list_test.rb +0 -93
  316. data/test/lib/troo/models/retrieval/member_test.rb +0 -58
@@ -3,41 +3,45 @@ module Troo
3
3
  class List
4
4
  include DecoratorHelpers
5
5
 
6
- class << self
7
- def show(list, options = {})
8
- new(list, options).show
9
- end
10
- end
11
-
12
6
  def initialize(list, options = {})
13
- @list = list
14
- @options = options
7
+ @list, @options = list, options
15
8
  end
16
9
 
17
10
  def show
18
- puts board.decorator.title
19
-
20
- title_for(list.decorator)
21
-
22
- print_error 'No cards were found.' if cards.empty?
23
-
24
- cards.each do |card|
25
- title_for(card)
11
+ output.render list.board.title
12
+ output.render "\n"
13
+
14
+ output.indent do
15
+ output.render list.title
16
+
17
+ output.indent do
18
+ if cards.empty?
19
+ output.render error('No cards were found.') + "\n"
20
+ else
21
+ print_list_with_cards
22
+ end
23
+ end
26
24
  end
27
-
28
- puts
29
25
  end
30
26
 
31
27
  private
32
28
 
33
29
  attr_reader :list
34
30
 
35
- def board
36
- list.board
31
+ def output
32
+ @output ||= Troo::Output.new
33
+ end
34
+
35
+ def print_list_with_cards
36
+ output.render "\n"
37
+ cards.each do |card|
38
+ output.render card.title
39
+ end
40
+ nil
37
41
  end
38
42
 
39
43
  def cards
40
- list.decorator.cards
44
+ list.cards
41
45
  end
42
46
  end
43
47
  end
@@ -3,15 +3,8 @@ module Troo
3
3
  class Member
4
4
  include DecoratorHelpers
5
5
 
6
- class << self
7
- def show(card, options = {})
8
- new(card, options).show
9
- end
10
- end
11
-
12
6
  def initialize(card, options = {})
13
- @card = card
14
- @options = options
7
+ @card, @options = card, options
15
8
  end
16
9
 
17
10
  def show
@@ -0,0 +1,16 @@
1
+ # specific order for Virtus
2
+
3
+ require_relative 'list'
4
+ require_relative 'member'
5
+ require_relative 'comment_data_card'
6
+ require_relative 'comment_data_board'
7
+ require_relative 'comment_data'
8
+ require_relative 'comment'
9
+ require_relative 'card'
10
+ require_relative 'board'
11
+ require_relative 'comment_data_card'
12
+ require_relative 'comment_data_board'
13
+ require_relative 'comment_data'
14
+ require_relative 'comment'
15
+
16
+ Virtus.finalize
@@ -0,0 +1,64 @@
1
+ module Troo
2
+ module Remote
3
+ class Board
4
+ include Virtus.model(finalize: false)
5
+ include Troo::RemoteModelHelpers
6
+
7
+ attribute :id
8
+ attribute :name
9
+ attribute :desc
10
+ attribute :descData
11
+ attribute :closed, Boolean
12
+ attribute :idOrganization
13
+ attribute :pinned
14
+ attribute :url
15
+ attribute :shortUrl
16
+ attribute :prefs
17
+ attribute :labelNames
18
+ attribute :lists, Array[Troo::Remote::List]
19
+ attribute :cards, Array[Troo::Remote::Card]
20
+ attribute :members, Array[Troo::Remote::Member]
21
+
22
+ class << self
23
+ def remote_options
24
+ { mode: :board }
25
+ end
26
+
27
+ def all
28
+ {
29
+ endpoint: :boards_all,
30
+ query: { filter: :open }
31
+ }
32
+ end
33
+
34
+ def by_board_id
35
+ {
36
+ endpoint: :board_by_id,
37
+ query: {
38
+ cards: :open,
39
+ lists: :open,
40
+ members: :all
41
+ }
42
+ }
43
+ end
44
+ end
45
+
46
+ def associations
47
+ [:lists, :cards, :members]
48
+ end
49
+
50
+ def local_model
51
+ Troo::Board
52
+ end
53
+
54
+ def adapted
55
+ {
56
+ external_id: id,
57
+ name: name,
58
+ description: desc,
59
+ closed: closed
60
+ }
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,81 @@
1
+ module Troo
2
+ module Remote
3
+ class Card
4
+ include Virtus.model(finalize: false)
5
+ include Troo::RemoteModelHelpers
6
+
7
+ attribute :id
8
+ attribute :badges
9
+ attribute :checkItemStates
10
+ attribute :closed, Boolean
11
+ attribute :dateLastActivity
12
+ attribute :desc
13
+ attribute :descData
14
+ attribute :due
15
+ attribute :idBoard
16
+ attribute :idChecklists
17
+ attribute :idList
18
+ attribute :idMembers
19
+ attribute :idShort
20
+ attribute :idAttachmentCover
21
+ attribute :manualCoverAttachment
22
+ attribute :labels
23
+ attribute :name
24
+ attribute :pos
25
+ attribute :shortUrl
26
+ attribute :url
27
+ attribute :actions, Array[Troo::Remote::Comment]
28
+
29
+ class << self
30
+ def remote_options
31
+ { mode: :card }
32
+ end
33
+
34
+ def by_board_id
35
+ {
36
+ endpoint: :cards_by_board_id,
37
+ query: { filter: :open }
38
+ }
39
+ end
40
+
41
+ def by_list_id
42
+ {
43
+ endpoint: :cards_by_list_id,
44
+ query: { filter: :open }
45
+ }
46
+ end
47
+
48
+ def by_card_id
49
+ {
50
+ endpoint: :card_by_id,
51
+ query: { actions: :commentCard }
52
+ }
53
+ end
54
+ end
55
+
56
+ def associations
57
+ [:actions]
58
+ end
59
+
60
+ def local_model
61
+ Troo::Card
62
+ end
63
+
64
+ def adapted
65
+ {
66
+ short_id: idShort,
67
+ name: name,
68
+ desc: desc,
69
+ url: url,
70
+ position: pos,
71
+ last_activity_date: dateLastActivity,
72
+ closed: closed,
73
+ external_board_id: idBoard,
74
+ external_list_id: idList,
75
+ external_id: id,
76
+ external_member_ids: idMembers
77
+ }
78
+ end
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,70 @@
1
+ module Troo
2
+ module Remote
3
+ class Comment
4
+ include Virtus.model(finalize: false)
5
+ include Troo::RemoteModelHelpers
6
+
7
+ attribute :id
8
+ attribute :idMemberCreator
9
+ attribute :data, Troo::Remote::CommentData
10
+ attribute :type
11
+ attribute :date
12
+ attribute :memberCreator, Troo::Remote::Member
13
+
14
+ class << self
15
+ def remote_options
16
+ { mode: :card }
17
+ end
18
+
19
+ def by_board_id
20
+ {
21
+ endpoint: :comments_by_board_id,
22
+ query: { filter: :commentCard }
23
+ }
24
+ end
25
+
26
+ def by_card_id
27
+ {
28
+ endpoint: :comments_by_card_id,
29
+ query: { filter: :commentCard }
30
+ }
31
+ end
32
+ end
33
+
34
+ def external_board_id
35
+ data.board.id
36
+ end
37
+
38
+ def external_card_id
39
+ data.card.id
40
+ end
41
+
42
+ def external_comment_id
43
+ id
44
+ end
45
+
46
+ def text
47
+ data.text
48
+ end
49
+
50
+ def associations
51
+ [:memberCreator]
52
+ end
53
+
54
+ def local_model
55
+ Troo::Comment
56
+ end
57
+
58
+ def adapted
59
+ {
60
+ external_id: id,
61
+ external_board_id: data.board.id,
62
+ external_card_id: data.card.id,
63
+ external_member_id: idMemberCreator,
64
+ date: date,
65
+ text: text
66
+ }
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,11 @@
1
+ module Troo
2
+ module Remote
3
+ class CommentData
4
+ include Virtus.model(finalize: false)
5
+
6
+ attribute :board, CommentDataBoard
7
+ attribute :card, CommentDataCard
8
+ attribute :text
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,13 @@
1
+ module Troo
2
+ module Remote
3
+ class CommentDataBoard
4
+ include Virtus.model
5
+
6
+ attribute :shortLink
7
+ attribute :name
8
+ attribute :id
9
+
10
+ alias_method :short_link, :shortLink
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,15 @@
1
+ module Troo
2
+ module Remote
3
+ class CommentDataCard
4
+ include Virtus.model
5
+
6
+ attribute :shortLink
7
+ attribute :idShort
8
+ attribute :name
9
+ attribute :id
10
+
11
+ alias_method :short_link, :shortLink
12
+ alias_method :id_short, :idShort
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,49 @@
1
+ module Troo
2
+ module Remote
3
+ class List
4
+ include Virtus.model(finalize: false)
5
+ include Troo::RemoteModelHelpers
6
+
7
+ attribute :id
8
+ attribute :name
9
+ attribute :closed, Boolean
10
+ attribute :idBoard
11
+ attribute :pos, Integer
12
+
13
+ class << self
14
+ def remote_options
15
+ { mode: :list }
16
+ end
17
+
18
+ def by_board_id
19
+ {
20
+ endpoint: :lists_by_board_id,
21
+ query: { filter: :open }
22
+ }
23
+ end
24
+
25
+ def by_list_id
26
+ { endpoint: :list_by_id }
27
+ end
28
+ end
29
+
30
+ def associations
31
+ []
32
+ end
33
+
34
+ def local_model
35
+ Troo::List
36
+ end
37
+
38
+ def adapted
39
+ {
40
+ external_board_id: idBoard,
41
+ external_id: id,
42
+ name: name,
43
+ position: pos,
44
+ closed: closed
45
+ }
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,75 @@
1
+ module Troo
2
+ module Remote
3
+ class Member
4
+ include Virtus.model(finalize: false)
5
+ include Troo::RemoteModelHelpers
6
+
7
+ attribute :id
8
+ attribute :avatarHash
9
+ attribute :bio
10
+ attribute :bioData
11
+ attribute :confirmed
12
+ attribute :fullName
13
+ attribute :idPremOrgsAdmin
14
+ attribute :initials
15
+ attribute :memberType
16
+ attribute :products
17
+ attribute :status
18
+ attribute :url
19
+ attribute :username
20
+ attribute :avatarSource
21
+ attribute :email
22
+ attribute :gravatarHash
23
+ attribute :idBoards
24
+ attribute :idBoardsInvited
25
+ attribute :idBoardsPinned
26
+ attribute :idOrganizations
27
+ attribute :idOrganizationsInvited
28
+ attribute :loginTypes
29
+ attribute :newEmail
30
+ attribute :oneTimeMessagesDismissed
31
+ attribute :prefs
32
+ attribute :trophies
33
+ attribute :uploadedAvatarHash
34
+ attribute :premiumFeatures
35
+
36
+ class << self
37
+ def remote_options
38
+ { mode: :member }
39
+ end
40
+
41
+ def by_board_id
42
+ {
43
+ endpoint: :members_by_board_id,
44
+ query: { filter: :all }
45
+ }
46
+ end
47
+
48
+ def by_member_id
49
+ { endpoint: :member_by_id }
50
+ end
51
+ end
52
+
53
+ def associations
54
+ []
55
+ end
56
+
57
+ def local_model
58
+ Troo::Member
59
+ end
60
+
61
+ def adapted
62
+ {
63
+ external_id: id,
64
+ username: username,
65
+ email: email,
66
+ full_name: fullName,
67
+ initials: initials,
68
+ avatar_id: avatarHash,
69
+ bio: bio,
70
+ url: url
71
+ }
72
+ end
73
+ end
74
+ end
75
+ end