ruby-trello 2.0.1 → 3.0.0

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 (305) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +61 -10
  3. data/lib/trello.rb +57 -36
  4. data/lib/trello/action.rb +31 -23
  5. data/lib/trello/association_builder/has_many.rb +17 -0
  6. data/lib/trello/association_builder/has_one.rb +16 -0
  7. data/lib/trello/association_fetcher/has_many.rb +26 -0
  8. data/lib/trello/association_fetcher/has_many/fetch.rb +47 -0
  9. data/lib/trello/association_fetcher/has_many/params.rb +56 -0
  10. data/lib/trello/association_fetcher/has_one.rb +25 -0
  11. data/lib/trello/association_fetcher/has_one/fetch.rb +49 -0
  12. data/lib/trello/association_fetcher/has_one/params.rb +36 -0
  13. data/lib/trello/association_infer_tool.rb +13 -0
  14. data/lib/trello/association_proxy.rb +1 -1
  15. data/lib/trello/attachment.rb +40 -27
  16. data/lib/trello/basic_data.rb +112 -50
  17. data/lib/trello/board.rb +91 -101
  18. data/lib/trello/card.rb +53 -200
  19. data/lib/trello/checklist.rb +17 -71
  20. data/lib/trello/comment.rb +32 -22
  21. data/lib/trello/cover_image.rb +20 -0
  22. data/lib/trello/custom_field.rb +78 -0
  23. data/lib/trello/custom_field_item.rb +76 -0
  24. data/lib/trello/custom_field_option.rb +49 -0
  25. data/lib/trello/item.rb +27 -16
  26. data/lib/trello/item_state.rb +7 -15
  27. data/lib/trello/json_utils.rb +1 -1
  28. data/lib/trello/label.rb +15 -84
  29. data/lib/trello/label_name.rb +22 -25
  30. data/lib/trello/list.rb +31 -44
  31. data/lib/trello/member.rb +77 -31
  32. data/lib/trello/notification.rb +27 -20
  33. data/lib/trello/organization.rb +53 -25
  34. data/lib/trello/plugin_datum.rb +11 -16
  35. data/lib/trello/schema.rb +31 -0
  36. data/lib/trello/schema/attribute/base.rb +79 -0
  37. data/lib/trello/schema/attribute/board_pref.rb +45 -0
  38. data/lib/trello/schema/attribute/custom_field_display.rb +45 -0
  39. data/lib/trello/schema/attribute/default.rb +45 -0
  40. data/lib/trello/schema/attribute_builder.rb +42 -0
  41. data/lib/trello/schema/attribute_registration.rb +47 -0
  42. data/lib/trello/schema/serializer/default.rb +17 -0
  43. data/lib/trello/schema/serializer/labels.rb +23 -0
  44. data/lib/trello/schema/serializer/time.rb +25 -0
  45. data/lib/trello/schema/serializer/webhooks.rb +25 -0
  46. data/lib/trello/token.rb +15 -12
  47. data/lib/trello/webhook.rb +18 -71
  48. data/spec/action_spec.rb +2 -3
  49. data/spec/basic_data_spec.rb +58 -0
  50. data/spec/board_spec.rb +53 -100
  51. data/spec/card_spec.rb +177 -66
  52. data/spec/cassettes/action_find_with_id_and_get_all_fields.yml +104 -0
  53. data/spec/cassettes/board_find_with_id_and_get_all_fields.yml +96 -0
  54. data/spec/cassettes/board_find_with_id_and_get_specific_fields.yml +96 -0
  55. data/spec/cassettes/can_add_a_file_from_url_on_a_card.yml +189 -0
  56. data/spec/cassettes/can_add_a_file_on_a_card.yml +200 -0
  57. data/spec/cassettes/can_add_a_member_to_a_board.yml +191 -0
  58. data/spec/cassettes/can_add_a_member_to_a_card.yml +190 -0
  59. data/spec/cassettes/can_add_label_on_a_card.yml +281 -0
  60. data/spec/cassettes/can_arvhice_all_cards_of_list.yml +397 -0
  61. data/spec/cassettes/can_close_bong_a_card.yml +189 -0
  62. data/spec/cassettes/can_get_actions.yml +196 -0
  63. data/spec/cassettes/can_get_actions_of_board.yml +188 -0
  64. data/spec/cassettes/can_get_actions_of_list.yml +202 -0
  65. data/spec/cassettes/can_get_actions_of_members.yml +199 -0
  66. data/spec/cassettes/can_get_actions_of_organization.yml +201 -0
  67. data/spec/cassettes/can_get_attachments.yml +187 -0
  68. data/spec/cassettes/can_get_boards_of_custom_field.yml +198 -0
  69. data/spec/cassettes/can_get_boards_of_label.yml +197 -0
  70. data/spec/cassettes/can_get_boards_of_organization.yml +207 -0
  71. data/spec/cassettes/can_get_cards_of_board.yml +193 -0
  72. data/spec/cassettes/can_get_cards_of_list.yml +201 -0
  73. data/spec/cassettes/can_get_cards_of_member.yml +204 -0
  74. data/spec/cassettes/can_get_checklists_of_board.yml +187 -0
  75. data/spec/cassettes/can_get_comments.yml +193 -0
  76. data/spec/cassettes/can_get_custom_field_options_of_custom_field.yml +197 -0
  77. data/spec/cassettes/can_get_custom_fields_of_board.yml +187 -0
  78. data/spec/cassettes/can_get_label_names_of_board.yml +187 -0
  79. data/spec/cassettes/can_get_labels_of_board.yml +187 -0
  80. data/spec/cassettes/can_get_lists_of_board.yml +187 -0
  81. data/spec/cassettes/can_get_members_of_board.yml +188 -0
  82. data/spec/cassettes/can_get_members_of_organization.yml +200 -0
  83. data/spec/cassettes/can_get_notifications_of_member.yml +199 -0
  84. data/spec/cassettes/can_get_organization_of_board.yml +189 -0
  85. data/spec/cassettes/can_get_organizations_of_member.yml +203 -0
  86. data/spec/cassettes/can_get_plugin_data_of_board.yml +187 -0
  87. data/spec/cassettes/can_move_a_card_to_another_board_with_specific_list.yml +373 -0
  88. data/spec/cassettes/can_move_a_card_to_another_board_without_specific_list.yml +281 -0
  89. data/spec/cassettes/can_move_a_card_to_another_list.yml +281 -0
  90. data/spec/cassettes/can_move_all_cards_to_another_list.yml +886 -0
  91. data/spec/cassettes/can_remove_a_member_from_a_card.yml +185 -0
  92. data/spec/cassettes/can_remove_an_attachment_on_a_card.yml +277 -0
  93. data/spec/cassettes/can_remove_an_upvote_on_a_card.yml +465 -0
  94. data/spec/cassettes/can_remove_label_on_a_card.yml +279 -0
  95. data/spec/cassettes/can_success_add_comment_to_a_card.yml +196 -0
  96. data/spec/cassettes/can_success_copy_checklist_to_a_card.yml +281 -0
  97. data/spec/cassettes/can_success_copy_checklist_to_a_card_without_name_pos.yml +281 -0
  98. data/spec/cassettes/can_success_create_a_board.yml +98 -0
  99. data/spec/cassettes/can_success_create_a_board_with_full_parameters.yml +97 -0
  100. data/spec/cassettes/can_success_create_a_board_without_clone_from_other.yml +98 -0
  101. data/spec/cassettes/can_success_create_a_card.yml +99 -0
  102. data/spec/cassettes/can_success_create_a_card_when_due_is_datetime.yml +98 -0
  103. data/spec/cassettes/can_success_create_a_card_when_due_is_time.yml +98 -0
  104. data/spec/cassettes/can_success_create_a_checklist.yml +102 -0
  105. data/spec/cassettes/can_success_create_a_custom_field.yml +102 -0
  106. data/spec/cassettes/can_success_create_a_custom_field_option.yml +102 -0
  107. data/spec/cassettes/can_success_create_a_label.yml +102 -0
  108. data/spec/cassettes/can_success_create_a_list.yml +102 -0
  109. data/spec/cassettes/can_success_create_a_list_with_full_parameters.yml +102 -0
  110. data/spec/cassettes/can_success_create_a_organization.yml +104 -0
  111. data/spec/cassettes/can_success_create_a_webhook.yml +102 -0
  112. data/spec/cassettes/can_success_create_new_checklist_to_a_card.yml +189 -0
  113. data/spec/cassettes/can_success_delete_a_custom_field_option.yml +389 -0
  114. data/spec/cassettes/can_success_delete_card.yml +185 -0
  115. data/spec/cassettes/can_success_delete_checklist.yml +284 -0
  116. data/spec/cassettes/can_success_get_card_of_board_by_card_id.yml +188 -0
  117. data/spec/cassettes/can_success_remove_member_from_board.yml +186 -0
  118. data/spec/cassettes/can_success_return_all_boards_of_current_user.yml +195 -0
  119. data/spec/cassettes/can_success_upate_a_board.yml +191 -0
  120. data/spec/cassettes/can_success_upate_a_card.yml +189 -0
  121. data/spec/cassettes/can_success_upate_a_list.yml +296 -0
  122. data/spec/cassettes/can_success_update_bong_a_board.yml +283 -0
  123. data/spec/cassettes/can_success_update_bong_a_board_with_specific_fields.yml +284 -0
  124. data/spec/cassettes/can_success_update_bong_a_card.yml +191 -0
  125. data/spec/cassettes/can_success_update_bong_a_checklist_with_specific_fields.yml +296 -0
  126. data/spec/cassettes/can_success_update_bong_a_custom_field.yml +200 -0
  127. data/spec/cassettes/can_success_update_bong_a_label.yml +200 -0
  128. data/spec/cassettes/can_success_update_bong_a_list.yml +199 -0
  129. data/spec/cassettes/can_success_update_bong_a_list_with_specific_fields.yml +296 -0
  130. data/spec/cassettes/can_success_update_bong_a_organization.yml +203 -0
  131. data/spec/cassettes/can_success_update_bong_a_webhook.yml +296 -0
  132. data/spec/cassettes/can_upvote_on_a_card.yml +469 -0
  133. data/spec/cassettes/card_find_with_id_and_get_all_fields.yml +95 -0
  134. data/spec/cassettes/card_find_with_id_and_get_specific_fields.yml +96 -0
  135. data/spec/cassettes/checklist_can_add_an_item.yml +296 -0
  136. data/spec/cassettes/checklist_can_update_the_item_state.yml +296 -0
  137. data/spec/cassettes/checklist_find_with_id_and_get_all_fields.yml +100 -0
  138. data/spec/cassettes/custom_field_find_with_id_and_get_all_fields.yml +100 -0
  139. data/spec/cassettes/custom_field_find_with_id_and_get_specific_fields.yml +100 -0
  140. data/spec/cassettes/custom_field_item_save_1.yml +97 -0
  141. data/spec/cassettes/custom_field_item_save_2.yml +281 -0
  142. data/spec/cassettes/custom_field_option_find_with_id.yml +100 -0
  143. data/spec/cassettes/get_board_of_card.yml +187 -0
  144. data/spec/cassettes/get_board_of_list.yml +197 -0
  145. data/spec/cassettes/get_boards_of_member.yml +207 -0
  146. data/spec/cassettes/get_check_item_states_of_card.yml +188 -0
  147. data/spec/cassettes/get_checklists_of_card.yml +187 -0
  148. data/spec/cassettes/get_cover_image_of_card.yml +187 -0
  149. data/spec/cassettes/get_custom_field_items_of_card.yml +187 -0
  150. data/spec/cassettes/get_list_of_card.yml +188 -0
  151. data/spec/cassettes/get_lists.yml +187 -0
  152. data/spec/cassettes/get_members_of_card.yml +189 -0
  153. data/spec/cassettes/get_plugin_data_of_card.yml +187 -0
  154. data/spec/cassettes/get_voters_of_card.yml +188 -0
  155. data/spec/cassettes/label_delete.yml +285 -0
  156. data/spec/cassettes/label_find_with_id.yml +100 -0
  157. data/spec/cassettes/list_find_with_id_and_get_all_fields.yml +100 -0
  158. data/spec/cassettes/list_find_with_id_and_get_specific_fields.yml +100 -0
  159. data/spec/cassettes/member_find_with_id_and_get_all_fields.yml +101 -0
  160. data/spec/cassettes/member_find_with_id_and_get_specific_fields.yml +100 -0
  161. data/spec/cassettes/notification_find_with_id.yml +103 -0
  162. data/spec/cassettes/organization_find_with_id_and_get_all_fields.yml +102 -0
  163. data/spec/cassettes/organization_find_with_id_and_get_specific_fields.yml +100 -0
  164. data/spec/cassettes/remove_upvote_on_a_card_when_have_not_voted.yml +366 -0
  165. data/spec/cassettes/revote_on_a_card.yml +464 -0
  166. data/spec/cassettes/token_find_with_token_string.yml +100 -0
  167. data/spec/cassettes/webhook_delete.yml +286 -0
  168. data/spec/cassettes/webhook_find_with_id.yml +100 -0
  169. data/spec/checklist_spec.rb +27 -43
  170. data/spec/custom_field_item_spec.rb +192 -0
  171. data/spec/custom_field_option_spec.rb +49 -0
  172. data/spec/custom_field_spec.rb +273 -0
  173. data/spec/integration/action/find_spec.rb +23 -0
  174. data/spec/integration/basic_data/many_spec.rb +127 -0
  175. data/spec/integration/basic_data/one_spec.rb +84 -0
  176. data/spec/integration/basic_data/schema_spec.rb +156 -0
  177. data/spec/integration/board/add_member_spec.rb +21 -0
  178. data/spec/integration/board/all_spec.rb +20 -0
  179. data/spec/integration/board/associations/actions_spec.rb +18 -0
  180. data/spec/integration/board/associations/cards_spec.rb +18 -0
  181. data/spec/integration/board/associations/checklists_spec.rb +18 -0
  182. data/spec/integration/board/associations/custom_fields_spec.rb +18 -0
  183. data/spec/integration/board/associations/label_names_spec.rb +17 -0
  184. data/spec/integration/board/associations/labels_spec.rb +18 -0
  185. data/spec/integration/board/associations/lists_spec.rb +18 -0
  186. data/spec/integration/board/associations/members_spec.rb +18 -0
  187. data/spec/integration/board/associations/organization_spec.rb +19 -0
  188. data/spec/integration/board/associations/plugin_data_spec.rb +18 -0
  189. data/spec/integration/board/create_spec.rb +95 -0
  190. data/spec/integration/board/find_card_spec.rb +18 -0
  191. data/spec/integration/board/find_spec.rb +42 -0
  192. data/spec/integration/board/remove_member_spec.rb +21 -0
  193. data/spec/integration/board/save_spec.rb +37 -0
  194. data/spec/integration/board/update!_spec.rb +62 -0
  195. data/spec/integration/board_lists_spec.rb +21 -0
  196. data/spec/integration/card/add_and_remove_attachment_spec.rb +45 -0
  197. data/spec/integration/card/add_and_remove_label_spec.rb +35 -0
  198. data/spec/integration/card/add_checklist_spec.rb +32 -0
  199. data/spec/integration/card/add_comment_spec.rb +19 -0
  200. data/spec/integration/card/add_memeber_spec.rb +19 -0
  201. data/spec/integration/card/associations/actions_spec.rb +17 -0
  202. data/spec/integration/card/associations/attachments_spec.rb +18 -0
  203. data/spec/integration/card/associations/board_spec.rb +17 -0
  204. data/spec/integration/card/associations/check_item_states_spec.rb +17 -0
  205. data/spec/integration/card/associations/checklists_spec.rb +18 -0
  206. data/spec/integration/card/associations/comments_spec.rb +19 -0
  207. data/spec/integration/card/associations/cover_image_spec.rb +18 -0
  208. data/spec/integration/card/associations/custom_field_items_spec.rb +18 -0
  209. data/spec/integration/card/associations/list_spec.rb +16 -0
  210. data/spec/integration/card/associations/members_spec.rb +18 -0
  211. data/spec/integration/card/associations/plugin_data_spec.rb +18 -0
  212. data/spec/integration/card/associations/voters_spec.rb +17 -0
  213. data/spec/integration/card/close!_spec.rb +16 -0
  214. data/spec/integration/card/create_new_check_list_spec.rb +19 -0
  215. data/spec/integration/card/create_spec.rb +84 -0
  216. data/spec/integration/card/delete_spec.rb +16 -0
  217. data/spec/integration/card/find_spec.rb +67 -0
  218. data/spec/integration/card/move_to_board_spec.rb +36 -0
  219. data/spec/integration/card/move_to_list_spec.rb +20 -0
  220. data/spec/integration/card/remove_member_spec.rb +19 -0
  221. data/spec/integration/card/save_spec.rb +61 -0
  222. data/spec/integration/card/update!_spec.rb +53 -0
  223. data/spec/integration/card/vote_spec.rb +50 -0
  224. data/spec/integration/checklist/add_item_spec.rb +20 -0
  225. data/spec/integration/checklist/create_spec.rb +23 -0
  226. data/spec/integration/checklist/delete_spec.rb +17 -0
  227. data/spec/integration/checklist/find_spec.rb +22 -0
  228. data/spec/integration/checklist/update!_spec.rb +21 -0
  229. data/spec/integration/checklist/update_item_state_spec.rb +20 -0
  230. data/spec/integration/custom_field/association/board_spec.rb +18 -0
  231. data/spec/integration/custom_field/association/custom_field_options_spec.rb +18 -0
  232. data/spec/integration/custom_field/create_spec.rb +29 -0
  233. data/spec/integration/custom_field/find_spec.rb +41 -0
  234. data/spec/integration/custom_field/update!_spec.rb +25 -0
  235. data/spec/integration/custom_field_item_spec.rb +47 -0
  236. data/spec/integration/custom_field_option/create_spec.rb +23 -0
  237. data/spec/integration/custom_field_option/delete_spec.rb +19 -0
  238. data/spec/integration/custom_field_option/find_spec.rb +21 -0
  239. data/spec/integration/label/association/board_spec.rb +18 -0
  240. data/spec/integration/label/create_spec.rb +23 -0
  241. data/spec/integration/label/delete_spec.rb +21 -0
  242. data/spec/integration/label/find_spec.rb +20 -0
  243. data/spec/integration/label/update!_spec.rb +25 -0
  244. data/spec/integration/list/archive_all_cards_spec.rb +20 -0
  245. data/spec/integration/list/associations/actions_spec.rb +18 -0
  246. data/spec/integration/list/associations/board_spec.rb +18 -0
  247. data/spec/integration/list/associations/cards_spec.rb +18 -0
  248. data/spec/integration/list/create_spec.rb +44 -0
  249. data/spec/integration/list/find_spec.rb +37 -0
  250. data/spec/integration/list/move_all_cards_spec.rb +31 -0
  251. data/spec/integration/list/save_spec.rb +40 -0
  252. data/spec/integration/list/update!_spec.rb +43 -0
  253. data/spec/integration/member/associations/actions_spec.rb +17 -0
  254. data/spec/integration/member/associations/boards_spec.rb +18 -0
  255. data/spec/integration/member/associations/cards_spec.rb +18 -0
  256. data/spec/integration/member/associations/notifications_spec.rb +18 -0
  257. data/spec/integration/member/associations/organizations_spec.rb +18 -0
  258. data/spec/integration/member/find_spec.rb +39 -0
  259. data/spec/integration/member/update!_spec.rb +18 -0
  260. data/spec/integration/notification/find_spec.rb +27 -0
  261. data/spec/integration/organization/associations/actions_spec.rb +18 -0
  262. data/spec/integration/organization/associations/boards_spec.rb +18 -0
  263. data/spec/integration/organization/associations/members_spec.rb +18 -0
  264. data/spec/integration/organization/create_spec.rb +23 -0
  265. data/spec/integration/organization/find_spec.rb +37 -0
  266. data/spec/integration/organization/update!_spec.rb +28 -0
  267. data/spec/integration/token/find_spec.rb +24 -0
  268. data/spec/integration/webhook/create_spec.rb +27 -0
  269. data/spec/integration/webhook/delete_spec.rb +21 -0
  270. data/spec/integration/webhook/find_spec.rb +22 -0
  271. data/spec/integration/webhook/update!_spec.rb +24 -0
  272. data/spec/item_spec.rb +2 -2
  273. data/spec/label_spec.rb +105 -28
  274. data/spec/list_spec.rb +32 -14
  275. data/spec/notification_spec.rb +3 -3
  276. data/spec/organization_spec.rb +6 -5
  277. data/spec/spec_helper.rb +118 -37
  278. data/spec/token_spec.rb +10 -11
  279. data/spec/unit/trello/association_builder/has_many_spec.rb +36 -0
  280. data/spec/unit/trello/association_builder/has_one_spec.rb +36 -0
  281. data/spec/unit/trello/association_fetcher/has_many/fetch_spec.rb +38 -0
  282. data/spec/unit/trello/association_fetcher/has_many/params_spec.rb +107 -0
  283. data/spec/unit/trello/association_fetcher/has_many_spec.rb +50 -0
  284. data/spec/unit/trello/association_fetcher/has_one/fetch_spec.rb +51 -0
  285. data/spec/unit/trello/association_fetcher/has_one/params_spec.rb +81 -0
  286. data/spec/unit/trello/association_fetcher/has_one_spec.rb +49 -0
  287. data/spec/unit/trello/association_infer_tool_spec.rb +41 -0
  288. data/spec/unit/trello/basic_data_spec.rb +113 -0
  289. data/spec/unit/trello/board/new_spec.rb +370 -0
  290. data/spec/unit/trello/board/save_spec.rb +49 -0
  291. data/spec/unit/trello/board/update_fields_spec.rb +129 -0
  292. data/spec/unit/trello/board/update_spec.rb +197 -0
  293. data/spec/unit/trello/card_spec.rb +103 -0
  294. data/spec/unit/trello/member/new_spec.rb +62 -0
  295. data/spec/unit/trello/member/update_fields_spec.rb +80 -0
  296. data/spec/unit/trello/schema/attribute/base_spec.rb +349 -0
  297. data/spec/unit/trello/schema/attribute/board_pref_spec.rb +208 -0
  298. data/spec/unit/trello/schema/attribute/default_spec.rb +236 -0
  299. data/spec/unit/trello/schema/attribute_builder_spec.rb +55 -0
  300. data/spec/unit/trello/schema/attribute_registration_spec.rb +59 -0
  301. data/spec/unit/trello/schema/serializer/default_spec.rb +19 -0
  302. data/spec/unit/trello/schema/serializer/time_spec.rb +39 -0
  303. data/spec/unit/trello/schema_spec.rb +25 -0
  304. data/spec/webhook_spec.rb +23 -7
  305. metadata +542 -29
