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
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe 'Trello::Organization#actions' do
4
+ include IntegrationHelpers
5
+
6
+ before { setup_trello }
7
+
8
+ it 'can get actions' do
9
+ VCR.use_cassette('can_get_actions_of_organization') do
10
+ organization = Trello::Organization.find('5e93ba154634282b6df23bcc')
11
+ actions = organization.actions
12
+
13
+ expect(actions).to be_a(Array)
14
+ expect(actions[0]).to be_a(Trello::Action)
15
+ end
16
+ end
17
+
18
+ end
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe 'Trello::Organization#boards' do
4
+ include IntegrationHelpers
5
+
6
+ before { setup_trello }
7
+
8
+ it 'can get boards' do
9
+ VCR.use_cassette('can_get_boards_of_organization') do
10
+ organization = Trello::Organization.find('5e93ba154634282b6df23bcc')
11
+ boards = organization.boards
12
+
13
+ expect(boards).to be_a(Array)
14
+ expect(boards[0]).to be_a(Trello::Board)
15
+ end
16
+ end
17
+
18
+ end
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe 'Trello::Organization#members' do
4
+ include IntegrationHelpers
5
+
6
+ before { setup_trello }
7
+
8
+ it 'can get members' do
9
+ VCR.use_cassette('can_get_members_of_organization') do
10
+ organization = Trello::Organization.find('5e93ba154634282b6df23bcc')
11
+ members = organization.members
12
+
13
+ expect(members).to be_a(Array)
14
+ expect(members[0]).to be_a(Trello::Member)
15
+ end
16
+ end
17
+
18
+ end
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe 'Trello::Organization.create' do
4
+ include IntegrationHelpers
5
+
6
+ before { setup_trello }
7
+
8
+ it 'can success create the organization' do
9
+ VCR.use_cassette('can_success_create_a_organization') do
10
+ organization = Trello::Organization.create(
11
+ name: 'integrationtest98',
12
+ display_name: 'Integration Test 98',
13
+ description: 'This is a team for doing integration tests.'
14
+ )
15
+ expect(organization).to be_a(Trello::Organization)
16
+
17
+ expect(organization.id).not_to be_nil
18
+ expect(organization.name).to eq('integrationtest98')
19
+ expect(organization.display_name).to eq('Integration Test 98')
20
+ expect(organization.description).to eq('This is a team for doing integration tests.')
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe 'Trello::Organization#find' do
4
+ include IntegrationHelpers
5
+
6
+ before { setup_trello }
7
+
8
+ it 'find with id and get all fields' do
9
+ VCR.use_cassette('organization_find_with_id_and_get_all_fields') do
10
+ organization = Trello::Organization.find('5e93ba154634282b6df23bcc')
11
+ expect(organization).to be_a(Trello::Organization)
12
+
13
+ expect(organization.id).not_to be_nil
14
+ expect(organization.name).not_to be_nil
15
+ expect(organization.display_name).not_to be_nil
16
+ expect(organization.team_type).not_to be_nil
17
+ expect(organization.description).not_to be_nil
18
+ expect(organization.url).not_to be_nil
19
+ end
20
+ end
21
+
22
+ it 'find with id and get specific fields' do
23
+ VCR.use_cassette('organization_find_with_id_and_get_specific_fields') do
24
+ organization = Trello::Organization.find('5e93ba154634282b6df23bcc', fields: 'name,url')
25
+ expect(organization).to be_a(Trello::Organization)
26
+
27
+ expect(organization.id).not_to be_nil
28
+ expect(organization.name).not_to be_nil
29
+ expect(organization.url).not_to be_nil
30
+
31
+ expect(organization.display_name).to be_nil
32
+ expect(organization.team_type).to be_nil
33
+ expect(organization.description).to be_nil
34
+ end
35
+ end
36
+
37
+ end
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe 'Trell::Organization.update!' do
4
+ include IntegrationHelpers
5
+
6
+ before { setup_trello }
7
+
8
+ it 'can update! a organization' do
9
+ VCR.use_cassette('can_success_update_bong_a_organization') do
10
+ organization = Trello::Organization.find('5f60d9f72c17b23dbb2d9d79')
11
+
12
+ expect(organization.name).to eq('integrationtest98')
13
+ expect(organization.display_name).to eq('Integration Test 98')
14
+ expect(organization.description).to eq('This is a team for doing integration tests.')
15
+
16
+ organization.name = 'integrationtest99'
17
+ organization.display_name = 'Integration Test 99'
18
+ organization.description = 'This is a team for doing integration tests for 99'
19
+
20
+ organization.update!
21
+
22
+ expect(organization.name).to eq('integrationtest99')
23
+ expect(organization.display_name).to eq('Integration Test 99')
24
+ expect(organization.description).to eq('This is a team for doing integration tests for 99')
25
+ end
26
+ end
27
+
28
+ end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe 'Trello::Token#find' do
4
+ include IntegrationHelpers
5
+
6
+ before { setup_trello }
7
+
8
+ it 'find with token string' do
9
+ VCR.use_cassette('token_find_with_token_string') do
10
+ token = Trello::Token.find('MEMBER_TOKEN')
11
+ expect(token).to be_a(Trello::Token)
12
+
13
+ expect(token.id).not_to be_nil
14
+ expect(token.identifier).not_to be_nil
15
+ expect(token.member_id).not_to be_nil
16
+ expect(token.created_at).not_to be_nil
17
+ # expect(token.expires_at).not_to be_nil
18
+ expect(token.permissions).not_to be_nil
19
+ expect(token.webhooks).not_to be_nil
20
+ expect(token.webhooks[0]).to be_a(Trello::Webhook)
21
+ end
22
+ end
23
+
24
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe 'Trello::Webhook.create' do
4
+ include IntegrationHelpers
5
+
6
+ before { setup_trello }
7
+
8
+ it 'can success create the custom_field' do
9
+ VCR.use_cassette('can_success_create_a_webhook') do
10
+ webhook = Trello::Webhook.create(
11
+ description: 'test',
12
+ model_id: '5fa759f1564c6e5bb803c61e',
13
+ callback_url: 'https://example.com/webhook/trello_callbacks',
14
+ active: true
15
+ )
16
+ expect(webhook).to be_a(Trello::Webhook)
17
+
18
+ expect(webhook.id).not_to be_nil
19
+ expect(webhook.description).to eq('test')
20
+ expect(webhook.model_id).to eq('5fa759f1564c6e5bb803c61e')
21
+ expect(webhook.callback_url).to eq('https://example.com/webhook/trello_callbacks')
22
+ expect(webhook.active).to eq(true)
23
+ expect(webhook.consecutive_failures).to eq(0)
24
+ expect(webhook.first_consecutive_fail_date).to be_nil
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe 'Trello::Webhook#delete' do
4
+ include IntegrationHelpers
5
+
6
+ before { setup_trello }
7
+
8
+ it 'find with id' do
9
+ VCR.use_cassette('webhook_delete') do
10
+ webhook = Trello::Webhook.find('5fa8a1e0009b2a6a669e6efa')
11
+ expect(webhook).to be_a(Trello::Webhook)
12
+
13
+ webhook.delete
14
+
15
+ expect {
16
+ Trello::Webhook.find('5fa8a1e0009b2a6a669e6efa')
17
+ }.to raise_error Trello::Error, 'The requested resource was not found.'
18
+ end
19
+ end
20
+
21
+ end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe 'Trello::Webhook#find' do
4
+ include IntegrationHelpers
5
+
6
+ before { setup_trello }
7
+
8
+ it 'find with id' do
9
+ VCR.use_cassette('webhook_find_with_id') do
10
+ webhook = Trello::Webhook.find('5fa8a1e0009b2a6a669e6efa')
11
+ expect(webhook).to be_a(Trello::Webhook)
12
+
13
+ expect(webhook.id).not_to be_nil
14
+ expect(webhook.description).not_to be_nil
15
+ expect(webhook.model_id).not_to be_nil
16
+ expect(webhook.callback_url).not_to be_nil
17
+ expect(webhook.active).not_to be_nil
18
+ expect(webhook.consecutive_failures).not_to be_nil
19
+ end
20
+ end
21
+
22
+ end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe 'Trell::Webhook.update!' do
4
+ include IntegrationHelpers
5
+
6
+ before { setup_trello }
7
+
8
+ it 'can update! a webhook' do
9
+ VCR.use_cassette('can_success_update_bong_a_webhook') do
10
+ webhook = Trello::Webhook.find('5fa8a1e0009b2a6a669e6efa')
11
+
12
+ expect(webhook.description).to eq('test')
13
+
14
+ webhook.description = 'Test - Changed'
15
+
16
+ webhook.update!
17
+
18
+ expect(webhook.description).to eq('Test - Changed')
19
+ webhook = Trello::Webhook.find('5fa8a1e0009b2a6a669e6efa')
20
+ expect(webhook.description).to eq('Test - Changed')
21
+ end
22
+ end
23
+
24
+ end
@@ -31,7 +31,7 @@ module Trello
31
31
  end
