square.rb 44.2.0.20251016 → 45.0.1.20260122

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 (499) hide show
  1. checksums.yaml +4 -4
  2. data/.fern/metadata.json +9 -0
  3. data/.fernignore +20 -0
  4. data/.rubocop.yml +60 -0
  5. data/LICENSE +1 -1
  6. data/Rakefile +29 -0
  7. data/custom.gemspec.rb +19 -0
  8. data/lib/square/apple_pay/client.rb +24 -10
  9. data/lib/square/bank_accounts/client.rb +144 -31
  10. data/lib/square/bank_accounts/types/create_bank_account_request.rb +13 -0
  11. data/lib/square/bank_accounts/types/disable_bank_account_request.rb +11 -0
  12. data/lib/square/bank_accounts/types/get_by_v_1_id_bank_accounts_request.rb +1 -1
  13. data/lib/square/bank_accounts/types/list_bank_accounts_request.rb +1 -0
  14. data/lib/square/bookings/client.rb +238 -100
  15. data/lib/square/bookings/custom_attribute_definitions/client.rb +139 -67
  16. data/lib/square/bookings/custom_attribute_definitions/types/create_booking_custom_attribute_definition_request.rb +1 -3
  17. data/lib/square/bookings/custom_attribute_definitions/types/update_booking_custom_attribute_definition_request.rb +1 -3
  18. data/lib/square/bookings/custom_attributes/client.rb +168 -76
  19. data/lib/square/bookings/custom_attributes/types/bulk_delete_booking_custom_attributes_request.rb +1 -3
  20. data/lib/square/bookings/custom_attributes/types/bulk_upsert_booking_custom_attributes_request.rb +1 -3
  21. data/lib/square/bookings/location_profiles/client.rb +44 -24
  22. data/lib/square/bookings/team_member_profiles/client.rb +66 -31
  23. data/lib/square/cards/client.rb +103 -45
  24. data/lib/square/cash_drawers/client.rb +3 -1
  25. data/lib/square/cash_drawers/shifts/client.rb +121 -61
  26. data/lib/square/catalog/client.rb +203 -91
  27. data/lib/square/catalog/images/client.rb +50 -20
  28. data/lib/square/catalog/object/client.rb +66 -29
  29. data/lib/square/catalog/object/types/delete_object_request.rb +1 -1
  30. data/lib/square/catalog/object/types/get_object_request.rb +1 -1
  31. data/lib/square/catalog/types/batch_upsert_catalog_objects_request.rb +1 -3
  32. data/lib/square/catalog/types/search_catalog_items_request.rb +3 -9
  33. data/lib/square/catalog/types/search_catalog_objects_request.rb +1 -3
  34. data/lib/square/channels/client.rb +85 -38
  35. data/lib/square/checkout/client.rb +77 -31
  36. data/lib/square/checkout/payment_links/client.rb +120 -54
  37. data/lib/square/client.rb +8 -10
  38. data/lib/square/customers/cards/client.rb +43 -16
  39. data/lib/square/customers/client.rb +220 -97
  40. data/lib/square/customers/custom_attribute_definitions/client.rb +157 -74
  41. data/lib/square/customers/custom_attribute_definitions/types/batch_upsert_customer_custom_attributes_request.rb +1 -3
  42. data/lib/square/customers/custom_attribute_definitions/types/create_customer_custom_attribute_definition_request.rb +1 -3
  43. data/lib/square/customers/custom_attribute_definitions/types/update_customer_custom_attribute_definition_request.rb +1 -3
  44. data/lib/square/customers/custom_attributes/client.rb +117 -53
  45. data/lib/square/customers/groups/client.rb +156 -67
  46. data/lib/square/customers/segments/client.rb +62 -31
  47. data/lib/square/customers/types/bulk_create_customers_request.rb +1 -3
  48. data/lib/square/customers/types/bulk_update_customers_request.rb +1 -3
  49. data/lib/square/devices/client.rb +66 -31
  50. data/lib/square/devices/codes/client.rb +83 -38
  51. data/lib/square/disputes/client.rb +140 -60
  52. data/lib/square/disputes/evidence/client.rb +83 -39
  53. data/lib/square/employees/client.rb +66 -31
  54. data/lib/square/events/client.rb +80 -38
  55. data/lib/square/file_param.rb +77 -77
  56. data/lib/square/gift_cards/activities/client.rb +73 -31
  57. data/lib/square/gift_cards/client.rb +163 -69
  58. data/lib/square/internal/http/base_request.rb +6 -0
  59. data/lib/square/internal/http/raw_client.rb +111 -20
  60. data/lib/square/internal/iterators/cursor_item_iterator.rb +28 -0
  61. data/lib/square/internal/iterators/cursor_page_iterator.rb +51 -0
  62. data/lib/square/internal/iterators/item_iterator.rb +65 -0
  63. data/lib/square/internal/iterators/offset_item_iterator.rb +30 -0
  64. data/lib/square/internal/iterators/offset_page_iterator.rb +83 -0
  65. data/lib/square/internal/json/request.rb +2 -1
  66. data/lib/square/internal/multipart/multipart_request.rb +2 -1
  67. data/lib/square/internal/types/enum.rb +8 -0
  68. data/lib/square/internal/types/model/field.rb +11 -1
  69. data/lib/square/internal/types/model.rb +14 -4
  70. data/lib/square/internal/types/union.rb +88 -7
  71. data/lib/square/internal/types/utils.rb +20 -4
  72. data/lib/square/inventory/client.rb +100 -76
  73. data/lib/square/invoices/client.rb +228 -99
  74. data/lib/square/labor/break_types/client.rb +120 -53
  75. data/lib/square/labor/client.rb +205 -81
  76. data/lib/square/labor/employee_wages/client.rb +64 -31
  77. data/lib/square/labor/shifts/client.rb +94 -37
  78. data/lib/square/labor/team_member_wages/client.rb +64 -31
  79. data/lib/square/labor/types/bulk_publish_scheduled_shifts_request.rb +2 -6
  80. data/lib/square/labor/types/publish_scheduled_shift_request.rb +1 -3
  81. data/lib/square/labor/workweek_configs/client.rb +65 -32
  82. data/lib/square/locations/client.rb +102 -41
  83. data/lib/square/locations/custom_attribute_definitions/client.rb +135 -64
  84. data/lib/square/locations/custom_attribute_definitions/types/create_location_custom_attribute_definition_request.rb +1 -3
  85. data/lib/square/locations/custom_attribute_definitions/types/update_location_custom_attribute_definition_request.rb +1 -3
  86. data/lib/square/locations/custom_attributes/client.rb +156 -68
  87. data/lib/square/locations/custom_attributes/types/bulk_delete_location_custom_attributes_request.rb +1 -3
  88. data/lib/square/locations/custom_attributes/types/bulk_upsert_location_custom_attributes_request.rb +1 -3
  89. data/lib/square/locations/transactions/client.rb +93 -37
  90. data/lib/square/locations/types/create_checkout_request.rb +1 -3
  91. data/lib/square/loyalty/accounts/client.rb +109 -44
  92. data/lib/square/loyalty/accounts/types/search_loyalty_accounts_request.rb +1 -3
  93. data/lib/square/loyalty/client.rb +20 -8
  94. data/lib/square/loyalty/programs/client.rb +72 -29
  95. data/lib/square/loyalty/programs/promotions/client.rb +106 -46
  96. data/lib/square/loyalty/rewards/client.rb +96 -38
  97. data/lib/square/loyalty/rewards/types/search_loyalty_rewards_request.rb +1 -3
  98. data/lib/square/merchants/client.rb +60 -31
  99. data/lib/square/merchants/custom_attribute_definitions/client.rb +137 -65
  100. data/lib/square/merchants/custom_attribute_definitions/types/create_merchant_custom_attribute_definition_request.rb +1 -3
  101. data/lib/square/merchants/custom_attribute_definitions/types/update_merchant_custom_attribute_definition_request.rb +1 -3
  102. data/lib/square/merchants/custom_attributes/client.rb +156 -68
  103. data/lib/square/merchants/custom_attributes/types/bulk_delete_merchant_custom_attributes_request.rb +1 -3
  104. data/lib/square/merchants/custom_attributes/types/bulk_upsert_merchant_custom_attributes_request.rb +1 -3
  105. data/lib/square/o_auth/client.rb +76 -31
  106. data/lib/square/o_auth/types/obtain_token_request.rb +1 -0
  107. data/lib/square/orders/client.rb +156 -63
  108. data/lib/square/orders/custom_attribute_definitions/client.rb +137 -65
  109. data/lib/square/orders/custom_attribute_definitions/types/create_order_custom_attribute_definition_request.rb +1 -3
  110. data/lib/square/orders/custom_attribute_definitions/types/update_order_custom_attribute_definition_request.rb +1 -3
  111. data/lib/square/orders/custom_attributes/client.rb +159 -69
  112. data/lib/square/orders/custom_attributes/types/bulk_delete_order_custom_attributes_request.rb +1 -3
  113. data/lib/square/orders/custom_attributes/types/bulk_upsert_order_custom_attributes_request.rb +1 -3
  114. data/lib/square/orders/types/calculate_order_request.rb +1 -3
  115. data/lib/square/payments/client.rb +182 -70
  116. data/lib/square/payouts/client.rb +116 -54
  117. data/lib/square/refunds/client.rb +97 -40
  118. data/lib/square/refunds/types/refund_payment_request.rb +1 -3
  119. data/lib/square/sites/client.rb +26 -11
  120. data/lib/square/snippets/client.rb +73 -28
  121. data/lib/square/subscriptions/client.rb +271 -117
  122. data/lib/square/team/client.rb +81 -36
  123. data/lib/square/team_members/client.rb +119 -49
  124. data/lib/square/team_members/types/batch_create_team_members_request.rb +1 -3
  125. data/lib/square/team_members/types/batch_update_team_members_request.rb +1 -3
  126. data/lib/square/team_members/wage_setting/client.rb +48 -19
  127. data/lib/square/terminal/actions/client.rb +75 -30
  128. data/lib/square/terminal/checkouts/client.rb +76 -30
  129. data/lib/square/terminal/client.rb +60 -23
  130. data/lib/square/terminal/refunds/client.rb +78 -31
  131. data/lib/square/transfer_orders/client.rb +26 -21
  132. data/lib/square/types/address.rb +2 -1
  133. data/lib/square/types/application_details.rb +1 -3
  134. data/lib/square/types/application_type.rb +23 -0
  135. data/lib/square/types/availability.rb +3 -4
  136. data/lib/square/types/bank_account.rb +1 -0
  137. data/lib/square/types/batch_create_team_members_response.rb +1 -3
  138. data/lib/square/types/batch_create_vendors_response.rb +1 -3
  139. data/lib/square/types/batch_get_catalog_objects_response.rb +1 -3
  140. data/lib/square/types/batch_get_vendors_response.rb +1 -3
  141. data/lib/square/types/batch_update_team_members_response.rb +1 -3
  142. data/lib/square/types/batch_update_vendors_response.rb +1 -3
  143. data/lib/square/types/batch_upsert_catalog_objects_response.rb +1 -3
  144. data/lib/square/types/batch_upsert_customer_custom_attributes_request_customer_custom_attribute_upsert_request.rb +2 -1
  145. data/lib/square/types/batch_upsert_customer_custom_attributes_response.rb +4 -4
  146. data/lib/square/types/batch_upsert_customer_custom_attributes_response_customer_custom_attribute_upsert_response.rb +3 -1
  147. data/lib/square/types/booking.rb +2 -6
  148. data/lib/square/types/booking_created_event.rb +2 -1
  149. data/lib/square/types/booking_custom_attribute_definition_visible_created_event.rb +2 -1
  150. data/lib/square/types/booking_custom_attribute_definition_visible_deleted_event.rb +2 -1
  151. data/lib/square/types/booking_custom_attribute_definition_visible_updated_event.rb +2 -1
  152. data/lib/square/types/booking_custom_attribute_delete_request.rb +4 -2
  153. data/lib/square/types/booking_custom_attribute_delete_response.rb +3 -1
  154. data/lib/square/types/booking_custom_attribute_upsert_request.rb +2 -1
  155. data/lib/square/types/booking_custom_attribute_upsert_response.rb +3 -1
  156. data/lib/square/types/booking_updated_event.rb +2 -1
  157. data/lib/square/types/bulk_create_customers_response.rb +1 -3
  158. data/lib/square/types/bulk_delete_booking_custom_attributes_response.rb +4 -4
  159. data/lib/square/types/bulk_delete_customers_response.rb +1 -3
  160. data/lib/square/types/bulk_delete_location_custom_attributes_request_location_custom_attribute_delete_request.rb +2 -1
  161. data/lib/square/types/bulk_delete_location_custom_attributes_response.rb +4 -4
  162. data/lib/square/types/bulk_delete_location_custom_attributes_response_location_custom_attribute_delete_response.rb +2 -1
  163. data/lib/square/types/bulk_delete_merchant_custom_attributes_request_merchant_custom_attribute_delete_request.rb +2 -1
  164. data/lib/square/types/bulk_delete_merchant_custom_attributes_response.rb +4 -4
  165. data/lib/square/types/bulk_delete_merchant_custom_attributes_response_merchant_custom_attribute_delete_response.rb +2 -1
  166. data/lib/square/types/bulk_delete_order_custom_attributes_response.rb +1 -3
  167. data/lib/square/types/bulk_publish_scheduled_shifts_response.rb +1 -3
  168. data/lib/square/types/bulk_retrieve_bookings_response.rb +1 -3
  169. data/lib/square/types/bulk_retrieve_channels_request_constants.rb +23 -0
  170. data/lib/square/types/bulk_retrieve_channels_response.rb +1 -3
  171. data/lib/square/types/bulk_retrieve_customers_response.rb +1 -3
  172. data/lib/square/types/bulk_retrieve_team_member_booking_profiles_response.rb +3 -4
  173. data/lib/square/types/bulk_update_customers_response.rb +1 -3
  174. data/lib/square/types/bulk_upsert_booking_custom_attributes_response.rb +4 -4
  175. data/lib/square/types/bulk_upsert_location_custom_attributes_request_location_custom_attribute_upsert_request.rb +2 -1
  176. data/lib/square/types/bulk_upsert_location_custom_attributes_response.rb +4 -4
  177. data/lib/square/types/bulk_upsert_location_custom_attributes_response_location_custom_attribute_upsert_response.rb +3 -1
  178. data/lib/square/types/bulk_upsert_merchant_custom_attributes_request_merchant_custom_attribute_upsert_request.rb +2 -1
  179. data/lib/square/types/bulk_upsert_merchant_custom_attributes_response.rb +4 -4
  180. data/lib/square/types/bulk_upsert_merchant_custom_attributes_response_merchant_custom_attribute_upsert_response.rb +3 -1
  181. data/lib/square/types/bulk_upsert_order_custom_attributes_response.rb +1 -3
  182. data/lib/square/types/business_appointment_settings.rb +4 -12
  183. data/lib/square/types/business_booking_profile.rb +2 -6
  184. data/lib/square/types/buy_now_pay_later_details.rb +1 -0
  185. data/lib/square/types/card.rb +2 -0
  186. data/lib/square/types/card_issuer_alert.rb +23 -0
  187. data/lib/square/types/catalog_category.rb +1 -3
  188. data/lib/square/types/catalog_custom_attribute_definition.rb +6 -18
  189. data/lib/square/types/catalog_custom_attribute_definition_selection_config.rb +1 -3
  190. data/lib/square/types/catalog_id_mapping.rb +1 -1
  191. data/lib/square/types/catalog_info_response.rb +1 -3
  192. data/lib/square/types/catalog_item.rb +6 -12
  193. data/lib/square/types/catalog_item_food_and_beverage_details.rb +2 -6
  194. data/lib/square/types/catalog_item_food_and_beverage_details_dietary_preference.rb +2 -6
  195. data/lib/square/types/catalog_item_food_and_beverage_details_ingredient.rb +2 -6
  196. data/lib/square/types/catalog_item_modifier_list_info.rb +6 -9
  197. data/lib/square/types/catalog_item_variation.rb +17 -13
  198. data/lib/square/types/catalog_modifier.rb +4 -4
  199. data/lib/square/types/catalog_modifier_list.rb +4 -2
  200. data/lib/square/types/catalog_modifier_override.rb +2 -2
  201. data/lib/square/types/catalog_modifier_toggle_override_type.rb +13 -0
  202. data/lib/square/types/catalog_object.rb +7 -3
  203. data/lib/square/types/catalog_object_base.rb +2 -4
  204. data/lib/square/types/catalog_object_category.rb +3 -4
  205. data/lib/square/types/catalog_object_custom_attribute_definition.rb +1 -3
  206. data/lib/square/types/catalog_object_quick_amounts_settings.rb +1 -3
  207. data/lib/square/types/catalog_object_reference.rb +1 -1
  208. data/lib/square/types/catalog_object_subscription_plan_variation.rb +1 -3
  209. data/lib/square/types/catalog_query.rb +11 -13
  210. data/lib/square/types/catalog_query_prefix.rb +2 -1
  211. data/lib/square/types/catalog_query_text.rb +2 -1
  212. data/lib/square/types/catalog_subscription_plan.rb +5 -5
  213. data/lib/square/types/catalog_subscription_plan_variation.rb +4 -2
  214. data/lib/square/types/catalog_v_1_id.rb +1 -1
  215. data/lib/square/types/catalog_version_updated_event_object.rb +1 -3
  216. data/lib/square/types/checkout.rb +1 -3
  217. data/lib/square/types/checkout_location_settings.rb +1 -3
  218. data/lib/square/types/checkout_location_settings_branding.rb +2 -6
  219. data/lib/square/types/checkout_merchant_settings.rb +1 -3
  220. data/lib/square/types/checkout_merchant_settings_payment_methods.rb +4 -12
  221. data/lib/square/types/checkout_merchant_settings_payment_methods_afterpay_clearpay.rb +2 -6
  222. data/lib/square/types/component.rb +4 -12
  223. data/lib/square/types/create_bank_account_response.rb +11 -0
  224. data/lib/square/types/create_booking_custom_attribute_definition_response.rb +4 -4
  225. data/lib/square/types/create_catalog_image_request.rb +1 -1
  226. data/lib/square/types/create_customer_custom_attribute_definition_response.rb +4 -4
  227. data/lib/square/types/create_location_custom_attribute_definition_response.rb +4 -4
  228. data/lib/square/types/create_merchant_custom_attribute_definition_response.rb +4 -4
  229. data/lib/square/types/create_order_custom_attribute_definition_response.rb +1 -3
  230. data/lib/square/types/create_transfer_order_data.rb +3 -4
  231. data/lib/square/types/create_webhook_subscription_response.rb +2 -1
  232. data/lib/square/types/custom_attribute.rb +1 -1
  233. data/lib/square/types/custom_attribute_definition.rb +1 -3
  234. data/lib/square/types/custom_attribute_definition_event_data_object.rb +1 -3
  235. data/lib/square/types/custom_field.rb +2 -1
  236. data/lib/square/types/customer_address_filter.rb +2 -1
  237. data/lib/square/types/customer_created_event.rb +4 -2
  238. data/lib/square/types/customer_created_event_event_context_merge.rb +2 -1
  239. data/lib/square/types/customer_creation_source_filter.rb +1 -3
  240. data/lib/square/types/customer_custom_attribute_filter.rb +2 -1
  241. data/lib/square/types/customer_custom_attribute_filter_value.rb +2 -1
  242. data/lib/square/types/customer_custom_attribute_filters.rb +7 -6
  243. data/lib/square/types/customer_custom_attribute_visible_updated_event.rb +6 -3
  244. data/lib/square/types/customer_deleted_event.rb +4 -2
  245. data/lib/square/types/customer_deleted_event_event_context_merge.rb +2 -1
  246. data/lib/square/types/customer_tax_ids.rb +4 -2
  247. data/lib/square/types/customer_updated_event.rb +4 -2
  248. data/lib/square/types/delete_booking_custom_attribute_definition_response.rb +5 -2
  249. data/lib/square/types/delete_booking_custom_attribute_response.rb +2 -1
  250. data/lib/square/types/delete_customer_custom_attribute_response.rb +2 -1
  251. data/lib/square/types/delete_location_custom_attribute_response.rb +2 -1
  252. data/lib/square/types/delete_merchant_custom_attribute_response.rb +2 -1
  253. data/lib/square/types/delete_subscription_action_response.rb +2 -1
  254. data/lib/square/types/delete_webhook_subscription_response.rb +2 -1
  255. data/lib/square/types/destination_details.rb +1 -3
  256. data/lib/square/types/device_checkout_options.rb +1 -0
  257. data/lib/square/types/device_component_details_ethernet_details.rb +1 -1
  258. data/lib/square/types/device_component_details_wi_fi_details.rb +1 -1
  259. data/lib/square/types/digital_wallet_details.rb +1 -0
  260. data/lib/square/types/disable_bank_account_response.rb +11 -0
  261. data/lib/square/types/dispute.rb +2 -1
  262. data/lib/square/types/dispute_evidence_added_event.rb +2 -1
  263. data/lib/square/types/dispute_evidence_created_event.rb +2 -1
  264. data/lib/square/types/employee_wage.rb +2 -1
  265. data/lib/square/types/error_code.rb +2 -0
  266. data/lib/square/types/event_data.rb +1 -3
  267. data/lib/square/types/fulfillment.rb +4 -7
  268. data/lib/square/types/fulfillment_delivery_details.rb +1 -3
  269. data/lib/square/types/fulfillment_pickup_details.rb +1 -3
  270. data/lib/square/types/get_bank_account_response.rb +1 -1
  271. data/lib/square/types/get_booking_request.rb +23 -0
  272. data/lib/square/types/get_business_booking_profile_request.rb +23 -0
  273. data/lib/square/types/get_card_request.rb +23 -0
  274. data/lib/square/types/get_catalog_object_response.rb +1 -3
  275. data/lib/square/types/get_customer_custom_attribute_definition_response.rb +4 -4
  276. data/lib/square/types/get_customer_custom_attribute_response.rb +2 -1
  277. data/lib/square/types/get_customer_group_request.rb +23 -0
  278. data/lib/square/types/get_customer_request.rb +23 -0
  279. data/lib/square/types/get_customer_segment_request.rb +23 -0
  280. data/lib/square/types/get_dispute_evidence_request.rb +23 -0
  281. data/lib/square/types/get_dispute_request.rb +23 -0
  282. data/lib/square/types/get_employee_request.rb +23 -0
  283. data/lib/square/types/get_gift_card_request.rb +23 -0
  284. data/lib/square/types/get_inventory_adjustment_request.rb +23 -0
  285. data/lib/square/types/get_inventory_physical_count_request.rb +23 -0
  286. data/lib/square/types/get_inventory_transfer_request.rb +23 -0
  287. data/lib/square/types/get_location_request.rb +23 -0
  288. data/lib/square/types/get_loyalty_account_request.rb +23 -0
  289. data/lib/square/types/get_loyalty_program_request.rb +23 -0
  290. data/lib/square/types/get_loyalty_promotion_request.rb +23 -0
  291. data/lib/square/types/get_loyalty_reward_request.rb +23 -0
  292. data/lib/square/types/get_merchant_request.rb +23 -0
  293. data/lib/square/types/get_order_request.rb +23 -0
  294. data/lib/square/types/get_payment_link_request.rb +23 -0
  295. data/lib/square/types/get_snippet_request.rb +23 -0
  296. data/lib/square/types/get_team_member_booking_profile_request.rb +23 -0
  297. data/lib/square/types/get_team_member_booking_profile_response.rb +1 -3
  298. data/lib/square/types/get_team_member_request.rb +23 -0
  299. data/lib/square/types/get_transaction_request.rb +23 -0
  300. data/lib/square/types/get_vendor_request.rb +23 -0
  301. data/lib/square/types/get_wage_setting_request.rb +23 -0
  302. data/lib/square/types/get_webhook_subscription_request.rb +23 -0
  303. data/lib/square/types/get_webhook_subscription_response.rb +2 -1
  304. data/lib/square/types/gift_card_activity.rb +8 -24
  305. data/lib/square/types/gift_card_activity_block_reason.rb +23 -0
  306. data/lib/square/types/gift_card_activity_unblock_reason.rb +23 -0
  307. data/lib/square/types/gift_card_activity_updated_event.rb +2 -1
  308. data/lib/square/types/inventory_count_updated_event_object.rb +1 -3
  309. data/lib/square/types/invoice.rb +6 -13
  310. data/lib/square/types/invoice_accepted_payment_methods.rb +2 -1
  311. data/lib/square/types/invoice_attachment.rb +1 -1
  312. data/lib/square/types/invoice_custom_field.rb +2 -1
  313. data/lib/square/types/invoice_payment_made_event.rb +2 -1
  314. data/lib/square/types/invoice_payment_request.rb +6 -8
  315. data/lib/square/types/invoice_refunded_event.rb +2 -1
  316. data/lib/square/types/invoice_sort_field.rb +23 -0
  317. data/lib/square/types/labor_scheduled_shift_created_event_object.rb +1 -1
  318. data/lib/square/types/labor_scheduled_shift_published_event_object.rb +1 -1
  319. data/lib/square/types/labor_scheduled_shift_updated_event_object.rb +1 -1
  320. data/lib/square/types/list_bank_accounts_response.rb +1 -1
  321. data/lib/square/types/list_booking_custom_attribute_definitions_response.rb +4 -4
  322. data/lib/square/types/list_booking_custom_attributes_response.rb +3 -4
  323. data/lib/square/types/list_cash_drawer_shift_events_response.rb +1 -3
  324. data/lib/square/types/list_cash_drawer_shifts_response.rb +1 -3
  325. data/lib/square/types/list_channels_request_constants.rb +23 -0
  326. data/lib/square/types/list_customer_custom_attribute_definitions_response.rb +4 -4
  327. data/lib/square/types/list_customer_custom_attributes_response.rb +3 -4
  328. data/lib/square/types/list_gift_card_activities_response.rb +1 -3
  329. data/lib/square/types/list_location_booking_profiles_response.rb +1 -3
  330. data/lib/square/types/list_location_custom_attribute_definitions_response.rb +4 -4
  331. data/lib/square/types/list_location_custom_attributes_response.rb +3 -4
  332. data/lib/square/types/list_loyalty_promotions_response.rb +1 -3
  333. data/lib/square/types/list_merchant_custom_attribute_definitions_response.rb +4 -4
  334. data/lib/square/types/list_merchant_custom_attributes_response.rb +3 -4
  335. data/lib/square/types/list_order_custom_attribute_definitions_response.rb +1 -3
  336. data/lib/square/types/list_order_custom_attributes_response.rb +1 -3
  337. data/lib/square/types/list_subscription_events_response.rb +1 -3
  338. data/lib/square/types/list_team_member_booking_profiles_response.rb +1 -3
  339. data/lib/square/types/list_team_member_wages_response.rb +1 -3
  340. data/lib/square/types/list_webhook_subscriptions_response.rb +1 -3
  341. data/lib/square/types/list_workweek_configs_response.rb +1 -3
  342. data/lib/square/types/location.rb +1 -3
  343. data/lib/square/types/location_booking_profile.rb +2 -1
  344. data/lib/square/types/location_custom_attribute_visible_updated_event.rb +6 -3
  345. data/lib/square/types/loyalty_account.rb +1 -3
  346. data/lib/square/types/loyalty_account_mapping_type.rb +23 -0
  347. data/lib/square/types/loyalty_event.rb +3 -4
  348. data/lib/square/types/loyalty_event_filter.rb +1 -3
  349. data/lib/square/types/loyalty_program.rb +4 -7
  350. data/lib/square/types/loyalty_program_accrual_rule.rb +3 -4
  351. data/lib/square/types/loyalty_program_reward_tier.rb +3 -1
  352. data/lib/square/types/loyalty_promotion_incentive.rb +2 -6
  353. data/lib/square/types/loyalty_promotion_incentive_points_addition_data.rb +2 -1
  354. data/lib/square/types/loyalty_promotion_incentive_points_multiplier_data.rb +2 -1
  355. data/lib/square/types/loyalty_promotion_trigger_limit.rb +2 -1
  356. data/lib/square/types/loyalty_reward.rb +4 -2
  357. data/lib/square/types/measurement_unit_generic.rb +23 -0
  358. data/lib/square/types/oauth_authorization_revoked_event_object.rb +1 -3
  359. data/lib/square/types/oauth_authorization_revoked_event_revocation_object.rb +1 -3
  360. data/lib/square/types/order.rb +2 -6
  361. data/lib/square/types/order_card_surcharge_treatment_type.rb +12 -0
  362. data/lib/square/types/order_custom_attribute_definition_owned_created_event.rb +2 -1
  363. data/lib/square/types/order_custom_attribute_definition_owned_deleted_event.rb +2 -1
  364. data/lib/square/types/order_custom_attribute_definition_owned_updated_event.rb +2 -1
  365. data/lib/square/types/order_custom_attribute_definition_visible_created_event.rb +2 -1
  366. data/lib/square/types/order_custom_attribute_definition_visible_deleted_event.rb +2 -1
  367. data/lib/square/types/order_custom_attribute_definition_visible_updated_event.rb +2 -1
  368. data/lib/square/types/order_custom_attribute_owned_deleted_event.rb +2 -1
  369. data/lib/square/types/order_custom_attribute_owned_updated_event.rb +2 -1
  370. data/lib/square/types/order_custom_attribute_visible_deleted_event.rb +2 -1
  371. data/lib/square/types/order_custom_attribute_visible_updated_event.rb +2 -1
  372. data/lib/square/types/order_fulfillment_updated.rb +1 -3
  373. data/lib/square/types/order_line_item.rb +4 -12
  374. data/lib/square/types/order_line_item_applied_tax.rb +1 -0
  375. data/lib/square/types/order_line_item_pricing_blocklists.rb +3 -6
  376. data/lib/square/types/order_line_item_pricing_blocklists_blocked_service_charge.rb +14 -0
  377. data/lib/square/types/order_return.rb +3 -9
  378. data/lib/square/types/order_return_line_item.rb +4 -12
  379. data/lib/square/types/order_return_service_charge.rb +3 -6
  380. data/lib/square/types/order_service_charge.rb +2 -6
  381. data/lib/square/types/payment.rb +1 -3
  382. data/lib/square/types/payment_link_related_resources.rb +1 -3
  383. data/lib/square/types/payment_refund.rb +1 -3
  384. data/lib/square/types/payout_entry.rb +24 -72
  385. data/lib/square/types/pre_populated_data.rb +2 -1
  386. data/lib/square/types/product_type.rb +23 -0
  387. data/lib/square/types/refund.rb +1 -3
  388. data/lib/square/types/retrieve_booking_custom_attribute_definition_response.rb +4 -4
  389. data/lib/square/types/retrieve_booking_custom_attribute_response.rb +2 -1
  390. data/lib/square/types/retrieve_location_custom_attribute_definition_response.rb +4 -4
  391. data/lib/square/types/retrieve_location_custom_attribute_response.rb +2 -1
  392. data/lib/square/types/retrieve_merchant_custom_attribute_definition_response.rb +4 -4
  393. data/lib/square/types/retrieve_merchant_custom_attribute_response.rb +2 -1
  394. data/lib/square/types/retrieve_order_custom_attribute_definition_response.rb +1 -3
  395. data/lib/square/types/scheduled_shift_filter.rb +3 -7
  396. data/lib/square/types/scheduled_shift_workday.rb +1 -3
  397. data/lib/square/types/search_availability_filter.rb +1 -3
  398. data/lib/square/types/search_catalog_items_response.rb +2 -1
  399. data/lib/square/types/search_catalog_objects_response.rb +1 -3
  400. data/lib/square/types/search_events_sort_field.rb +23 -0
  401. data/lib/square/types/search_loyalty_accounts_request_loyalty_account_query.rb +1 -3
  402. data/lib/square/types/search_loyalty_accounts_response.rb +1 -3
  403. data/lib/square/types/search_orders_date_time_filter.rb +2 -1
  404. data/lib/square/types/search_orders_fulfillment_filter.rb +2 -6
  405. data/lib/square/types/search_orders_source_filter.rb +2 -0
  406. data/lib/square/types/search_scheduled_shifts_response.rb +1 -3
  407. data/lib/square/types/search_transfer_orders_response.rb +1 -3
  408. data/lib/square/types/shift_filter.rb +3 -2
  409. data/lib/square/types/shift_query.rb +2 -1
  410. data/lib/square/types/shift_sort.rb +2 -1
  411. data/lib/square/types/shift_wage.rb +2 -1
  412. data/lib/square/types/shift_workday.rb +2 -1
  413. data/lib/square/types/snippet.rb +2 -1
  414. data/lib/square/types/standard_unit_description_group.rb +1 -3
  415. data/lib/square/types/subscription_event.rb +1 -3
  416. data/lib/square/types/subscription_phase.rb +2 -1
  417. data/lib/square/types/subscription_test_result.rb +5 -3
  418. data/lib/square/types/team_member_assigned_locations.rb +1 -3
  419. data/lib/square/types/team_member_booking_profile.rb +2 -1
  420. data/lib/square/types/tender.rb +2 -6
  421. data/lib/square/types/tender_buy_now_pay_later_details.rb +1 -3
  422. data/lib/square/types/terminal_refund.rb +2 -1
  423. data/lib/square/types/test_webhook_subscription_response.rb +5 -5
  424. data/lib/square/types/timecard_filter.rb +1 -1
  425. data/lib/square/types/transfer_order.rb +1 -3
  426. data/lib/square/types/transfer_order_filter.rb +1 -3
  427. data/lib/square/types/transfer_order_goods_receipt.rb +1 -3
  428. data/lib/square/types/update_booking_custom_attribute_definition_response.rb +4 -4
  429. data/lib/square/types/update_customer_custom_attribute_definition_response.rb +4 -4
  430. data/lib/square/types/update_location_custom_attribute_definition_response.rb +4 -4
  431. data/lib/square/types/update_merchant_custom_attribute_definition_response.rb +4 -4
  432. data/lib/square/types/update_order_custom_attribute_definition_response.rb +1 -3
  433. data/lib/square/types/update_transfer_order_data.rb +1 -3
  434. data/lib/square/types/update_webhook_subscription_response.rb +2 -1
  435. data/lib/square/types/update_webhook_subscription_signature_key_response.rb +3 -1
  436. data/lib/square/types/upsert_booking_custom_attribute_response.rb +2 -1
  437. data/lib/square/types/upsert_catalog_object_response.rb +1 -3
  438. data/lib/square/types/upsert_customer_custom_attribute_response.rb +2 -1
  439. data/lib/square/types/upsert_location_custom_attribute_response.rb +2 -1
  440. data/lib/square/types/upsert_merchant_custom_attribute_response.rb +2 -1
  441. data/lib/square/types/v_1_get_payment_request.rb +23 -0
  442. data/lib/square/types/v_1_get_settlement_request.rb +23 -0
  443. data/lib/square/types/v_1_order.rb +1 -3
  444. data/lib/square/types/vendor_created_event_object_operation.rb +23 -0
  445. data/lib/square/types/vendor_updated_event_object_operation.rb +23 -0
  446. data/lib/square/types/wage_setting.rb +1 -3
  447. data/lib/square/v_1_transactions/client.rb +72 -29
  448. data/lib/square/vendors/client.rb +126 -51
  449. data/lib/square/vendors/types/batch_update_vendors_request.rb +1 -3
  450. data/lib/square/version.rb +1 -1
  451. data/lib/square/webhooks/client.rb +3 -1
  452. data/lib/square/webhooks/event_types/client.rb +25 -14
  453. data/lib/square/webhooks/subscriptions/client.rb +164 -69
  454. data/lib/square.rb +57 -5
  455. data/lib/square_legacy/utilities/webhooks_helper.rb +1 -1
  456. data/reference.md +29588 -0
  457. data/wiremock/docker-compose.test.yml +14 -0
  458. data/wiremock/wiremock-mappings.json +1 -0
  459. metadata +69 -45
  460. data/lib/square/mobile/client.rb +0 -50
  461. data/lib/square/mobile/types/create_mobile_authorization_code_request.rb +0 -11
  462. data/lib/square/types/create_mobile_authorization_code_response.rb +0 -13
  463. data/test/square/integration/client_tests/test_cash_drawers.rb +0 -27
  464. data/test/square/integration/client_tests/test_catalog.rb +0 -704
  465. data/test/square/integration/client_tests/test_customers.rb +0 -65
  466. data/test/square/integration/client_tests/test_customers_groups.rb +0 -144
  467. data/test/square/integration/client_tests/test_customers_segments.rb +0 -36
  468. data/test/square/integration/client_tests/test_devices.rb +0 -67
  469. data/test/square/integration/client_tests/test_inventory.rb +0 -28
  470. data/test/square/integration/client_tests/test_locations.rb +0 -18
  471. data/test/square/integration/client_tests/test_merchants.rb +0 -40
  472. data/test/square/integration/client_tests/test_mobile.rb +0 -21
  473. data/test/square/integration/client_tests/test_orders.rb +0 -177
  474. data/test/square/integration/client_tests/test_payments.rb +0 -167
  475. data/test/square/integration/client_tests/test_refunds.rb +0 -133
  476. data/test/square/integration/client_tests/test_team_members.rb +0 -97
  477. data/test/square/integration/client_tests/test_terminal.rb +0 -107
  478. data/test/square/integration/integration_test_base.rb +0 -16
  479. data/test/square/integration/testdata/image.jpeg +0 -0
  480. data/test/square/internal/multipart/test_form_data.rb +0 -311
  481. data/test/square/internal/types/test_array.rb +0 -37
  482. data/test/square/internal/types/test_boolean.rb +0 -35
  483. data/test/square/internal/types/test_enum.rb +0 -42
  484. data/test/square/internal/types/test_hash.rb +0 -50
  485. data/test/square/internal/types/test_model.rb +0 -105
  486. data/test/square/internal/types/test_union.rb +0 -52
  487. data/test/square/internal/types/test_utils.rb +0 -216
  488. data/test/square_legacy/api/api_test_base.rb +0 -27
  489. data/test/square_legacy/api/test_catalog_api.rb +0 -57
  490. data/test/square_legacy/api/test_customers_api.rb +0 -43
  491. data/test/square_legacy/api/test_employees_api.rb +0 -34
  492. data/test/square_legacy/api/test_labor_api.rb +0 -82
  493. data/test/square_legacy/api/test_locations_api.rb +0 -22
  494. data/test/square_legacy/api/test_merchants_api.rb +0 -38
  495. data/test/square_legacy/api/test_payments_api.rb +0 -40
  496. data/test/square_legacy/api/test_refunds_api.rb +0 -42
  497. data/test/square_legacy/http_response_catcher.rb +0 -14
  498. data/test/square_legacy/webhooks/test_webhooks_helper.rb +0 -153
  499. data/test/test_helper.rb +0 -123