@@ -1,31 +1,28 @@
1
1
  module Trello
2
-
3
2
  # A colored Label attached to a card
3
+ #
4
+ # @!attribute [r] yellow
5
+ # @!attribute [r] red
6
+ # @!attribute [r] orange
7
+ # @!attribute [r] green
8
+ # @!attribute [r] purple
9
+ # @!attribute [r] blue
10
+ # @!attribute [r] sky
11
+ # @!attribute [r] pink
12
+ # @!attribute [r] lime
13
+ # @!attribute [r] black
4
14
  class LabelName < BasicData
5
- register_attributes :yellow, :red, :orange, :green, :purple, :blue, :sky, :pink, :lime, :black
6
-
7
- # Update the fields of a label.
8
- #
9
- # Supply a hash of stringkeyed data retrieved from the Trello API representing
10
- # a label.
11
- def update_fields(fields)
12
- attributes[:yellow] = fields['yellow'] || attributes[:yellow]
13
- attributes[:red] = fields['red'] || attributes[:red]
14
- attributes[:orange] = fields['orange'] || attributes[:orange]
15
- attributes[:green] = fields['green'] || attributes[:green]
16
- attributes[:purple] = fields['purple'] || attributes[:purple]
17
- attributes[:blue] = fields['blue'] || attributes[:blue]
18
- attributes[:sky] = fields['sky'] || attributes[:sky]
19
- attributes[:pink] = fields['pink'] || attributes[:pink]
20
- attributes[:lime] = fields['lime'] || attributes[:lime]
21
- attributes[:black] = fields['black'] || attributes[:black]
22
-
23
- self
15
+ schema do
16
+ attribute :yellow, readonly: true
17
+ attribute :red, readonly: true
18
+ attribute :orange, readonly: true
19
+ attribute :green, readonly: true
20
+ attribute :purple, readonly: true
21
+ attribute :blue, readonly: true
22
+ attribute :sky, readonly: true
23
+ attribute :pink, readonly: true
24
+ attribute :lime, readonly: true
25
+ attribute :black, readonly: true
24
26
  end