32
32
 
33
33
  it 'knows its pos' do
34
- expect(item.pos).to eq details['pos']
34
+ expect(item.position).to eq details['pos']
35
35
  end
36
36
 
37
37
  describe '#complete?' do
@@ -59,7 +59,7 @@ module Trello
59
59
  'name' => 'name',
60
60
  'type' => 'type',
61
61
  'state' => 'state',
62
- 'pos' => 'pos'
62
+ 'pos' => 'position'
63
63
  }
64
64
 
65
65
  item = Item.new(expected)
@@ -20,7 +20,7 @@ module Trello
20
20
  it "delegates to Trello.client#find" do
21
21
  expect(client)
22
22
  .to receive(:find)
23
- .with(:label, 'abcdef123456789123456789', {})
23
+ .with('label', 'abcdef123456789123456789', {})
24
24
 
25
25
  Label.find('abcdef123456789123456789')
26
26
  end
@@ -43,7 +43,6 @@ module Trello
43
43
  expect(label.color).to eq details['color']
44
44
  expect(label.name).to eq details['name']
45
45
  expect(label.id).to eq details['id']
46
- expect(label.uses).to eq details['uses']
47
46
  expect(label.board_id).to eq details['idBoard']
48
47
  end
49
48
 
@@ -71,14 +70,16 @@ module Trello
71
70
 