@@ -1,311 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "minitest/autorun"
4
- require "stringio"
5
- require "json"
6
- require "test_helper"
7
-
8
- class MockFile
9
- attr_reader :name, :content, :content_type
10
-
11
- def initialize(name:, content:, content_type: nil)
12
- @name = name
13
- @content = content
14
- @content_type = content_type
15
- end
16
-
17
- def read
18
- @content
19
- end
20
- end
21
-
22
- class MultipartTest < Minitest::Test
23
- def test_empty_form_data
24
- form_data = Square::Internal::Multipart::FormData.new
25
- body = form_data.encode
26
-
27
- assert_equal "", body
28
- end
29
-
30
- def test_write_field
31
- [
32
- {
33
- desc: "empty field",
34
- field: "empty",
35
- value: ""
36
- },
37
- {
38
- desc: "simple field",
39
- field: "greeting",
40
- value: "hello world"
41
- },
42
- {
43
- desc: "field with content type",
44
- field: "message",
45
- value: "hello",
46
- content_type: "text/plain"
47
- }
48
- ].each do |test_case|
49
- form_data = Square::Internal::Multipart::FormData.new
50
- content_type_arg = test_case[:content_type]
51
-
52
- form_data.add(
53
- name: test_case[:field],
54
- value: test_case[:value],
55
- content_type: content_type_arg
56
- )
57
-
58
- content_type = form_data.content_type
59
- body = form_data.encode
60
-
61
- # Extract the boundary from the content type
62
- boundary = content_type.match(/boundary=([^;]+)/)[1]
63
-
64
- # Verify the field was encoded properly
65
- assert_includes body, "--#{boundary}"
66
- assert_includes body, "Content-Disposition: form-data; name=\"#{test_case[:field]}\""
67
-
68
- assert_includes body, "Content-Type: #{content_type_arg}" if content_type_arg
69
-
70
- assert_includes body, test_case[:value]
71
- end
72
- end
73
-
74
- def test_write_file_param
75
- [
76
- {
77
- desc: "file param with content type",
78
- field: "file",
79
- filename: "test.txt",
80
- content: "hello world",
81
- content_type: "text/plain"
82
- },
83
- {
84
- desc: "file param with override content type",
85
- field: "file",
86
- filename: "test.txt",
87
- content: "hello world",
88
- content_type: "text/plain",
89
- override_content_type: "application/octet-stream"
90
- }
91
- ].each do |test_case|
92
- form_data = Square::Internal::Multipart::FormData.new
93
-
94
- file_param = Square::FileParam.from_string(
95
- content: test_case[:content],
96
- filename: test_case[:filename],
97
- content_type: test_case[:content_type]
98
- )
99
-
100
- form_data.add_part(
101
- file_param.to_form_data_part(
102
- name: test_case[:field],
103
- content_type: test_case[:override_content_type]
104
- )
105
- )
106
-
107
- content_type = form_data.content_type
108
- body = form_data.encode
109
-
110
- # Extract the boundary from the content type
111
- boundary = content_type.match(/boundary=([^;]+)/)[1]
112
-
113
- # Verify the file param was encoded properly
114
- assert_includes body, "--#{boundary}"
115
- assert_includes body,
116
- "Content-Disposition: form-data; name=\"#{test_case[:field]}\"; filename=\"#{test_case[:filename]}\""
117
-
118
- expected_content_type = test_case[:override_content_type] || test_case[:content_type]
119
- assert_includes body, "Content-Type: #{expected_content_type}" if expected_content_type
120
-
121
- assert_includes body, test_case[:content]
122
- end
123
- end
124
-
125
- def test_write_json
126
- [
127
- {
128
- desc: "struct",
129
- field: "data",
130
- value: { name: "test", value: 123 }
131
- },
132
- {
133
- desc: "map",
134
- field: "data",
135
- value: { key: "value" }
136
- }
137
- ].each do |test_case|
138
- form_data = Square::Internal::Multipart::FormData.new
139
-
140
- form_data.add(
141
- name: test_case[:field],
142
- value: test_case[:value].to_json,
143
- content_type: "application/json"
144
- )
145
-
146
- content_type = form_data.content_type
147
- body = form_data.encode
148
-
149
- # Extract the boundary from the content type
150
- boundary = content_type.match(/boundary=([^;]+)/)[1]
151
-
152
- # Verify the JSON was encoded properly
153
- assert_includes body, "--#{boundary}"
154
- assert_includes body, "Content-Disposition: form-data; name=\"#{test_case[:field]}\""
155
- assert_includes body, "Content-Type: application/json"
156
- assert_includes body, test_case[:value].to_json
157
- end
158
- end
159
-
160
- def test_complex_form
161
- form_data = Square::Internal::Multipart::FormData.new
162
-
163
- # Add multiple fields and files
164
- form_data.add(name: "foo", value: "bar")
165
- form_data.add(name: "baz", value: "qux")
166
-
167
- part = Square::FileParam.from_string(
168
- content: "Hello, world!",
169
- filename: "file.txt",
170
- content_type: "text/plain"
171
- )
172
-
173
- form_data.add_part(part.to_form_data_part(name: "file"))
174
- form_data.add(name: "data", value: { key: "value" }.to_json, content_type: "application/json")
175
-
176
- content_type = form_data.content_type
177
- body = form_data.encode
178
-
179
- # Extract the boundary from the content type
180
- boundary = content_type.match(/boundary=([^;]+)/)[1]
181
-
182
- # Verify all parts are in the body
183
- assert_includes body, "--#{boundary}"
184
- assert_includes body, "Content-Disposition: form-data; name=\"foo\""
185
- assert_includes body, "bar"
186
- assert_includes body, "Content-Disposition: form-data; name=\"baz\""
187
- assert_includes body, "qux"
188
- assert_includes body, "Content-Disposition: form-data; name=\"file\"; filename=\"file.txt\""
189
- assert_includes body, "Content-Type: text/plain"
190
- assert_includes body, "Hello, world!"
191
- assert_includes body, "Content-Disposition: form-data; name=\"data\""
192
- assert_includes body, "Content-Type: application/json"
193
- assert_includes body, "{\"key\":\"value\"}"
194
- end
195
-
196
- def test_file_param_from_filepath
197
- # Create a temporary file for testing
198
- file_content = "Test file content"
199
- temp_file = Tempfile.new(["test", ".txt"])
200
- begin
201
- temp_file.write(file_content)
202
- temp_file.rewind
203
-
204
- file_param = Square::FileParam.from_filepath(
205
- filepath: temp_file.path,
206
- content_type: "text/plain"
207
- )
208
-
209
- # Verify the file param was created properly
210
- form_data = Square::Internal::Multipart::FormData.new
211
- form_data.add_part(file_param.to_form_data_part(name: "file"))
212
-
213
- content_type = form_data.content_type
214
- body = form_data.encode
215
-
216
- # Extract the boundary from the content type
217
- boundary = content_type.match(/boundary=([^;]+)/)[1]
218
-
219
- # Verify the file was encoded properly
220
- assert_includes body, "--#{boundary}"
221
- assert_includes body,
222
- "Content-Disposition: form-data; name=\"file\"; filename=\"#{File.basename(temp_file.path)}\""
223
- assert_includes body, "Content-Type: text/plain"
224
- assert_includes body, file_content
225
- ensure
226
- # Close and delete the temporary file
227
- temp_file.close
228
- temp_file.unlink
229
- end
230
- end
231
-
232
- def test_file_param_from_string
233
- file_content = "Test string content"
234
- filename = "string.txt"
235
- content_type = "text/plain"
236
-
237
- file_param = Square::FileParam.from_string(
238
- content: file_content,
239
- filename: filename,
240
- content_type: content_type
241
- )
242
-
243
- # Verify the file param was created properly
244
- form_data = Square::Internal::Multipart::FormData.new
245
- form_data.add_part(file_param.to_form_data_part(name: "file"))
246
-
247
- content_type = form_data.content_type
248
- body = form_data.encode
249
-
250
- # Extract the boundary from the content type
251
- boundary = content_type.match(/boundary=([^;]+)/)[1]
252
-
253
- # Verify the file was encoded properly
254
- assert_includes body, "--#{boundary}"
255
- assert_includes body, "Content-Disposition: form-data; name=\"file\"; filename=\"#{filename}\""
256
- assert_includes body, "Content-Type: text/plain"
257
- assert_includes body, file_content
258
- end
259
-
260
- def test_encoder_file_reading_in_chunks
261
- file_size = 1024 * 100 # 100KB
262
- large_content = "x" * file_size
263
-
264
- temp_file = Tempfile.new(["large", ".dat"])
265
- begin
266
- temp_file.write(large_content)
267
- temp_file.rewind
268
-
269
- form_data = Square::Internal::Multipart::FormData.new
270
- form_data.add_file(
271
- name: "large_file",
272
- file: temp_file,
273
- content_type: "application/octet-stream"
274
- )
275
-
276
- content_type = form_data.content_type
277
- body = form_data.encode
278
-
279
- boundary = content_type.match(/boundary=([^;]+)/)[1]
280
-
281
- assert_includes body, "--#{boundary}"
282
- assert_includes body,
283
- "Content-Disposition: form-data; name=\"large_file\"; filename=\"#{File.basename(temp_file.path)}\""
284
- assert_includes body, "Content-Type: application/octet-stream"
285
-
286
- content_start = body.index("Content-Type: application/octet-stream\r\n\r\n") +
287
- "Content-Type: application/octet-stream\r\n\r\n".length
288
-
289
- content_end = body.index("\r\n--#{boundary}", content_start)
290
-
291
- actual_content = body[content_start...content_end]
292
-
293
- assert_equal file_size, actual_content.length
294
-
295
- # Verify the content is correct (checking first, middle, and last parts).
296
- assert_equal "x" * 100, actual_content[0...100]
297
- assert_equal "x" * 100, actual_content[((file_size / 2) - 50)...((file_size / 2) + 50)]
298
- assert_equal "x" * 100, actual_content[(file_size - 100)...file_size]
299
- ensure
300
- # Close and delete the temporary file.
301
- temp_file.close
302
- temp_file.unlink
303
- end
304
- end
305
-
306
- def test_error_handling_for_missing_file
307
- assert_raises(StandardError) do
308
- Square::FileParam.from_filepath(filepath: "nonexistent_file.txt")
309
- end
310
- end
311
- end
@@ -1,37 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "test_helper"
4
-
5
- describe Square::Internal::Types::Array do
6
- module TestArray
7
- StringArray = Square::Internal::Types::Array[String]
8
- end
9
-
10
- describe "#initialize" do
11
- it "sets the type" do
12
- assert_equal String, TestArray::StringArray.type
13
- end
14
- end
15
-
16
- describe "#coerce" do
17
- it "does not perform coercion if not an array" do
18
- assert_equal 1, TestArray::StringArray.coerce(1)
19
- end
20
-
21
- it "raises an error if not an array and strictness is on" do
22
- assert_raises Square::Internal::Errors::TypeError do
23
- TestArray::StringArray.coerce(1, strict: true)
24
- end
25
- end
26
-
27
- it "coerces the elements" do
28
- assert_equal %w[foobar 1 true], TestArray::StringArray.coerce(["foobar", 1, true])
29
- end
30
-
31
- it "raises an error if element of array is not coercable and strictness is on" do
32
- assert_raises Square::Internal::Errors::TypeError do
33
- TestArray::StringArray.coerce([Object.new], strict: true)
34
- end
35
- end
36
- end
37
- end
@@ -1,35 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "test_helper"
4
-
5
- describe Square::Internal::Types::Boolean do
6
- describe ".coerce" do
7
- it "coerces true/false" do
8
- assert Square::Internal::Types::Boolean.coerce(true)
9
- refute Square::Internal::Types::Boolean.coerce(false)
10
- end
11
-
12
- it "coerces an Integer" do
13
- assert Square::Internal::Types::Boolean.coerce(1)
14
- refute Square::Internal::Types::Boolean.coerce(0)
15
- end
16
-
17
- it "coerces a String" do
18
- assert Square::Internal::Types::Boolean.coerce("1")
19
- assert Square::Internal::Types::Boolean.coerce("true")
20
- refute Square::Internal::Types::Boolean.coerce("0")
21
- end
22
-
23
- it "passes through other values with strictness off" do
24
- obj = Object.new
25
-
26
- assert_equal obj, Square::Internal::Types::Boolean.coerce(obj)
27
- end
28
-
29
- it "raises an error with other values with strictness on" do
30
- assert_raises Square::Internal::Errors::TypeError do
31
- Square::Internal::Types::Boolean.coerce(Object.new, strict: true)
32
- end
33
- end
34
- end
35
- end
@@ -1,42 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "test_helper"
4
-
5
- describe Square::Internal::Types::Enum do
6
- module EnumTest
7
- module ExampleEnum
8
- extend Square::Internal::Types::Enum
9
-
10
- FOO = :foo
11
- BAR = :bar
12
-
13
- finalize!
14
- end
15
- end
16
-
17
- describe "#values" do
18
- it "defines values" do
19
- assert_equal %i[foo bar].sort, EnumTest::ExampleEnum.values.sort
20
- end
21
- end
22
-
23
- describe "#coerce" do
24
- it "coerces an existing member" do
25
- assert_equal :foo, EnumTest::ExampleEnum.coerce(:foo)
26
- end
27
-
28
- it "coerces a string version of a member" do
29
- assert_equal :foo, EnumTest::ExampleEnum.coerce("foo")
30
- end
31
-
32
- it "returns the value if not a member with strictness off" do
33
- assert_equal 1, EnumTest::ExampleEnum.coerce(1)
34
- end
35
-
36
- it "raises an error if value is not a member with strictness on" do
37
- assert_raises Square::Internal::Errors::TypeError do
38
- EnumTest::ExampleEnum.coerce(1, strict: true)
39
- end
40
- end
41
- end
42
- end
@@ -1,50 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "test_helper"
4
-
5
- describe Square::Internal::Types::Hash do
6
- module TestHash
7
- SymbolStringHash = Square::Internal::Types::Hash[Symbol, String]
8
- end
9
-
10
- describe ".[]" do
11
- it "defines the key and value type" do
12
- assert_equal Symbol, TestHash::SymbolStringHash.key_type
13
- assert_equal String, TestHash::SymbolStringHash.value_type
14
- end
15
- end
16
-
17
- describe "#coerce" do
18
- it "coerces the keys" do
19
- assert_equal %i[foo bar], TestHash::SymbolStringHash.coerce({ "foo" => "1", :bar => "2" }).keys
20
- end
21
-
22
- it "coerces the values" do
23
- assert_equal %w[foo 1], TestHash::SymbolStringHash.coerce({ foo: :foo, bar: 1 }).values
24
- end
25
-
26
- it "passes through other values with strictness off" do
27
- obj = Object.new
28
-
29
- assert_equal obj, TestHash::SymbolStringHash.coerce(obj)
30
- end
31
-
32
- it "raises an error with other values with strictness on" do
33
- assert_raises Square::Internal::Errors::TypeError do
34
- TestHash::SymbolStringHash.coerce(Object.new, strict: true)
35
- end
36
- end
37
-
38
- it "raises an error with non-coercable key types with strictness on" do
39
- assert_raises Square::Internal::Errors::TypeError do
40
- TestHash::SymbolStringHash.coerce({ Object.new => 1 }, strict: true)
41
- end
42
- end
43
-
44
- it "raises an error with non-coercable value types with strictness on" do
45
- assert_raises Square::Internal::Errors::TypeError do
46
- TestHash::SymbolStringHash.coerce({ "foobar" => Object.new }, strict: true)
47
- end
48
- end
49
- end
50
- end
@@ -1,105 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "test_helper"
4
-
5
- describe Square::Internal::Types::Model do
6
- module StringInteger
7
- extend Square::Internal::Types::Union
8
-
9
- member String
10
- member Integer
11
- end
12
-
13
- class ExampleModel < Square::Internal::Types::Model
14
- field :name, String
15
- field :rating, StringInteger, optional: true
16
- field :year, Integer, optional: true, nullable: true, api_name: "yearOfRelease"
17
- end
18
-
19
- class ExampleModelInheritance < ExampleModel
20
- field :director, String
21
- end
22
-
23
- class ExampleWithDefaults < ExampleModel
24
- field :type, String, default: "example"
25
- end
26
-
27
- class ExampleChild < Square::Internal::Types::Model
28
- field :value, String
29
- end
30
-
31
- class ExampleParent < Square::Internal::Types::Model
32
- field :child, ExampleChild
33
- end
34
-
35
- describe ".field" do
36
- before do
37
- @example = ExampleModel.new(name: "Inception", rating: 4)
38
- end
39
-
40
- it "defines fields on model" do
41
- assert_equal %i[name rating year], ExampleModel.fields.keys
42
- end
43
-
44
- it "defines fields from parent models" do
45
- assert_equal %i[name rating year director], ExampleModelInheritance.fields.keys
46
- end
47
-
48
- it "sets the field's type" do
49
- assert_equal String, ExampleModel.fields[:name].type
50
- assert_equal StringInteger, ExampleModel.fields[:rating].type
51
- end
52
-
53
- it "sets the `default` option" do
54
- assert_equal "example", ExampleWithDefaults.fields[:type].default
55
- end
56
-
57
- it "defines the accessors" do
58
- assert_respond_to @example, :name
59
- assert_respond_to @example, :rating
60
- end
61
-
62
- it "defines the setters" do
63
- assert_respond_to @example, :name=
64
- assert_respond_to @example, :rating=
65
- end
66
- end
67
-
68
- describe "#initialize" do
69
- it "sets the data" do
70
- example = ExampleModel.new(name: "Inception", rating: 4)
71
-
72
- assert_equal "Inception", example.name
73
- assert_equal 4, example.rating
74
- end
75
-
76
- it "allows extra fields to be set" do
77
- example = ExampleModel.new(name: "Inception", rating: 4, director: "Christopher Nolan")
78
-
79
- assert_equal "Christopher Nolan", example.director
80
- end
81
-
82
- it "sets the defaults where applicable" do
83
- example_using_defaults = ExampleWithDefaults.new
84
-
85
- assert_equal "example", example_using_defaults.type
86
-
87
- example_without_defaults = ExampleWithDefaults.new(type: "not example")
88
-
89
- assert_equal "not example", example_without_defaults.type
90
- end
91
-
92
- it "coerces child models" do
93
- parent = ExampleParent.new(child: { value: "foobar" })
94
-
95
- assert_kind_of ExampleChild, parent.child
96
- end
97
-
98
- it "uses the api_name to pull the value" do
99
- example = ExampleModel.new({ name: "Inception", yearOfRelease: 2014 })
100
-
101
- assert_equal 2014, example.year
102
- refute_respond_to example, :yearOfRelease
103
- end
104
- end
105
- end
@@ -1,52 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "test_helper"
4
- describe Square::Internal::Types::Union do
5
- class Rectangle < Square::Internal::Types::Model
6
- literal :type, "square"
7
-
8
- field :area, Float
9
- end
10
-
11
- class Circle < Square::Internal::Types::Model
12
- literal :type, "circle"
13
-
14
- field :area, Float
15
- end
16
-
17
- module Shape
18
- extend Square::Internal::Types::Union
19
-
20
- discriminant :type
21
-
22
- member -> { Rectangle }, key: "rect"
23
- member -> { Circle }, key: "circle"
24
- end
25
-
26
- module StringOrInteger
27
- extend Square::Internal::Types::Union
28
-
29
- member String
30
- member Integer
31
- end
32
-
33
- describe "#coerce" do
34
- it "coerces hashes into member models with discriminated unions" do
35
- circle = Shape.coerce({ type: "circle", area: 4.0 })
36
-
37
- assert_instance_of Circle, circle
38
- end
39
- end
40
-
41
- describe "#member" do
42
- it "defines Model members" do
43
- assert Shape.member?(Rectangle)
44
- assert Shape.member?(Circle)
45
- end
46
-
47
- it "defines other members" do
48
- assert StringOrInteger.member?(String)
49
- assert StringOrInteger.member?(Integer)
50
- end
51
- end
52
- end