25
-
26
- one :board, path: :boards, using: :board_id
27
-
28
- many :cards, filter: :all
29
-
30
27
  end
31
28
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Trello
2
4
  # A List is a container which holds cards. Lists are items on a board.
3
5
  #
@@ -11,10 +13,30 @@ module Trello
11
13
  # @return [String] A 24-character hex string
12
14
  # @!attribute [rw] pos
13
15
  # @return [Object]
16
+ # @!attribute [w] source_list_id
17
+ # @return [String]
18
+ # @!attribute [w] subscribed
19
+ # @return [Boolean]
14
20
  class List < BasicData
15
- register_attributes :id, :name, :closed, :board_id, :pos, :source_list_id, readonly: [ :id, :board_id ]
21
+ schema do
22
+ # Readonly
23
+ attribute :id, readonly: true, primary_key: true
24
+
25
+ # Writable
26
+ attribute :name
27
+ attribute :pos
28
+ attribute :board_id, remote_key: 'idBoard'
29
+
30
+ # Writable but for create only
31
+ attribute :source_list_id, create_only: true, remote_key: 'idListSource'
32
+
33
+ # Writable but for update only
34
+ attribute :closed, update_only: true
35
+ attribute :subscribed, update_only: true
36
+ end
37
+
16
38
  validates_presence_of :id, :name, :board_id
