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,84 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe 'Trell::Card.create' do
4
+ include IntegrationHelpers
5
+
6
+ before { setup_trello }
7
+
8
+ it 'can success create the card' do
9
+ VCR.use_cassette('can_success_create_a_card') do
10
+ card = Trello::Card.create(
11
+ name: 'Test Trello::Card.create',
12
+ list_id: '5e93bac014d40e501ee46b8d',
13
+ desc: 'testing card create',
14
+ member_ids: '5e679b808e6e8828784b30e1',
15
+ card_labels: '5e93ba987669b2254983d69d,5e93ba987669b2254983d69e',
16
+ due: '2020-12-22T01:59:00.000Z',
17
+ due_complete: false,
18
+ pos: 'top',
19
+ source_card_id: '5e93ba665c58c44a46cb2ef9',
20
+ source_card_properties: 'comments'
21
+ )
22
+ expect(card).to be_a(Trello::Card)
23
+
24
+ expect(card.name).to eq('Test Trello::Card.create')
25
+ expect(card.list_id).to eq('5e93bac014d40e501ee46b8d')
26
+ expect(card.desc).to eq('testing card create')
27
+ expect(card.member_ids).to eq(['5e679b808e6e8828784b30e1'])
28
+ expect(card.labels.count).to eq(2)
29
+ expect(card.due).to eq(Time.new(2020, 12, 22, 1, 59, 0, '+00:00'))
30
+ expect(card.due_complete).to eq(false)
31
+ expect(card.pos).not_to be_nil
32
+ # expect(card.source_card_id).to eq('5e93ba665c58c44a46cb2ef9')
33
+ # expect(card.source_card_properties).to eq('comments')
34
+
35
+ expect(card.id).not_to be_nil
36
+ expect(card.short_id).not_to be_nil
37
+ expect(card.closed).not_to be_nil
38
+ expect(card.url).not_to be_nil
39
+ expect(card.short_url).not_to be_nil
40
+ expect(card.board_id).not_to be_nil
41
+ expect(card.last_activity_date).not_to be_nil
42
+ expect(card.card_labels).not_to be_nil
43
+ expect(card.badges).not_to be_nil
44
+ expect(card.card_members).to be_nil # default not return members
45
+ expect(card.cover_image_id).to be_nil # only exist when the care use a custom cover image
46
+ end
47
+ end
48
+
49
+ it 'can success create card when "due" is a Time' do
50
+ VCR.use_cassette('can_success_create_a_card_when_due_is_time') do
51
+ card = Trello::Card.create(
52
+ name: 'Test Trello::Card.create 2',
53
+ list_id: '5e93bac014d40e501ee46b8d',
54
+ due: Time.new(2020, 12, 22, 1, 59, 0, '+00:00'),
55
+ due_complete: false
56
+ )
57
+ expect(card).to be_a(Trello::Card)
58
+
59
+ expect(card.id).not_to be_nil
60
+ expect(card.name).to eq('Test Trello::Card.create 2')
61
+ expect(card.list_id).to eq('5e93bac014d40e501ee46b8d')
62
+ expect(card.due).to eq(Time.new(2020, 12, 22, 1, 59, 0, '+00:00'))
63
+ end
64
+ end
65
+
66
+ it 'can success create card when "due" is a DateTime' do
67
+ VCR.use_cassette('can_success_create_a_card_when_due_is_datetime') do
68
+ card = Trello::Card.create(
69
+ name: 'Test Trello::Card.create 3',
70
+ list_id: '5e93bac014d40e501ee46b8d',
71
+ due: DateTime.new(2020, 12, 22, 1, 59, 0, '+00:00'),
72
+ due_complete: false
73
+ )
74
+ expect(card).to be_a(Trello::Card)
75
+
76
+ expect(card.id).not_to be_nil
77
+ expect(card.name).to eq('Test Trello::Card.create 3')
78
+ expect(card.list_id).to eq('5e93bac014d40e501ee46b8d')
79
+ expect(card.due).to eq(Time.new(2020, 12, 22, 1, 59, 0, '+00:00'))
80
+ end
81
+ end
82
+
83
+ end
84
+
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe 'Trello::Card#delete' do
4
+ include IntegrationHelpers
5
+
6
+ before { setup_trello }
7
+
8
+ it 'can success delete card' do
9
+ VCR.use_cassette('can_success_delete_card') do
10
+ card = Trello::Card.find('5e95b664ace3621af695aeb0')
11
+ respone = card.delete
12
+ expect(respone.code).to eq(200)
13
+ end
14
+ end
15
+
16
+ end
@@ -0,0 +1,67 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe 'Trello::Card#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('card_find_with_id_and_get_all_fields') do
10
+ card = Trello::Card.find('5e9310df53f23017628a8011')
11
+ expect(card).to be_a(Trello::Card)
12
+ expect(card.id).to eq('5e9310df53f23017628a8011')
13
+ expect(card.short_id).not_to be_nil
14
+ expect(card.name).not_to be_nil
15
+ expect(card.desc).not_to be_nil
16
+ expect(card.due).not_to be_nil
17
+ expect(card.due_complete).not_to be_nil
18
+ expect(card.closed).not_to be_nil
19
+ expect(card.url).not_to be_nil
20
+ expect(card.short_url).not_to be_nil
21
+ expect(card.board_id).not_to be_nil
22
+ expect(card.member_ids).not_to be_nil
23
+ expect(card.list_id).not_to be_nil
24
+ expect(card.pos).not_to be_nil
25
+ expect(card.last_activity_date).not_to be_nil
26
+ expect(card.labels).not_to be_nil
27
+ expect(card.card_labels).not_to be_nil
28
+ expect(card.cover_image_id).not_to be_nil # only exist when the care use a custom cover image
29
+ expect(card.badges).not_to be_nil
30
+
31
+ expect(card.card_members).to be_nil # default not return members
32
+ expect(card.source_card_id).to be_nil # it's params only work for create card
33
+ expect(card.source_card_properties).to be_nil # it's params only work for creae card
34
+ end
35
+ end
36
+
37
+ it 'find with id and get specific fields' do
38
+ VCR.use_cassette('card_find_with_id_and_get_specific_fields') do
39
+ card = Trello::Card.find('5e7233b06b440f2b93a57b58', fields: 'desc,pos', members: true)
40
+ expect(card).to be_a(Trello::Card)
41
+ expect(card.id).to eq('5e7233b06b440f2b93a57b58')
42
+
43
+ expect(card.desc).not_to be_nil
44
+ expect(card.pos).not_to be_nil
45
+ expect(card.card_members).not_to be_nil # default not return members
46
+
47
+ expect(card.name).to be_nil
48
+ expect(card.short_id).to be_nil
49
+ expect(card.url).to be_nil
50
+ expect(card.short_url).to be_nil
51
+ expect(card.due).to be_nil
52
+ expect(card.closed).to be_nil
53
+ expect(card.board_id).to be_nil
54
+ expect(card.member_ids).to be_nil
55
+ expect(card.list_id).to be_nil
56
+ expect(card.last_activity_date).to be_nil
57
+ expect(card.labels).to eq([])
58
+ expect(card.card_labels).to be_nil
59
+ expect(card.cover_image_id).to be_nil # only exist when the care use a custom cover image
60
+ expect(card.badges).to be_nil
61
+ expect(card.source_card_id).to be_nil # it's params only work for create card
62
+ expect(card.due_complete).to be_nil
63
+ expect(card.source_card_properties).to be_nil # it's params only work for creae card
64
+ end
65
+ end
66
+
67
+ end
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe 'Trello::Card#move_to_board' do
4
+ include IntegrationHelpers
5
+
6
+ before { setup_trello }
7
+
8
+ it 'can move a card to another board without specific the target list' do
9
+ VCR.use_cassette('can_move_a_card_to_another_board_without_specific_list') do
10
+ board = Trello::Board.find('5e94ee7357ac8a3edc2b2145')
11
+ card = Trello::Card.find('5e95d1b4f43f9a06497f17f7')
12
+ response = card.move_to_board(board)
13
+
14
+ expect(response.code).to eq(200)
15
+ body = JSON.parse(response.body)
16
+ expect(body['id']).to eq('5e95d1b4f43f9a06497f17f7')
17
+ expect(body['idBoard']).to eq('5e94ee7357ac8a3edc2b2145')
18
+ expect(body['idList']).not_to be_nil
19
+ end
20
+ end
21
+
22
+ it 'can move a card to another board with a specific target list' do
23
+ VCR.use_cassette('can_move_a_card_to_another_board_with_specific_list') do
24
+ board = Trello::Board.find('5e94f5ded016b22c2437c13c')
25
+ list = Trello::List.find('5e95d1b07f2ff83927319128')
26
+ card = Trello::Card.find('5e95d1b4f43f9a06497f17f7')
27
+ response = card.move_to_board(board, list)
28
+
29
+ expect(response.code).to eq(200)
30
+ body = JSON.parse(response.body)
31
+ expect(body['id']).to eq('5e95d1b4f43f9a06497f17f7')
32
+ expect(body['idBoard']).to eq('5e94f5ded016b22c2437c13c')
33
+ expect(body['idList']).to eq('5e95d1b07f2ff83927319128')
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe 'Trello::Card#move_to_list' do
4
+ include IntegrationHelpers
5
+
6
+ before { setup_trello }
7
+
8
+ it 'can move a card to another list' do
9
+ VCR.use_cassette('can_move_a_card_to_another_list') do
10
+ list = Trello::List.find('5e95d1b2342114318522f3f1')
11
+ card = Trello::Card.find('5e95d1b4f43f9a06497f17f7')
12
+ response = card.move_to_list(list)
13
+
14
+ expect(response.code).to eq(200)
15
+ body = JSON.parse(response.body)
16
+ expect(body['idList']).to eq('5e95d1b2342114318522f3f1')
17
+ expect(body['idList']).not_to eq(card.list_id)
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe 'Trello::Card#remove_member' do
4
+ include IntegrationHelpers
5
+
6
+ before { setup_trello }
7
+
8
+ it 'can remove a member to a card' do
9
+ VCR.use_cassette('can_remove_a_member_from_a_card') do
10
+ member = Trello::Member.new('id' => '5e679b808e6e8828784b30e1')
11
+ card = Trello::Card.find('5e95d1b4f43f9a06497f17f7')
12
+ response = card.remove_member(member)
13
+
14
+ expect(response.code).to eq(200)
15
+ body = JSON.parse(response.body)
16
+ expect(body).to be_a(Array)
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,61 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe 'Trell::Card.create' do
4
+ include IntegrationHelpers
5
+
6
+ before { setup_trello }
7
+
8
+ it 'can success create the card' do
9
+ VCR.use_cassette('can_success_create_a_card') do
10
+ card = Trello::Card.new(
11
+ name: 'Test Trello::Card.create',
12
+ list_id: '5e93bac014d40e501ee46b8d',
13
+ desc: 'testing card create',
14
+ member_ids: '5e679b808e6e8828784b30e1',
15
+ card_labels: '5e93ba987669b2254983d69d,5e93ba987669b2254983d69e',
16
+ due: '2020-12-22T01:59:00.000Z',
17
+ due_complete: false,
18
+ pos: 'top',
19
+ source_card_id: '5e93ba665c58c44a46cb2ef9',
20
+ source_card_properties: 'comments'
21
+ )
22
+ card.save
23
+ expect(card).to be_a(Trello::Card)
24
+
25
+ expect(card.name).to eq('Test Trello::Card.create')
26
+ expect(card.list_id).to eq('5e93bac014d40e501ee46b8d')
27
+ expect(card.desc).to eq('testing card create')
28
+ expect(card.member_ids).to eq(['5e679b808e6e8828784b30e1'])
29
+ expect(card.labels.count).to eq(2)
30
+ expect(card.due).to eq(Time.new(2020, 12, 22, 1, 59, 0, '+00:00'))
31
+ expect(card.due_complete).to eq(false)
32
+ expect(card.pos).not_to be_nil
33
+
34
+ expect(card.id).not_to be_nil
35
+ expect(card.short_id).not_to be_nil
36
+ expect(card.closed).not_to be_nil
37
+ expect(card.url).not_to be_nil
38
+ expect(card.short_url).not_to be_nil
39
+ expect(card.board_id).not_to be_nil
40
+ expect(card.last_activity_date).not_to be_nil
41
+ expect(card.card_labels).not_to be_nil
42
+ expect(card.badges).not_to be_nil
43
+ expect(card.card_members).to be_nil # default not return members
44
+ expect(card.cover_image_id).to be_nil # only exist when the care use a custom cover image
45
+ expect(card.source_card_id).to be_nil
46
+ expect(card.source_card_properties).to be_nil
47
+ end
48
+ end
49
+
50
+ it 'can success update a card' do
51
+ VCR.use_cassette('can_success_upate_a_card') do
52
+ card = Trello::Card.find('5e946acb3cc40322434c214e')
53
+ expect(card.name).to eq('C2')
54
+ card.name = 'C2-changed'
55
+ card.save
56
+ expect(card.name).to eq('C2-changed')
57
+ end
58
+ end
59
+
60
+ end
61
+
@@ -0,0 +1,53 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe 'Trell::Card.update!' do
4
+ include IntegrationHelpers
5
+
6
+ before { setup_trello }
7
+
8
+ it 'can update! a card' do
9
+ VCR.use_cassette('can_success_update_bong_a_card') do
10
+ card = Trello::Card.find('5e94fd9443f25a7263b165d0')
11
+ expect(card.name).to eq('C1')
12
+ expect(card.desc).to eq('')
13
+ expect(card.member_ids).to eq([])
14
+ expect(card.card_labels).to eq([])
15
+ expect(card.due).to be_nil
16
+ expect(card.due_complete).to eq(false)
17
+ expect(card.list_id).to eq('5e94eafdf553d46ea525faa7')
18
+
19
+ card.name = 'Test Trello::Card.update!'
20
+ card.list_id = '5e94fa1248c5e41ad0464a7f'
21
+ card.desc = 'testing card update!'
22
+ card.member_ids = '5e679b808e6e8828784b30e1'
23
+ card.card_labels = '5e94eaf37669b225494161c7'
24
+ card.due = '2020-12-22T01:59:00.000Z'
25
+ card.due_complete = false
26
+ card.pos = 'top'
27
+
28
+ card.update!
29
+
30
+ expect(card.name).to eq('Test Trello::Card.update!')
31
+ expect(card.list_id).to eq('5e94fa1248c5e41ad0464a7f')
32
+ expect(card.desc).to eq('testing card update!')
33
+ expect(card.member_ids).to eq(['5e679b808e6e8828784b30e1'])
34
+ expect(card.card_labels.count).to eq(1)
35
+ expect(card.due).to eq(Time.new(2020, 12, 22, 1, 59, 0, '+00:00'))
36
+ expect(card.due_complete).to eq(false)
37
+ expect(card.pos).not_to be_nil
38
+
39
+ expect(card.id).not_to be_nil
40
+ expect(card.short_id).not_to be_nil
41
+ expect(card.closed).not_to be_nil
42
+ expect(card.url).not_to be_nil
43
+ expect(card.short_url).not_to be_nil
44
+ expect(card.board_id).not_to be_nil
45
+ expect(card.last_activity_date).not_to be_nil
46
+ expect(card.card_labels).not_to be_nil
47
+ expect(card.badges).not_to be_nil
48
+ expect(card.card_members).to be_nil # default not return members
49
+ expect(card.cover_image_id).to be_nil # only exist when the care use a custom cover image
50
+ end
51
+ end
52
+
53
+ end
@@ -0,0 +1,50 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe 'Trell::Card#upvote #remove_upvote' do
4
+ include IntegrationHelpers
5
+
6
+ before { setup_trello }
7
+
8
+ describe '#upvote' do
9
+ it 'can success upvote on a card' do
10
+ VCR.use_cassette('can_upvote_on_a_card') do
11
+ card = Trello::Card.find('5e95d1b4f43f9a06497f17f7')
12
+
13
+ expect(card.voters.count).to eq(0)
14
+ card.upvote
15
+ expect(card.voters.count).to eq(1)
16
+ end
17
+ end
18
+
19
+ it "won't raise error when already voted" do
20
+ VCR.use_cassette('revote_on_a_card') do
21
+ card = Trello::Card.find('5e95d1b4f43f9a06497f17f7')
22
+
23
+ expect(card.voters.count).to eq(1)
24
+ expect { card.upvote }.not_to raise_error(Trello::Error)
25
+ expect(card.voters.count).to eq(1)
26
+ end
27
+ end
28
+ end
29
+
30
+ describe '#remove_upvote' do
31
+ it 'can success remove an upvote on a card' do
32
+ VCR.use_cassette('can_remove_an_upvote_on_a_card') do
33
+ card = Trello::Card.find('5e95d1b4f43f9a06497f17f7')
34
+
35
+ expect(card.voters.count).to eq(1)
36
+ card.remove_upvote
37
+ expect(card.voters.count).to eq(0)
38
+ end
39
+ end
40
+
41
+ it "won't raise error when haven't voted" do
42
+ VCR.use_cassette('remove_upvote_on_a_card_when_have_not_voted') do
43
+ card = Trello::Card.find('5e95d1b4f43f9a06497f17f7')
44
+
45
+ expect(card.voters.count).to eq(0)
46
+ expect { card.remove_upvote }.not_to raise_error(Trello::Error)
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe 'Trello::Checklist.add_item' do
4
+ include IntegrationHelpers
5
+
6
+ before { setup_trello }
7
+
8
+ it 'checklist can add an item' do
9
+ VCR.use_cassette('checklist_can_add_an_item') do
10
+ checklist = Trello::Checklist.find('5f527c51adecdd18331874d5')
11
+ expect(checklist.check_items.count).to eq(0)
12
+
13
+ checklist.add_item('A')
14
+
15
+ checklist = Trello::Checklist.find('5f527c51adecdd18331874d5')
16
+ expect(checklist.check_items.count).to eq(1)
17
+ end
18
+ end
19
+
20
+ end
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe 'Trello::Checklist.create' do
4
+ include IntegrationHelpers
5
+
6
+ before { setup_trello }
7
+
8
+ it 'can success create the checklist partial parameters' do
9
+ VCR.use_cassette('can_success_create_a_checklist') do
10
+ checklist = Trello::Checklist.create(
11
+ name: 'C2',
12
+ card_id: '5e94fd9443f25a7263b165d0'
13
+ )
14
+
15
+ expect(checklist).to be_a(Trello::Checklist)
16
+ expect(checklist.name).to eq('C2')
17
+ expect(checklist.id).not_to be_nil
18
+ expect(checklist.position).not_to be_nil
19
+ expect(checklist.card_id).to eq('5e94fd9443f25a7263b165d0')
20
+ end
21
+ end
22
+
23
+ end