72
71
  result = JSON.generate(cards_details.first.merge(payload.merge(idBoard: boards_details.first['id'])))
73
72
 
74
- expected_payload = {name: "Test Label", color: nil, idBoard: "abcdef123456789123456789" }
73
+ expected_payload = {'name' => 'Test Label', 'color' => 'yellow', 'idBoard' => 'abcdef123456789123456789' }
75
74
 
76
- expect(client)
75
+ expect(Label.client)
77
76
  .to receive(:post)
78
- .with("/labels", expected_payload)
77
+ .with('/labels', expected_payload)
79
78
  .and_return result
80
79
 
81
- label = Label.create(label_details.first.merge(payload.merge(board_id: boards_details.first['id'])))
80
+ params = label_details.first.merge(payload.merge(board_id: boards_details.first['id']))
81
+ params.delete('id')
82
+ label = Label.create params
82
83
 
83
84
  expect(label).to be_a Label
84
85
  end
@@ -89,13 +90,19 @@ module Trello
89
90
  expected_new_name = "xxx"
90
91
 
91
92
  payload = {
92
- name: expected_new_name,
93
+ 'name' => expected_new_name,
93
94
  }
94
95
 
95
96
  expect(client)
96
97
  .to receive(:put)
97
98
  .once
98
99
  .with("/labels/abcdef123456789123456789", payload)
100
+ .and_return({
101
+ "id" => "abcdef123456789123456789",
102
+ "idBoard" => "5e70f5bed3f34a49e2f11409",
103
+ "name" => "xxx",
104
+ "color" => "purple"
105
+ }.to_json)
99
106
 
100
107
  label.name = expected_new_name
101
108
  label.save
@@ -105,13 +112,19 @@ module Trello
105
112
  expected_new_color = "purple"
106
113
 
107
114
  payload = {
108
- color: expected_new_color,
115
+ 'color' => expected_new_color
109
116
  }
110
117
 
111
118
  expect(client)
112
119
  .to receive(:put)
113
120
  .once
114
121
  .with("/labels/abcdef123456789123456789", payload)
122
+ .and_return({
123
+ "id" => "abcdef123456789123456789",
124
+ "idBoard" => "5e70f5bed3f34a49e2f11409",
125
+ "name" => "",
126
+ "color" => "purple"
127
+ }.to_json)
115
128
 
116
129
  label.color = expected_new_color
117
130
  label.save
@@ -121,26 +134,19 @@ module Trello
121
134
  %w(green yellow orange red purple blue sky lime pink black).each do |color|
122
135
  allow(client)
123
136
  .to receive(:put)