17
- validates_length_of :name, in: 1..16384
39
+ validates_length_of :name, in: 1..16_384
18
40
 
19
41
  include HasActions
20
42
 
@@ -26,48 +48,6 @@ module Trello
26
48
  def find(id, params = {})
27
49
  client.find(:list, id, params)
28
50
  end
29
-
30
- def create(options)
31
- client.create(:list,
32
- 'name' => options[:name],
33
- 'idBoard' => options[:board_id],
34
- 'pos' => options[:pos],
35
- 'idListSource' => options[:source_list_id])
36
- end
37
- end
38
-
39
- # Updates the fields of a list.
40
- #
41
- # Supply a hash of string keyed data retrieved from the Trello API representing
42
- # a List.
43
- def update_fields(fields)
44
- attributes[:id] = fields['id'] || attributes[:id]
45
- attributes[:name] = fields['name'] || fields[:name] || attributes[:name]
46
- attributes[:closed] = fields['closed'] if fields.has_key?('closed')
47
- attributes[:board_id] = fields['idBoard'] || fields[:board_id] || attributes[:board_id]
48
- attributes[:pos] = fields['pos'] || fields[:pos] || attributes[:pos]
49
- attributes[:source_list_id] = fields['idListSource'] || fields[:source_list_id] || attributes[:source_list_id]
50
- self
51
- end
52
-
53
- def save
54
- return update! if id
55
-
56
- from_response client.post("/lists", {
57
- name: name,
58
- closed: closed || false,
59
- idBoard: board_id,
60
- pos: pos,
61
- idListSource: source_list_id
62
- })
63
- end
64
-
65
- def update!
66
- client.put("/lists/#{id}", {
67
- name: name,
68
- closed: closed,
69
- pos: pos
70
- })
71
51
  end
72
52
 
73
53
  # Check if the list is not active anymore.
@@ -101,6 +81,13 @@ module Trello
101
81
  })
102
82
  end
103
83
 
84
+ # Move list to another board. Accepts a `Trello::Board` or an id string.
85
+ def move_to_board(board)
86
+ board = board.id unless board.is_a?(String)
87
+
88
+ client.put("/lists/#{id}/idBoard", value: board)
89
+ end
90
+
104
91
  # Archives all the cards of the list
105
92
  def archive_all_cards
106
93
  client.post("/lists/#{id}/archiveAllCards")
@@ -17,8 +17,84 @@ module Trello
17
17
  # @return [String]
18
18
  # @!attribute [r] url
19
19
  # @return [String]
20
+ # @!attribute [r] prefs
21
+ # @return [Hash]
22
+ # @!attribute [r] activity_blocked
23
+ # @return [Boolean]
24
+ # @!attribute [r] bio_data
25
+ # @return [Hash]
26
+ # @!attribute [r] confirmed
27
+ # @return [Boolean]
28
+ # @!attribute [r] enterprise_id
29
+ # @return [String]
30
+ # @!attribute [r] deactivated_enterprise_ids
31
+ # @return [String]
32
+ # @!attribute [r] referrer_member_id
33
+ # @return [String]
34
+ # @!attribute [r] admin_orgs_perm_id
35
+ # @return [String]
36
+ # @!attribute [r] member_type
37
+ # @return [String]
38
+ # @!attribute [r] non_public
39
+ # @return [Hash]
40
+ # @!attribute [r] non_public_available
41
+ # @return [Hash]
42
+ # @!attribute [r] products
43
+ # @return [Array]
44
+ # @!attribute [r] status
45
+ # @return [String]
46
+ # @!attribute [r] board_ids
47
+ # @return [Array<String>]
48
+ # @!attribute [r] organization_ids
49
+ # @return [Array<String>]
50
+ # @!attribute [r] admin_enterprise_ids
51
+ # @return [Array<String>]
52
+ # @!attribute [r] limits
53
+ # @return [Hash]
54
+ # @!attribute [r] login_types
55
+ # @return [Array<String>]
56
+ # @!attribute [r] marketing_opt_in
57
+ # @return [Hash]
58
+ # @!attribute [r] pinned_board_ids
59
+ # @return [String]
60
+ # @!attribute [w] avatar_source
61
+ # @return [String]
20
62
  class Member < BasicData