124
- .with("/labels/abcdef123456789123456789", {color: color})
125
- .and_return "not important"
137
+ .with("/labels/abcdef123456789123456789", {'color' => color})
138
+ .and_return({
139
+ "id" => "abcdef123456789123456789",
140
+ "idBoard" => "5e70f5bed3f34a49e2f11409",
141
+ "name" => "",
142
+ "color" => color
143
+ }.to_json)
126
144
 
127
145
  label.color = color
128
146
  label.save
129
147
  expect(label.errors).to be_empty
130
148
  end
131
149
  end
132
-
133
- it "throws an error when trying to update a label with an unknown colour" do
134
- allow(client)
135
- .to receive(:put)
136
- .with("/labels/abcdef123456789123456789", {})
137
- .and_return "not important"
138
-
139
- label.color = 'mauve'
140
- label.save
141
-
142
- expect(label.errors.full_messages.to_sentence).to eq("Label color 'mauve' does not exist")
143
- end
144
150
  end
145
151
 
146
152
  context "deleting" do
@@ -162,10 +168,6 @@ module Trello
162
168
  expect(label.name).to_not be_nil
163
169
  end
164
170
 
165
- it "gets its usage" do
166
- expect(label.uses).to_not be_nil
167
- end
168
-
169
171
  it "gets its color" do
170
172
  expect(label.color).to_not be_nil
171
173
  end
@@ -188,8 +190,7 @@ module Trello
188
190
  'id' => 'id',
189
191
  'name' => 'name',
190
192
  'color' => 'color',
191
- 'idBoard' => 'board_id',
192
- 'uses' => 'uses'
193
+ 'idBoard' => 'board_id'
193
194
  }
194
195
 
195
196
  label = Label.new(expected)
@@ -201,5 +202,81 @@ module Trello
201
202
  end
202
203
  end
203
204
  end
205
+
206
+ describe '#update_fields' do
207
+ let(:label_detail) {{
208
+ 'id' => 'id',
209
+ 'name' => 'name',
210
+ 'color' => 'color',
211
+ 'idBoard' => 'board_id'
212
+ }}
213
+ let(:label) { Label.new(label_detail) }
214
+
215
+ context 'when the fields argument is empty' do
216
+ let(:fields) { {} }
217
+
218
+ it 'card does not set any fields' do
219
+ label.update_fields(fields)
220
+
221
+ expect(label.id).to eq label_detail['id']
222
+ expect(label.name).to eq label_detail['name']
223
+ expect(label.color).to eq label_detail['color']
224
+ expect(label.board_id).to eq label_detail['idBoard']
225
+ end
226
+ end
227
+
228
+ context 'when the fields argument has at least one field' do
229
+ context 'and the field does changed' do
230
+ let(:fields) { { name: 'Awesome Name' } }
231
+
232
+ it 'label does set the changed fields' do
233
+ label.update_fields(fields)
234
+
235
+ expect(label.name).to eq('Awesome Name')
236
+ end
237
+
238
+ it 'label has been mark as changed' do
239
+ label.update_fields(fields)
240
+
241
+ expect(label.changed?).to be_truthy
242
+ end
243
+ end
244
+
245
+ context "and the field doesn't changed" do
246
+ let(:fields) { { name: label_detail['name'] } }
247
+
248
+ it "label attributes doesn't changed" do
249
+ label.update_fields(fields)
250
+
251
+ expect(label.name).to eq(label_detail['name'])
252
+ end
253
+
254
+ it "label hasn't been mark as changed" do
255
+ label.update_fields(fields)
256
+
257
+ expect(label.changed?).to be_falsy
258
+ end
259
+ end
260
+
261
+ context "and the field isn't a correct attributes of the label" do
262
+ let(:fields) { { abc: 'abc' } }
263
+
264
+ it "label attributes doesn't changed" do
265
+ label.update_fields(fields)
266
+
267
+ expect(label.id).to eq label_detail['id']
268
+ expect(label.name).to eq label_detail['name']
269
+ expect(label.color).to eq label_detail['color']
270
+ expect(label.board_id).to eq label_detail['idBoard']
271
+ end
272
+
273
+ it "label hasn't been mark as changed" do
274
+ label.update_fields(fields)
275
+
276
+ expect(label.changed?).to be_falsy
277
+ end
278
+ end
279
+ end
280
+ end
204
281
  end
205
282
  end