21
- register_attributes :id, :username, :email, :full_name, :initials, :avatar_id, :bio, :url, readonly: [ :id, :username, :avatar_id, :url ]
63
+ schema do
64
+ # readonly
65
+ attribute :id, readonly: true, primary_key: true
66
+ attribute :email, readonly: true
67
+ attribute :avatar_id, readonly: true, remote_key: 'avatarHash'
68
+ attribute :url, readonly: true
69
+ attribute :prefs, readonly: true
70
+ attribute :activity_blocked, readonly: true, remote_key: 'activityBlocked'
71
+ attribute :bio_data, readonly: true, remote_key: 'bioData'
72
+ attribute :confirmed, readonly: true
73
+ attribute :enterprise_id, readonly: true, remote_key: 'idEnterprise'
74
+ attribute :deactivated_enterprise_ids, readonly: true, remote_key: 'idEnterprisesDeactivated'
75
+ attribute :referrer_member_id, readonly: true, remote_key: 'idMemberReferrer'
76
+ attribute :admin_orgs_perm_id, readonly: true, remote_key: 'idPremOrgsAdmin'
77
+ attribute :member_type, readonly: true, remote_key: 'memberType'
78
+ attribute :non_public, readonly: true, remote_key: 'nonPublic'
79
+ attribute :non_public_available, readonly: true, remote_key: 'nonPublicAvailable'
80
+ attribute :products, readonly: true
81
+ attribute :status, readonly: true
82
+ attribute :board_ids, readonly: true, remote_key: 'idBoards'
83
+ attribute :organization_ids, readonly: true, remote_key: 'idOrganizations'
84
+ attribute :admin_enterprise_ids, readonly: true, remote_key: 'idEnterprisesAdmin'
85
+ attribute :limits, readonly: true
86
+ attribute :login_types, readonly: true, remote_key: 'loginTypes'
87
+ attribute :marketing_opt_in, readonly: true, remote_key: 'marketingOptIn'
88
+ attribute :pinned_board_ids, readonly: true, remote_key: 'idBoardsPinned'
89
+
90
+ # writable
91
+ attribute :username
92
+ attribute :full_name, remote_key: 'fullName'
93
+ attribute :initials
94
+ attribute :bio
95
+ attribute :avatar_source, remote_key: 'avatarSource'
96
+ end
97
+
22
98
  validates_presence_of :id, :username
23
99
  validates_length_of :full_name, minimum: 4
24
100
  validates_length_of :bio, maximum: 16384
@@ -34,22 +110,6 @@ module Trello
34
110
  end
35
111
  end
36
112
 
37
- # Update the fields of a member.
38
- #
39
- # Supply a hash of string keyed data retrieved from the Trello API representing
40
- # an Member.
41
- def update_fields(fields)
42
- attributes[:id] = fields['id'] || attributes[:id]
43
- attributes[:full_name] = fields['fullName'] || attributes[:full_name]
44
- attributes[:email] = fields['email'] || attributes[:email]
45
- attributes[:username] = fields['username'] || attributes[:username]
46
- attributes[:initials] = fields['initials'] || attributes[:initials]
47
- attributes[:avatar_id] = fields['avatarHash'] || attributes[:avatar_id]
48
- attributes[:bio] = fields['bio'] || attributes[:bio]
49
- attributes[:url] = fields['url'] || attributes[:url]
50
- self
51
- end
52
-
53
113
  # Retrieve a URL to the avatar.
54
114
  #
55
115
  # Valid values for options are:
@@ -90,20 +150,6 @@ module Trello
90
150
  # Returns a list of notifications for the user
91
151
  many :notifications
92
152
 
93
- def save
94
- @previously_changed = changes
95
- @changed_attributes.clear
96
-
97
- return update! if id
98
- end
99
-
100
- def update!
101
- from_response client.put(request_prefix, {
102
- fullName: full_name,
103
- bio: bio
104
- })
105
- end
106
-
107
153
  # :nodoc:
108
154
  def request_prefix
109
155
  "/members/#{id}"
@@ -10,33 +10,40 @@ module Trello
10
10
  # @return [Datetime]
11
11
  # @!attribute [rw] data
12
12
  # @return [Object]
13
- # @!attribute [r] member_creator_id,
13
+ # @!attribute [r] creator_id
14
14
  # @return [String]
15
+ # @!attribute [r] creator_app
16
+ # @return [String]
17
+ # @!attribute [r] action_id
18
+ # @return [String]
19
+ # @!attribute [r] is_reactable
20
+ # @return [Boolean]
21
+ # @!attribute [r] read_at
22
+ # @return [Datetime]
23
+ # @!attribute [r] reactions
24
+ # @return [Array]
15
25
  class Notification < BasicData
16
- register_attributes :id, :unread, :type, :date, :data, :member_creator_id,
17
- read_only: [ :id, :unread, :type, :date, :member_creator_id ]
18
- validates_presence_of :id, :type, :date, :member_creator_id
19
-
20
- class << self
21
- # Locate a notification by its id
22
- def find(id, params = {})
23
- client.find(:notification, id, params)
24
- end
25
- end
26
26
 
27
- def update_fields(fields)
28
- attributes[:id] = fields['id'] || attributes[:id]
29
- attributes[:unread] = fields['unread'] if fields.has_key?('unread')
30
- attributes[:type] = fields['type'] || attributes[:type]
31
- attributes[:date] = fields['date'] || attributes[:date]
32
- attributes[:data] = fields['data'] || attributes[:data]
33
- attributes[:member_creator_id] = fields['idMemberCreator'] || attributes[:member_creator_id]
34
- self
27
+ schema do
28
+ # Readonly
29
+ attribute :id, read_only: true
30
+ attribute :type, read_only: true
31
+ attribute :date, read_only: true
32
+ attribute :data, read_only: true
33
+ attribute :creator_app, read_only: true, remote_key: 'appCreator'
34
+ attribute :creator_id, read_only: true, remote_key: 'idMemberCreator'
35
+ attribute :action_id, read_only: true, remote_key: 'idAction'
36
+ attribute :is_reactable, read_only: true, remote_key: 'isReactable'
37
+ attribute :unread, read_only: true
38
+ attribute :read_at, read_only: true, remote_key: 'dateRead'
39
+ attribute :reactions, read_only: true
35
40
  end
36
41
 
42
+ validates_presence_of :id, :type, :date, :creator_id
43
+
37
44
  alias :unread? :unread
38
45
 
39
- one :member_creator, path: :members, via: Member, using: :member_creator_id
46
+ one :creator, path: :members, via: Member, using: :creator_id
40
47
 
41
48
  def board
42
49
  Board.from_response client.get("/notifications/#{id}/board")
@@ -11,13 +11,60 @@ module Trello
11
11
  # @return [String]
12
12
  # @!attribute [r] url
13
13
  # @return [String]
14
+ # @!attribute [r] team_type
15
+ # @return [String]
16
+ # @!attribute [r] desc_data
17
+ # @return [String]
18
+ # @!attribute [r] logo_hash
19
+ # @return [String]
20
+ # @!attribute [r] logo_url
21
+ # @return [String]
22
+ # @!attribute [r] power_ups
23
+ # @return [Array]
24
+ # @!attribute [r] website
25
+ # @return [String]
26
+ # @!attribute [w] google_app_domain
27
+ # @return [String]
28
+ # @!attribute [w] google_app_version
29
+ # @return [String]
30
+ # @!attribute [w] enable_add_external_members
31
+ # @return [Boolean]
32
+ # @!attribute [w] private_board_creation_permission_level
33
+ # @return [String]
34
+ # @!attribute [w] organization_visible_board_creation_permission_level
35
+ # @return [String]
36
+ # @!attribute [w] public_board_creation_permission_level
37
+ # @return [String]
38
+ # @!attribute [w] visibility_level
39
+ # @return [String]
14
40
  class Organization < BasicData
15
- register_attributes :id, :name, :display_name, :description, :url, :invited,
16
- :website, :logo_hash, :billable_member_count, :active_billable_member_count,
17
- :memberships,
18
- readonly: [ :id, :name, :display_name, :description, :url, :invited,
19
- :website, :logo_hash, :billable_member_count, :active_billable_member_count,
20
- :memberships ]
41
+ schema do
42
+ # Readonly
43
+ attribute :id, readonly: true, primary_key: true
44
+ attribute :team_type, readonly: true, remote_key: 'teamType'
45
+ attribute :url, readonly: true
46
+ attribute :desc_data, readonly: true, remote_key: 'descData'
47
+ attribute :logo_hash, readonly: true, remote_key: 'logoHash'
48
+ attribute :logo_url, readonly: true, remote_key: 'logoUrl'
49
+ attribute :products, readonly: true
50
+ attribute :power_ups, readonly: true, remote_key: 'powerUps'
51
+
52
+ # Writable
53
+ attribute :name
54
+ attribute :display_name, remote_key: 'displayName'
55
+ attribute :description, remote_key: 'desc'
56
+ attribute :website
57
+
58
+ # Writable but update only
59
+ attribute :google_app_domain, update_only: true, remote_key: 'associatedDomain', class_name: 'BoardPref'
60
+ attribute :google_app_version, update_only: true, remote_key: 'googleAppsVersion ', class_name: 'BoardPref'
61
+ attribute :enable_add_external_members, update_only: true, remote_key: 'externalMembersDisabled', class_name: 'BoardPref'
62
+ attribute :private_board_creation_permission_level, update_only: true, remote_key: 'boardVisibilityRestrict/private', class_name: 'BoardPref'
63
+ attribute :organization_visible_board_creation_permission_level, update_only: true, remote_key: 'boardVisibilityRestrict/org', class_name: 'BoardPref'
64
+ attribute :public_board_creation_permission_level, update_only: true, remote_key: 'boardVisibilityRestrict/public', class_name: 'BoardPref'
65
+ attribute :visibility_level, update_only: true, remote_key: 'permissionLevel ', class_name: 'BoardPref'
66
+ end
67
+
21
68
  validates_presence_of :id, :name
22
69
 
23
70
  include HasActions
@@ -29,25 +76,6 @@ module Trello
29
76
  end
30
77
  end
31
78
 
32
- # Update the fields of an organization.
33
- #
34
- # Supply a hash of string keyed data retrieved from the Trello API representing
35
- # an Organization.
36
- def update_fields(fields)
37
- attributes[:id] = fields['id'] || attributes[:id]
38
- attributes[:name] = fields['name'] || attributes[:name]
39
- attributes[:display_name] = fields['displayName'] || attributes[:display_name]
40
- attributes[:description] = fields['desc'] || attributes[:description]
41
- attributes[:url] = fields['url'] || attributes[:url]
42
- attributes[:invited] = fields['invited'] if fields.has_key?('invited')
43
- attributes[:website] = fields['website'] || attributes[:website]
44
- attributes[:logo_hash] = fields['logoHash'] || attributes[:logo_hash]
45
- attributes[:billable_member_count] = fields['billableMemberCount'] || attributes[:billable_member_count]
46
- attributes[:active_billable_member_count] = fields['activeBillableMemberCount'] || attributes[:active_billable_member_count]
47
- attributes[:memberships] = fields['memberships'] || attributes[:memberships]
48
- self
49
- end
50
-
51
79
  # Returns a list of boards under this organization.
52
80
  def boards
53
81
  boards = Board.from_response client.get("/organizations/#{id}/boards/all")
@@ -3,32 +3,27 @@ module Trello
3
3
  #
4
4
  # @!attribute id
5
5
  # @return [String]
6
- # @!attribute idPlugin
6
+ # @!attribute plugin_id
7
7
  # @return [String]
8
8
  # @!attribute scope
9
9
  # @return [String]
10
- # @!attribute idModel
10
+ # @!attribute model_id
11
11
  # @return [String]
12
12
  # @!attribute value
13
13
  # @return [String]
14
14
  # @!attribute access
15
15
  # @return [String]
16
- class PluginDatum < BasicData
17
- # Update the fields of a plugin.
18
- register_attributes :id, :idPlugin, :scope, :idModel, :value, :access
16
+ class PluginDatum < BasicData
19
17
 
20
-
21
- # Supply a hash of stringkeyed data retrieved from the Trello API representing
22
- # an attachment.
23
- def update_fields(fields)
24
- attributes[:id] = fields['id'] || attributes[:id]
25
- attributes[:idPlugin] = fields['idPlugin'] || attributes[:idPlugin]
26
- attributes[:scope] = fields['scope'] || attributes[:scope]
27
- attributes[:value] = JSON.parse(fields['value']).presence if fields.has_key?('value')
28
- attributes[:idModel] = fields['idModel'] || attributes[:idModel]
29
- attributes[:access] = fields['access'] || attributes[:access]
30
- self
18
+ schema do
19
+ attribute :id, readonly: true
20
+ attribute :plugin_id, readonly: true, remote_key: 'idPlugin'
21
+ attribute :scope, readonly: true
22
+ attribute :model_id, readonly: true, remote_key: 'idModel'
23
+ attribute :value, readonly: true, remote_key: 'value'
24
+ attribute :access, readonly: true
31
25
  end
26
+
32
27
  end
33
28
 
34
29
  end