xero-ruby 2.4.1 → 2.6.2

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 (451) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +34 -5
  3. data/lib/xero-ruby.rb +1 -1
  4. data/lib/xero-ruby/api/accounting_api.rb +6 -1
  5. data/lib/xero-ruby/api/asset_api.rb +0 -1
  6. data/lib/xero-ruby/api/files_api.rb +0 -1
  7. data/lib/xero-ruby/api/payroll_au_api.rb +0 -1
  8. data/lib/xero-ruby/api/payroll_nz_api.rb +0 -1
  9. data/lib/xero-ruby/api/payroll_uk_api.rb +0 -1
  10. data/lib/xero-ruby/api/project_api.rb +0 -1
  11. data/lib/xero-ruby/api_client.rb +34 -27
  12. data/lib/xero-ruby/api_error.rb +3 -3
  13. data/lib/xero-ruby/configuration.rb +0 -1
  14. data/lib/xero-ruby/models/accounting/account.rb +14 -7
  15. data/lib/xero-ruby/models/accounting/account_type.rb +0 -1
  16. data/lib/xero-ruby/models/accounting/accounts.rb +14 -6
  17. data/lib/xero-ruby/models/accounting/accounts_payable.rb +14 -6
  18. data/lib/xero-ruby/models/accounting/accounts_receivable.rb +14 -6
  19. data/lib/xero-ruby/models/accounting/action.rb +14 -6
  20. data/lib/xero-ruby/models/accounting/actions.rb +14 -6
  21. data/lib/xero-ruby/models/accounting/address.rb +16 -9
  22. data/lib/xero-ruby/models/accounting/address_for_organisation.rb +478 -0
  23. data/lib/xero-ruby/models/accounting/allocation.rb +14 -6
  24. data/lib/xero-ruby/models/accounting/allocations.rb +14 -6
  25. data/lib/xero-ruby/models/accounting/attachment.rb +14 -6
  26. data/lib/xero-ruby/models/accounting/attachments.rb +14 -6
  27. data/lib/xero-ruby/models/accounting/balance_details.rb +14 -6
  28. data/lib/xero-ruby/models/accounting/balances.rb +14 -6
  29. data/lib/xero-ruby/models/accounting/bank_transaction.rb +14 -6
  30. data/lib/xero-ruby/models/accounting/bank_transactions.rb +14 -6
  31. data/lib/xero-ruby/models/accounting/bank_transfer.rb +14 -6
  32. data/lib/xero-ruby/models/accounting/bank_transfers.rb +14 -6
  33. data/lib/xero-ruby/models/accounting/batch_payment.rb +14 -6
  34. data/lib/xero-ruby/models/accounting/batch_payment_details.rb +14 -6
  35. data/lib/xero-ruby/models/accounting/batch_payments.rb +14 -6
  36. data/lib/xero-ruby/models/accounting/bill.rb +14 -6
  37. data/lib/xero-ruby/models/accounting/branding_theme.rb +14 -6
  38. data/lib/xero-ruby/models/accounting/branding_themes.rb +14 -6
  39. data/lib/xero-ruby/models/accounting/cis_org_setting.rb +15 -7
  40. data/lib/xero-ruby/models/accounting/cis_setting.rb +15 -7
  41. data/lib/xero-ruby/models/accounting/cis_settings.rb +14 -6
  42. data/lib/xero-ruby/models/accounting/contact.rb +14 -6
  43. data/lib/xero-ruby/models/accounting/contact_group.rb +14 -6
  44. data/lib/xero-ruby/models/accounting/contact_groups.rb +14 -6
  45. data/lib/xero-ruby/models/accounting/contact_person.rb +14 -6
  46. data/lib/xero-ruby/models/accounting/contacts.rb +14 -6
  47. data/lib/xero-ruby/models/accounting/conversion_balances.rb +14 -6
  48. data/lib/xero-ruby/models/accounting/conversion_date.rb +14 -6
  49. data/lib/xero-ruby/models/accounting/country_code.rb +0 -1
  50. data/lib/xero-ruby/models/accounting/credit_note.rb +35 -7
  51. data/lib/xero-ruby/models/accounting/credit_notes.rb +14 -6
  52. data/lib/xero-ruby/models/accounting/currencies.rb +14 -6
  53. data/lib/xero-ruby/models/accounting/currency.rb +14 -6
  54. data/lib/xero-ruby/models/accounting/currency_code.rb +0 -1
  55. data/lib/xero-ruby/models/accounting/element.rb +14 -6
  56. data/lib/xero-ruby/models/accounting/employee.rb +14 -6
  57. data/lib/xero-ruby/models/accounting/employees.rb +14 -6
  58. data/lib/xero-ruby/models/accounting/error.rb +14 -6
  59. data/lib/xero-ruby/models/accounting/expense_claim.rb +14 -6
  60. data/lib/xero-ruby/models/accounting/expense_claims.rb +14 -6
  61. data/lib/xero-ruby/models/accounting/external_link.rb +14 -6
  62. data/lib/xero-ruby/models/accounting/history_record.rb +14 -6
  63. data/lib/xero-ruby/models/accounting/history_records.rb +14 -6
  64. data/lib/xero-ruby/models/accounting/import_summary.rb +14 -6
  65. data/lib/xero-ruby/models/accounting/import_summary_accounts.rb +14 -6
  66. data/lib/xero-ruby/models/accounting/import_summary_object.rb +14 -6
  67. data/lib/xero-ruby/models/accounting/import_summary_organisation.rb +14 -6
  68. data/lib/xero-ruby/models/accounting/invoice.rb +26 -23
  69. data/lib/xero-ruby/models/accounting/invoice_reminder.rb +14 -6
  70. data/lib/xero-ruby/models/accounting/invoice_reminders.rb +14 -6
  71. data/lib/xero-ruby/models/accounting/invoices.rb +14 -6
  72. data/lib/xero-ruby/models/accounting/item.rb +14 -6
  73. data/lib/xero-ruby/models/accounting/items.rb +14 -6
  74. data/lib/xero-ruby/models/accounting/journal.rb +14 -6
  75. data/lib/xero-ruby/models/accounting/journal_line.rb +14 -6
  76. data/lib/xero-ruby/models/accounting/journals.rb +14 -6
  77. data/lib/xero-ruby/models/accounting/line_amount_types.rb +0 -1
  78. data/lib/xero-ruby/models/accounting/line_item.rb +14 -6
  79. data/lib/xero-ruby/models/accounting/line_item_tracking.rb +14 -6
  80. data/lib/xero-ruby/models/accounting/linked_transaction.rb +14 -6
  81. data/lib/xero-ruby/models/accounting/linked_transactions.rb +14 -6
  82. data/lib/xero-ruby/models/accounting/manual_journal.rb +14 -6
  83. data/lib/xero-ruby/models/accounting/manual_journal_line.rb +14 -6
  84. data/lib/xero-ruby/models/accounting/manual_journals.rb +14 -6
  85. data/lib/xero-ruby/models/accounting/online_invoice.rb +14 -6
  86. data/lib/xero-ruby/models/accounting/online_invoices.rb +14 -6
  87. data/lib/xero-ruby/models/accounting/organisation.rb +15 -9
  88. data/lib/xero-ruby/models/accounting/organisations.rb +14 -6
  89. data/lib/xero-ruby/models/accounting/overpayment.rb +14 -6
  90. data/lib/xero-ruby/models/accounting/overpayments.rb +14 -6
  91. data/lib/xero-ruby/models/accounting/payment.rb +14 -6
  92. data/lib/xero-ruby/models/accounting/payment_delete.rb +14 -6
  93. data/lib/xero-ruby/models/accounting/payment_service.rb +14 -6
  94. data/lib/xero-ruby/models/accounting/payment_services.rb +14 -6
  95. data/lib/xero-ruby/models/accounting/payment_term.rb +14 -6
  96. data/lib/xero-ruby/models/accounting/payment_term_type.rb +0 -1
  97. data/lib/xero-ruby/models/accounting/payments.rb +14 -6
  98. data/lib/xero-ruby/models/accounting/phone.rb +14 -6
  99. data/lib/xero-ruby/models/accounting/prepayment.rb +14 -6
  100. data/lib/xero-ruby/models/accounting/prepayments.rb +14 -6
  101. data/lib/xero-ruby/models/accounting/purchase.rb +14 -6
  102. data/lib/xero-ruby/models/accounting/purchase_order.rb +14 -6
  103. data/lib/xero-ruby/models/accounting/purchase_orders.rb +14 -6
  104. data/lib/xero-ruby/models/accounting/quote.rb +14 -6
  105. data/lib/xero-ruby/models/accounting/quote_line_amount_types.rb +0 -1
  106. data/lib/xero-ruby/models/accounting/quote_status_codes.rb +0 -1
  107. data/lib/xero-ruby/models/accounting/quotes.rb +14 -6
  108. data/lib/xero-ruby/models/accounting/receipt.rb +14 -6
  109. data/lib/xero-ruby/models/accounting/receipts.rb +14 -6
  110. data/lib/xero-ruby/models/accounting/repeating_invoice.rb +14 -6
  111. data/lib/xero-ruby/models/accounting/repeating_invoices.rb +14 -6
  112. data/lib/xero-ruby/models/accounting/report.rb +14 -6
  113. data/lib/xero-ruby/models/accounting/report_attribute.rb +14 -6
  114. data/lib/xero-ruby/models/accounting/report_cell.rb +14 -6
  115. data/lib/xero-ruby/models/accounting/report_fields.rb +14 -6
  116. data/lib/xero-ruby/models/accounting/report_row.rb +14 -6
  117. data/lib/xero-ruby/models/accounting/report_rows.rb +14 -6
  118. data/lib/xero-ruby/models/accounting/report_with_row.rb +14 -6
  119. data/lib/xero-ruby/models/accounting/report_with_rows.rb +14 -6
  120. data/lib/xero-ruby/models/accounting/reports.rb +14 -6
  121. data/lib/xero-ruby/models/accounting/request_empty.rb +14 -6
  122. data/lib/xero-ruby/models/accounting/row_type.rb +0 -1
  123. data/lib/xero-ruby/models/accounting/sales_tracking_category.rb +14 -6
  124. data/lib/xero-ruby/models/accounting/schedule.rb +14 -6
  125. data/lib/xero-ruby/models/accounting/setup.rb +14 -6
  126. data/lib/xero-ruby/models/accounting/tax_component.rb +14 -6
  127. data/lib/xero-ruby/models/accounting/tax_rate.rb +14 -6
  128. data/lib/xero-ruby/models/accounting/tax_rates.rb +14 -6
  129. data/lib/xero-ruby/models/accounting/tax_type.rb +0 -1
  130. data/lib/xero-ruby/models/accounting/ten_ninety_nine_contact.rb +14 -6
  131. data/lib/xero-ruby/models/accounting/time_zone.rb +0 -1
  132. data/lib/xero-ruby/models/accounting/tracking_categories.rb +14 -6
  133. data/lib/xero-ruby/models/accounting/tracking_category.rb +14 -6
  134. data/lib/xero-ruby/models/accounting/tracking_option.rb +14 -6
  135. data/lib/xero-ruby/models/accounting/tracking_options.rb +14 -6
  136. data/lib/xero-ruby/models/accounting/user.rb +14 -6
  137. data/lib/xero-ruby/models/accounting/users.rb +14 -6
  138. data/lib/xero-ruby/models/accounting/validation_error.rb +14 -6
  139. data/lib/xero-ruby/models/assets/asset.rb +14 -6
  140. data/lib/xero-ruby/models/assets/asset_status.rb +0 -1
  141. data/lib/xero-ruby/models/assets/asset_status_query_param.rb +0 -1
  142. data/lib/xero-ruby/models/assets/asset_type.rb +14 -6
  143. data/lib/xero-ruby/models/assets/assets.rb +14 -6
  144. data/lib/xero-ruby/models/assets/book_depreciation_detail.rb +14 -6
  145. data/lib/xero-ruby/models/assets/book_depreciation_setting.rb +14 -6
  146. data/lib/xero-ruby/models/assets/error.rb +14 -6
  147. data/lib/xero-ruby/models/assets/field_validation_errors_element.rb +14 -6
  148. data/lib/xero-ruby/models/assets/pagination.rb +14 -6
  149. data/lib/xero-ruby/models/assets/resource_validation_errors_element.rb +14 -6
  150. data/lib/xero-ruby/models/assets/setting.rb +14 -6
  151. data/lib/xero-ruby/models/files/association.rb +14 -6
  152. data/lib/xero-ruby/models/files/file_object.rb +14 -6
  153. data/lib/xero-ruby/models/files/file_response204.rb +14 -6
  154. data/lib/xero-ruby/models/files/files.rb +14 -6
  155. data/lib/xero-ruby/models/files/folder.rb +14 -6
  156. data/lib/xero-ruby/models/files/folders.rb +14 -6
  157. data/lib/xero-ruby/models/files/inline_object.rb +14 -6
  158. data/lib/xero-ruby/models/files/object_group.rb +0 -1
  159. data/lib/xero-ruby/models/files/object_type.rb +0 -1
  160. data/lib/xero-ruby/models/files/user.rb +14 -6
  161. data/lib/xero-ruby/models/payroll_au/account.rb +14 -6
  162. data/lib/xero-ruby/models/payroll_au/account_type.rb +0 -1
  163. data/lib/xero-ruby/models/payroll_au/allowance_type.rb +0 -1
  164. data/lib/xero-ruby/models/payroll_au/api_exception.rb +14 -6
  165. data/lib/xero-ruby/models/payroll_au/bank_account.rb +14 -6
  166. data/lib/xero-ruby/models/payroll_au/calendar_type.rb +0 -1
  167. data/lib/xero-ruby/models/payroll_au/deduction_line.rb +14 -6
  168. data/lib/xero-ruby/models/payroll_au/deduction_type.rb +14 -6
  169. data/lib/xero-ruby/models/payroll_au/deduction_type_calculation_type.rb +0 -1
  170. data/lib/xero-ruby/models/payroll_au/earnings_line.rb +14 -6
  171. data/lib/xero-ruby/models/payroll_au/earnings_rate.rb +14 -6
  172. data/lib/xero-ruby/models/payroll_au/earnings_rate_calculation_type.rb +0 -1
  173. data/lib/xero-ruby/models/payroll_au/earnings_type.rb +1 -1
  174. data/lib/xero-ruby/models/payroll_au/employee.rb +14 -6
  175. data/lib/xero-ruby/models/payroll_au/employee_status.rb +0 -1
  176. data/lib/xero-ruby/models/payroll_au/employees.rb +14 -6
  177. data/lib/xero-ruby/models/payroll_au/employment_basis.rb +0 -1
  178. data/lib/xero-ruby/models/payroll_au/employment_termination_payment_type.rb +0 -1
  179. data/lib/xero-ruby/models/payroll_au/entitlement_final_pay_payout_type.rb +0 -1
  180. data/lib/xero-ruby/models/payroll_au/home_address.rb +14 -6
  181. data/lib/xero-ruby/models/payroll_au/leave_accrual_line.rb +14 -6
  182. data/lib/xero-ruby/models/payroll_au/leave_application.rb +14 -6
  183. data/lib/xero-ruby/models/payroll_au/leave_applications.rb +14 -6
  184. data/lib/xero-ruby/models/payroll_au/leave_balance.rb +14 -6
  185. data/lib/xero-ruby/models/payroll_au/leave_earnings_line.rb +14 -6
  186. data/lib/xero-ruby/models/payroll_au/leave_line.rb +14 -6
  187. data/lib/xero-ruby/models/payroll_au/leave_line_calculation_type.rb +0 -1
  188. data/lib/xero-ruby/models/payroll_au/leave_lines.rb +14 -6
  189. data/lib/xero-ruby/models/payroll_au/leave_period.rb +14 -6
  190. data/lib/xero-ruby/models/payroll_au/leave_period_status.rb +0 -1
  191. data/lib/xero-ruby/models/payroll_au/leave_type.rb +14 -6
  192. data/lib/xero-ruby/models/payroll_au/leave_type_contribution_type.rb +0 -1
  193. data/lib/xero-ruby/models/payroll_au/manual_tax_type.rb +0 -1
  194. data/lib/xero-ruby/models/payroll_au/opening_balances.rb +14 -6
  195. data/lib/xero-ruby/models/payroll_au/pay_item.rb +14 -6
  196. data/lib/xero-ruby/models/payroll_au/pay_items.rb +14 -6
  197. data/lib/xero-ruby/models/payroll_au/pay_run.rb +14 -6
  198. data/lib/xero-ruby/models/payroll_au/pay_run_status.rb +0 -1
  199. data/lib/xero-ruby/models/payroll_au/pay_runs.rb +14 -6
  200. data/lib/xero-ruby/models/payroll_au/pay_template.rb +14 -6
  201. data/lib/xero-ruby/models/payroll_au/payment_frequency_type.rb +0 -1
  202. data/lib/xero-ruby/models/payroll_au/payroll_calendar.rb +14 -6
  203. data/lib/xero-ruby/models/payroll_au/payroll_calendars.rb +14 -6
  204. data/lib/xero-ruby/models/payroll_au/payslip.rb +14 -6
  205. data/lib/xero-ruby/models/payroll_au/payslip_lines.rb +14 -6
  206. data/lib/xero-ruby/models/payroll_au/payslip_object.rb +14 -6
  207. data/lib/xero-ruby/models/payroll_au/payslip_summary.rb +14 -6
  208. data/lib/xero-ruby/models/payroll_au/payslips.rb +14 -6
  209. data/lib/xero-ruby/models/payroll_au/rate_type.rb +0 -1
  210. data/lib/xero-ruby/models/payroll_au/reimbursement_line.rb +14 -6
  211. data/lib/xero-ruby/models/payroll_au/reimbursement_lines.rb +14 -6
  212. data/lib/xero-ruby/models/payroll_au/reimbursement_type.rb +14 -6
  213. data/lib/xero-ruby/models/payroll_au/residency_status.rb +0 -1
  214. data/lib/xero-ruby/models/payroll_au/settings.rb +14 -6
  215. data/lib/xero-ruby/models/payroll_au/settings_object.rb +14 -6
  216. data/lib/xero-ruby/models/payroll_au/settings_tracking_categories.rb +14 -6
  217. data/lib/xero-ruby/models/payroll_au/settings_tracking_categories_employee_groups.rb +14 -6
  218. data/lib/xero-ruby/models/payroll_au/settings_tracking_categories_timesheet_categories.rb +14 -6
  219. data/lib/xero-ruby/models/payroll_au/state.rb +0 -1
  220. data/lib/xero-ruby/models/payroll_au/super_fund.rb +14 -6
  221. data/lib/xero-ruby/models/payroll_au/super_fund_product.rb +14 -6
  222. data/lib/xero-ruby/models/payroll_au/super_fund_products.rb +14 -6
  223. data/lib/xero-ruby/models/payroll_au/super_fund_type.rb +0 -1
  224. data/lib/xero-ruby/models/payroll_au/super_funds.rb +14 -6
  225. data/lib/xero-ruby/models/payroll_au/super_line.rb +14 -6
  226. data/lib/xero-ruby/models/payroll_au/super_membership.rb +14 -6
  227. data/lib/xero-ruby/models/payroll_au/superannuation_calculation_type.rb +0 -1
  228. data/lib/xero-ruby/models/payroll_au/superannuation_contribution_type.rb +0 -1
  229. data/lib/xero-ruby/models/payroll_au/superannuation_line.rb +14 -6
  230. data/lib/xero-ruby/models/payroll_au/tax_declaration.rb +14 -6
  231. data/lib/xero-ruby/models/payroll_au/tax_line.rb +14 -6
  232. data/lib/xero-ruby/models/payroll_au/tfn_exemption_type.rb +0 -1
  233. data/lib/xero-ruby/models/payroll_au/timesheet.rb +14 -6
  234. data/lib/xero-ruby/models/payroll_au/timesheet_line.rb +14 -6
  235. data/lib/xero-ruby/models/payroll_au/timesheet_object.rb +14 -6
  236. data/lib/xero-ruby/models/payroll_au/timesheet_status.rb +0 -1
  237. data/lib/xero-ruby/models/payroll_au/timesheets.rb +14 -6
  238. data/lib/xero-ruby/models/payroll_au/validation_error.rb +14 -6
  239. data/lib/xero-ruby/models/payroll_nz/account.rb +14 -6
  240. data/lib/xero-ruby/models/payroll_nz/accounts.rb +14 -6
  241. data/lib/xero-ruby/models/payroll_nz/address.rb +14 -6
  242. data/lib/xero-ruby/models/payroll_nz/bank_account.rb +14 -6
  243. data/lib/xero-ruby/models/payroll_nz/benefit.rb +14 -6
  244. data/lib/xero-ruby/models/payroll_nz/calendar_type.rb +0 -1
  245. data/lib/xero-ruby/models/payroll_nz/deduction.rb +14 -6
  246. data/lib/xero-ruby/models/payroll_nz/deduction_line.rb +14 -6
  247. data/lib/xero-ruby/models/payroll_nz/deduction_object.rb +14 -6
  248. data/lib/xero-ruby/models/payroll_nz/deductions.rb +14 -6
  249. data/lib/xero-ruby/models/payroll_nz/earnings_line.rb +14 -6
  250. data/lib/xero-ruby/models/payroll_nz/earnings_order.rb +14 -6
  251. data/lib/xero-ruby/models/payroll_nz/earnings_order_object.rb +14 -6
  252. data/lib/xero-ruby/models/payroll_nz/earnings_orders.rb +14 -6
  253. data/lib/xero-ruby/models/payroll_nz/earnings_rate.rb +14 -6
  254. data/lib/xero-ruby/models/payroll_nz/earnings_rate_object.rb +14 -6
  255. data/lib/xero-ruby/models/payroll_nz/earnings_rates.rb +14 -6
  256. data/lib/xero-ruby/models/payroll_nz/earnings_template.rb +14 -6
  257. data/lib/xero-ruby/models/payroll_nz/earnings_template_object.rb +14 -6
  258. data/lib/xero-ruby/models/payroll_nz/employee.rb +14 -6
  259. data/lib/xero-ruby/models/payroll_nz/employee_earnings_templates.rb +14 -6
  260. data/lib/xero-ruby/models/payroll_nz/employee_leave.rb +14 -6
  261. data/lib/xero-ruby/models/payroll_nz/employee_leave_balance.rb +14 -6
  262. data/lib/xero-ruby/models/payroll_nz/employee_leave_balances.rb +14 -6
  263. data/lib/xero-ruby/models/payroll_nz/employee_leave_object.rb +14 -6
  264. data/lib/xero-ruby/models/payroll_nz/employee_leave_setup.rb +14 -6
  265. data/lib/xero-ruby/models/payroll_nz/employee_leave_setup_object.rb +14 -6
  266. data/lib/xero-ruby/models/payroll_nz/employee_leave_type.rb +14 -6
  267. data/lib/xero-ruby/models/payroll_nz/employee_leave_type_object.rb +14 -6
  268. data/lib/xero-ruby/models/payroll_nz/employee_leave_types.rb +14 -6
  269. data/lib/xero-ruby/models/payroll_nz/employee_leaves.rb +14 -6
  270. data/lib/xero-ruby/models/payroll_nz/employee_object.rb +14 -6
  271. data/lib/xero-ruby/models/payroll_nz/employee_opening_balance.rb +14 -6
  272. data/lib/xero-ruby/models/payroll_nz/employee_opening_balances_object.rb +14 -6
  273. data/lib/xero-ruby/models/payroll_nz/employee_pay_template.rb +14 -6
  274. data/lib/xero-ruby/models/payroll_nz/employee_pay_template_object.rb +14 -6
  275. data/lib/xero-ruby/models/payroll_nz/employee_pay_templates.rb +14 -6
  276. data/lib/xero-ruby/models/payroll_nz/employee_statutory_leave_balance.rb +14 -6
  277. data/lib/xero-ruby/models/payroll_nz/employee_statutory_leave_balance_object.rb +14 -6
  278. data/lib/xero-ruby/models/payroll_nz/employee_statutory_leave_summary.rb +14 -6
  279. data/lib/xero-ruby/models/payroll_nz/employee_statutory_leaves_summaries.rb +14 -6
  280. data/lib/xero-ruby/models/payroll_nz/employee_statutory_sick_leave.rb +14 -6
  281. data/lib/xero-ruby/models/payroll_nz/employee_statutory_sick_leave_object.rb +14 -6
  282. data/lib/xero-ruby/models/payroll_nz/employee_statutory_sick_leaves.rb +14 -6
  283. data/lib/xero-ruby/models/payroll_nz/employee_tax.rb +14 -6
  284. data/lib/xero-ruby/models/payroll_nz/employee_tax_object.rb +14 -6
  285. data/lib/xero-ruby/models/payroll_nz/employees.rb +14 -6
  286. data/lib/xero-ruby/models/payroll_nz/employment.rb +14 -6
  287. data/lib/xero-ruby/models/payroll_nz/employment_object.rb +14 -6
  288. data/lib/xero-ruby/models/payroll_nz/gross_earnings_history.rb +14 -6
  289. data/lib/xero-ruby/models/payroll_nz/invalid_field.rb +14 -6
  290. data/lib/xero-ruby/models/payroll_nz/leave_accrual_line.rb +14 -6
  291. data/lib/xero-ruby/models/payroll_nz/leave_earnings_line.rb +14 -6
  292. data/lib/xero-ruby/models/payroll_nz/leave_period.rb +14 -6
  293. data/lib/xero-ruby/models/payroll_nz/leave_periods.rb +14 -6
  294. data/lib/xero-ruby/models/payroll_nz/leave_type.rb +14 -6
  295. data/lib/xero-ruby/models/payroll_nz/leave_type_object.rb +14 -6
  296. data/lib/xero-ruby/models/payroll_nz/leave_types.rb +14 -6
  297. data/lib/xero-ruby/models/payroll_nz/pagination.rb +14 -6
  298. data/lib/xero-ruby/models/payroll_nz/pay_run.rb +14 -6
  299. data/lib/xero-ruby/models/payroll_nz/pay_run_calendar.rb +14 -6
  300. data/lib/xero-ruby/models/payroll_nz/pay_run_calendar_object.rb +14 -6
  301. data/lib/xero-ruby/models/payroll_nz/pay_run_calendars.rb +14 -6
  302. data/lib/xero-ruby/models/payroll_nz/pay_run_object.rb +14 -6
  303. data/lib/xero-ruby/models/payroll_nz/pay_runs.rb +14 -6
  304. data/lib/xero-ruby/models/payroll_nz/pay_slip.rb +14 -6
  305. data/lib/xero-ruby/models/payroll_nz/pay_slip_object.rb +14 -6
  306. data/lib/xero-ruby/models/payroll_nz/pay_slips.rb +14 -6
  307. data/lib/xero-ruby/models/payroll_nz/payment_line.rb +14 -6
  308. data/lib/xero-ruby/models/payroll_nz/payment_method.rb +14 -6
  309. data/lib/xero-ruby/models/payroll_nz/payment_method_object.rb +14 -6
  310. data/lib/xero-ruby/models/payroll_nz/problem.rb +14 -6
  311. data/lib/xero-ruby/models/payroll_nz/reimbursement.rb +14 -6
  312. data/lib/xero-ruby/models/payroll_nz/reimbursement_line.rb +14 -6
  313. data/lib/xero-ruby/models/payroll_nz/reimbursement_object.rb +14 -6
  314. data/lib/xero-ruby/models/payroll_nz/reimbursements.rb +14 -6
  315. data/lib/xero-ruby/models/payroll_nz/salary_and_wage.rb +15 -7
  316. data/lib/xero-ruby/models/payroll_nz/salary_and_wage_object.rb +14 -6
  317. data/lib/xero-ruby/models/payroll_nz/salary_and_wages.rb +14 -6
  318. data/lib/xero-ruby/models/payroll_nz/settings.rb +14 -6
  319. data/lib/xero-ruby/models/payroll_nz/statutory_deduction.rb +14 -6
  320. data/lib/xero-ruby/models/payroll_nz/statutory_deduction_category.rb +0 -1
  321. data/lib/xero-ruby/models/payroll_nz/statutory_deduction_line.rb +14 -6
  322. data/lib/xero-ruby/models/payroll_nz/statutory_deduction_object.rb +14 -6
  323. data/lib/xero-ruby/models/payroll_nz/statutory_deductions.rb +14 -6
  324. data/lib/xero-ruby/models/payroll_nz/superannuation_line.rb +14 -6
  325. data/lib/xero-ruby/models/payroll_nz/superannuation_object.rb +14 -6
  326. data/lib/xero-ruby/models/payroll_nz/superannuations.rb +14 -6
  327. data/lib/xero-ruby/models/payroll_nz/tax_code.rb +0 -1
  328. data/lib/xero-ruby/models/payroll_nz/tax_line.rb +14 -6
  329. data/lib/xero-ruby/models/payroll_nz/tax_settings.rb +14 -6
  330. data/lib/xero-ruby/models/payroll_nz/timesheet.rb +14 -6
  331. data/lib/xero-ruby/models/payroll_nz/timesheet_earnings_line.rb +14 -6
  332. data/lib/xero-ruby/models/payroll_nz/timesheet_line.rb +14 -6
  333. data/lib/xero-ruby/models/payroll_nz/timesheet_line_object.rb +14 -6
  334. data/lib/xero-ruby/models/payroll_nz/timesheet_object.rb +14 -6
  335. data/lib/xero-ruby/models/payroll_nz/timesheets.rb +14 -6
  336. data/lib/xero-ruby/models/payroll_nz/tracking_categories.rb +14 -6
  337. data/lib/xero-ruby/models/payroll_nz/tracking_category.rb +14 -6
  338. data/lib/xero-ruby/models/payroll_uk/account.rb +14 -6
  339. data/lib/xero-ruby/models/payroll_uk/accounts.rb +14 -6
  340. data/lib/xero-ruby/models/payroll_uk/address.rb +14 -6
  341. data/lib/xero-ruby/models/payroll_uk/bank_account.rb +14 -6
  342. data/lib/xero-ruby/models/payroll_uk/benefit.rb +14 -6
  343. data/lib/xero-ruby/models/payroll_uk/benefit_line.rb +14 -6
  344. data/lib/xero-ruby/models/payroll_uk/benefit_object.rb +14 -6
  345. data/lib/xero-ruby/models/payroll_uk/benefits.rb +14 -6
  346. data/lib/xero-ruby/models/payroll_uk/court_order_line.rb +14 -6
  347. data/lib/xero-ruby/models/payroll_uk/deduction.rb +14 -6
  348. data/lib/xero-ruby/models/payroll_uk/deduction_line.rb +14 -6
  349. data/lib/xero-ruby/models/payroll_uk/deduction_object.rb +14 -6
  350. data/lib/xero-ruby/models/payroll_uk/deductions.rb +14 -6
  351. data/lib/xero-ruby/models/payroll_uk/earnings_line.rb +14 -6
  352. data/lib/xero-ruby/models/payroll_uk/earnings_order.rb +14 -6
  353. data/lib/xero-ruby/models/payroll_uk/earnings_order_object.rb +14 -6
  354. data/lib/xero-ruby/models/payroll_uk/earnings_orders.rb +14 -6
  355. data/lib/xero-ruby/models/payroll_uk/earnings_rate.rb +14 -6
  356. data/lib/xero-ruby/models/payroll_uk/earnings_rate_object.rb +14 -6
  357. data/lib/xero-ruby/models/payroll_uk/earnings_rates.rb +14 -6
  358. data/lib/xero-ruby/models/payroll_uk/earnings_template.rb +14 -6
  359. data/lib/xero-ruby/models/payroll_uk/earnings_template_object.rb +14 -6
  360. data/lib/xero-ruby/models/payroll_uk/employee.rb +14 -6
  361. data/lib/xero-ruby/models/payroll_uk/employee_leave.rb +14 -6
  362. data/lib/xero-ruby/models/payroll_uk/employee_leave_balance.rb +14 -6
  363. data/lib/xero-ruby/models/payroll_uk/employee_leave_balances.rb +14 -6
  364. data/lib/xero-ruby/models/payroll_uk/employee_leave_object.rb +14 -6
  365. data/lib/xero-ruby/models/payroll_uk/employee_leave_type.rb +14 -6
  366. data/lib/xero-ruby/models/payroll_uk/employee_leave_type_object.rb +14 -6
  367. data/lib/xero-ruby/models/payroll_uk/employee_leave_types.rb +14 -6
  368. data/lib/xero-ruby/models/payroll_uk/employee_leaves.rb +14 -6
  369. data/lib/xero-ruby/models/payroll_uk/employee_object.rb +14 -6
  370. data/lib/xero-ruby/models/payroll_uk/employee_opening_balances.rb +14 -6
  371. data/lib/xero-ruby/models/payroll_uk/employee_opening_balances_object.rb +14 -6
  372. data/lib/xero-ruby/models/payroll_uk/employee_pay_template.rb +14 -6
  373. data/lib/xero-ruby/models/payroll_uk/employee_pay_template_object.rb +14 -6
  374. data/lib/xero-ruby/models/payroll_uk/employee_pay_templates.rb +14 -6
  375. data/lib/xero-ruby/models/payroll_uk/employee_statutory_leave_balance.rb +14 -6
  376. data/lib/xero-ruby/models/payroll_uk/employee_statutory_leave_balance_object.rb +14 -6
  377. data/lib/xero-ruby/models/payroll_uk/employee_statutory_leave_summary.rb +14 -6
  378. data/lib/xero-ruby/models/payroll_uk/employee_statutory_leaves_summaries.rb +14 -6
  379. data/lib/xero-ruby/models/payroll_uk/employee_statutory_sick_leave.rb +14 -6
  380. data/lib/xero-ruby/models/payroll_uk/employee_statutory_sick_leave_object.rb +14 -6
  381. data/lib/xero-ruby/models/payroll_uk/employee_statutory_sick_leaves.rb +14 -6
  382. data/lib/xero-ruby/models/payroll_uk/employee_tax.rb +14 -6
  383. data/lib/xero-ruby/models/payroll_uk/employee_tax_object.rb +14 -6
  384. data/lib/xero-ruby/models/payroll_uk/employees.rb +14 -6
  385. data/lib/xero-ruby/models/payroll_uk/employment.rb +14 -6
  386. data/lib/xero-ruby/models/payroll_uk/employment_object.rb +14 -6
  387. data/lib/xero-ruby/models/payroll_uk/invalid_field.rb +14 -6
  388. data/lib/xero-ruby/models/payroll_uk/leave_accrual_line.rb +14 -6
  389. data/lib/xero-ruby/models/payroll_uk/leave_earnings_line.rb +14 -6
  390. data/lib/xero-ruby/models/payroll_uk/leave_period.rb +14 -6
  391. data/lib/xero-ruby/models/payroll_uk/leave_periods.rb +14 -6
  392. data/lib/xero-ruby/models/payroll_uk/leave_type.rb +14 -6
  393. data/lib/xero-ruby/models/payroll_uk/leave_type_object.rb +14 -6
  394. data/lib/xero-ruby/models/payroll_uk/leave_types.rb +14 -6
  395. data/lib/xero-ruby/models/payroll_uk/pagination.rb +14 -6
  396. data/lib/xero-ruby/models/payroll_uk/pay_run.rb +14 -6
  397. data/lib/xero-ruby/models/payroll_uk/pay_run_calendar.rb +14 -6
  398. data/lib/xero-ruby/models/payroll_uk/pay_run_calendar_object.rb +14 -6
  399. data/lib/xero-ruby/models/payroll_uk/pay_run_calendars.rb +14 -6
  400. data/lib/xero-ruby/models/payroll_uk/pay_run_object.rb +14 -6
  401. data/lib/xero-ruby/models/payroll_uk/pay_runs.rb +14 -6
  402. data/lib/xero-ruby/models/payroll_uk/payment_line.rb +14 -6
  403. data/lib/xero-ruby/models/payroll_uk/payment_method.rb +14 -6
  404. data/lib/xero-ruby/models/payroll_uk/payment_method_object.rb +14 -6
  405. data/lib/xero-ruby/models/payroll_uk/payslip.rb +14 -6
  406. data/lib/xero-ruby/models/payroll_uk/payslip_object.rb +14 -6
  407. data/lib/xero-ruby/models/payroll_uk/payslips.rb +14 -6
  408. data/lib/xero-ruby/models/payroll_uk/problem.rb +14 -6
  409. data/lib/xero-ruby/models/payroll_uk/reimbursement.rb +14 -6
  410. data/lib/xero-ruby/models/payroll_uk/reimbursement_line.rb +14 -6
  411. data/lib/xero-ruby/models/payroll_uk/reimbursement_object.rb +14 -6
  412. data/lib/xero-ruby/models/payroll_uk/reimbursements.rb +14 -6
  413. data/lib/xero-ruby/models/payroll_uk/salary_and_wage.rb +14 -6
  414. data/lib/xero-ruby/models/payroll_uk/salary_and_wage_object.rb +14 -6
  415. data/lib/xero-ruby/models/payroll_uk/salary_and_wages.rb +14 -6
  416. data/lib/xero-ruby/models/payroll_uk/settings.rb +14 -6
  417. data/lib/xero-ruby/models/payroll_uk/statutory_deduction.rb +14 -6
  418. data/lib/xero-ruby/models/payroll_uk/statutory_deduction_category.rb +0 -1
  419. data/lib/xero-ruby/models/payroll_uk/tax_line.rb +14 -6
  420. data/lib/xero-ruby/models/payroll_uk/timesheet.rb +14 -6
  421. data/lib/xero-ruby/models/payroll_uk/timesheet_earnings_line.rb +14 -6
  422. data/lib/xero-ruby/models/payroll_uk/timesheet_line.rb +14 -6
  423. data/lib/xero-ruby/models/payroll_uk/timesheet_line_object.rb +14 -6
  424. data/lib/xero-ruby/models/payroll_uk/timesheet_object.rb +14 -6
  425. data/lib/xero-ruby/models/payroll_uk/timesheets.rb +14 -6
  426. data/lib/xero-ruby/models/payroll_uk/tracking_categories.rb +14 -6
  427. data/lib/xero-ruby/models/payroll_uk/tracking_category.rb +14 -6
  428. data/lib/xero-ruby/models/projects/amount.rb +14 -6
  429. data/lib/xero-ruby/models/projects/charge_type.rb +0 -1
  430. data/lib/xero-ruby/models/projects/currency_code.rb +0 -1
  431. data/lib/xero-ruby/models/projects/error.rb +14 -6
  432. data/lib/xero-ruby/models/projects/pagination.rb +14 -6
  433. data/lib/xero-ruby/models/projects/project.rb +14 -6
  434. data/lib/xero-ruby/models/projects/project_create_or_update.rb +14 -6
  435. data/lib/xero-ruby/models/projects/project_patch.rb +14 -6
  436. data/lib/xero-ruby/models/projects/project_status.rb +0 -1
  437. data/lib/xero-ruby/models/projects/project_user.rb +14 -6
  438. data/lib/xero-ruby/models/projects/project_users.rb +14 -6
  439. data/lib/xero-ruby/models/projects/projects.rb +14 -6
  440. data/lib/xero-ruby/models/projects/task.rb +14 -6
  441. data/lib/xero-ruby/models/projects/task_create_or_update.rb +14 -6
  442. data/lib/xero-ruby/models/projects/tasks.rb +14 -6
  443. data/lib/xero-ruby/models/projects/time_entries.rb +14 -6
  444. data/lib/xero-ruby/models/projects/time_entry.rb +14 -6
  445. data/lib/xero-ruby/models/projects/time_entry_create_or_update.rb +14 -6
  446. data/lib/xero-ruby/version.rb +2 -2
  447. data/spec/api_client_spec.rb +101 -13
  448. data/spec/api_error_spec.rb +45 -0
  449. data/spec/configuration_spec.rb +9 -16
  450. data/spec/helper_methods_spec.rb +82 -0
  451. metadata +10 -5
@@ -3,7 +3,6 @@
3
3
 
4
4
  #This is the Xero Projects API
5
5
 
6
- The version of the OpenAPI document: 2.6.0
7
6
  Contact: api@xero.com
8
7
  Generated by: https://openapi-generator.tech
9
8
  OpenAPI Generator version: 4.3.1
@@ -183,16 +182,22 @@ module XeroRuby::Projects
183
182
 
184
183
  # Returns the object in the form of hash
185
184
  # @return [Hash] Returns the object in the form of hash
186
- def to_hash
185
+ def to_hash(downcase: false)
187
186
  hash = {}
188
187
  self.class.attribute_map.each_pair do |attr, param|
189
188
  value = self.send(attr)
190
189
  next if value.nil?
191
- hash[param] = _to_hash(value)
190
+ key = downcase ? attr : param
191
+ hash[key] = _to_hash(value)
192
192
  end
193
193
  hash
194
194
  end
195
195
 
196
+ # Returns the object in the form of hash with snake_case
197
+ def attributes
198
+ to_hash(downcase: true)
199
+ end
200
+
196
201
  # Outputs non-array value in the form of hash
197
202
  # For object, use to_hash. Otherwise, just return the value
198
203
  # @param [Object] value Any valid value
@@ -211,10 +216,13 @@ module XeroRuby::Projects
211
216
  end
212
217
  end
213
218
 
214
- # customized data_parser
215
219
  def parse_date(datestring)
216
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
217
- return Time.at(seconds_since_epoch).strftime('%Y-%m-%dT%l:%M:%S%z').to_s
220
+ if datestring.include?('Date')
221
+ seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
222
+ Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
223
+ else # handle date 'types' for small subset of payroll API's
224
+ Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
225
+ end
218
226
  end
219
227
  end
220
228
  end
@@ -3,7 +3,6 @@
3
3
 
4
4
  #This is the Xero Projects API
5
5
 
6
- The version of the OpenAPI document: 2.6.0
7
6
  Contact: api@xero.com
8
7
  Generated by: https://openapi-generator.tech
9
8
  OpenAPI Generator version: 4.3.1
@@ -287,16 +286,22 @@ module XeroRuby::Projects
287
286
 
288
287
  # Returns the object in the form of hash
289
288
  # @return [Hash] Returns the object in the form of hash
290
- def to_hash
289
+ def to_hash(downcase: false)
291
290
  hash = {}
292
291
  self.class.attribute_map.each_pair do |attr, param|
293
292
  value = self.send(attr)
294
293
  next if value.nil?
295
- hash[param] = _to_hash(value)
294
+ key = downcase ? attr : param
295
+ hash[key] = _to_hash(value)
296
296
  end
297
297
  hash
298
298
  end
299
299
 
300
+ # Returns the object in the form of hash with snake_case
301
+ def attributes
302
+ to_hash(downcase: true)
303
+ end
304
+
300
305
  # Outputs non-array value in the form of hash
301
306
  # For object, use to_hash. Otherwise, just return the value
302
307
  # @param [Object] value Any valid value
@@ -315,10 +320,13 @@ module XeroRuby::Projects
315
320
  end
316
321
  end
317
322
 
318
- # customized data_parser
319
323
  def parse_date(datestring)
320
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
321
- return Time.at(seconds_since_epoch).strftime('%Y-%m-%dT%l:%M:%S%z').to_s
324
+ if datestring.include?('Date')
325
+ seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
326
+ Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
327
+ else # handle date 'types' for small subset of payroll API's
328
+ Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
329
+ end
322
330
  end
323
331
  end
324
332
  end
@@ -3,7 +3,6 @@
3
3
 
4
4
  #This is the Xero Projects API
5
5
 
6
- The version of the OpenAPI document: 2.6.0
7
6
  Contact: api@xero.com
8
7
  Generated by: https://openapi-generator.tech
9
8
  OpenAPI Generator version: 4.3.1
@@ -231,16 +230,22 @@ module XeroRuby::Projects
231
230
 
232
231
  # Returns the object in the form of hash
233
232
  # @return [Hash] Returns the object in the form of hash
234
- def to_hash
233
+ def to_hash(downcase: false)
235
234
  hash = {}
236
235
  self.class.attribute_map.each_pair do |attr, param|
237
236
  value = self.send(attr)
238
237
  next if value.nil?
239
- hash[param] = _to_hash(value)
238
+ key = downcase ? attr : param
239
+ hash[key] = _to_hash(value)
240
240
  end
241
241
  hash
242
242
  end
243
243
 
244
+ # Returns the object in the form of hash with snake_case
245
+ def attributes
246
+ to_hash(downcase: true)
247
+ end
248
+
244
249
  # Outputs non-array value in the form of hash
245
250
  # For object, use to_hash. Otherwise, just return the value
246
251
  # @param [Object] value Any valid value
@@ -259,10 +264,13 @@ module XeroRuby::Projects
259
264
  end
260
265
  end
261
266
 
262
- # customized data_parser
263
267
  def parse_date(datestring)
264
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
265
- return Time.at(seconds_since_epoch).strftime('%Y-%m-%dT%l:%M:%S%z').to_s
268
+ if datestring.include?('Date')
269
+ seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
270
+ Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
271
+ else # handle date 'types' for small subset of payroll API's
272
+ Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
273
+ end
266
274
  end
267
275
  end
268
276
  end
@@ -3,13 +3,13 @@
3
3
 
4
4
  #No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
5
5
 
6
- The version of the OpenAPI document: 2.6.0
7
6
  Contact: api@xero.com
8
7
  Generated by: https://openapi-generator.tech
9
8
  OpenAPI Generator version: 4.3.1
10
9
 
10
+ The version of the XeroOpenAPI document: 2.8.3
11
11
  =end
12
12
 
13
13
  module XeroRuby
14
- VERSION = '2.4.1'
14
+ VERSION = '2.6.2'
15
15
  end
@@ -1,20 +1,8 @@
1
- =begin
2
- #Accounting API
3
-
4
- #No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
5
-
6
- The version of the OpenAPI document: 2.1.3
7
- Contact: api@xero.com
8
- Generated by: https://openapi-generator.tech
9
- OpenAPI Generator version: 4.3.0
10
-
11
- =end
12
-
13
1
  require './spec_helper'
14
2
 
15
3
  describe XeroRuby::ApiClient do
16
4
  context 'initialization' do
17
- context 'URL stuff' do
5
+ context 'URL config' do
18
6
  context 'host' do
19
7
  it 'removes http from host' do
20
8
  XeroRuby.configure { |c| c.host = 'http://example.com' }
@@ -48,6 +36,106 @@ describe XeroRuby::ApiClient do
48
36
  expect(XeroRuby::Configuration.default.base_path).to eq('')
49
37
  end
50
38
  end
39
+
40
+ context "creates a valid authorization_url" do
41
+ it "passes through attributes" do
42
+ creds = {
43
+ client_id: 'abc',
44
+ client_secret: '123',
45
+ redirect_uri: 'https://mydomain.com/callback',
46
+ scopes: 'openid profile email accounting.transactions accounting.settings',
47
+ state: 'i-am-customer-state'
48
+ }
49
+ api_client = XeroRuby::ApiClient.new(credentials: creds)
50
+ expect(api_client.authorization_url).to eq('https://login.xero.com/identity/connect/authorize?response_type=code&client_id=abc&redirect_uri=https://mydomain.com/callback&scope=openid profile email accounting.transactions accounting.settings&state=i-am-customer-state')
51
+ end
52
+
53
+ it "Does not append state if it is not provided" do
54
+ creds = {
55
+ client_id: 'abc',
56
+ client_secret: '123',
57
+ redirect_uri: 'https://mydomain.com/callback',
58
+ scopes: 'openid profile email accounting.transactions accounting.settings'
59
+ }
60
+ api_client = XeroRuby::ApiClient.new(credentials: creds)
61
+ expect(api_client.authorization_url).to eq('https://login.xero.com/identity/connect/authorize?response_type=code&client_id=abc&redirect_uri=https://mydomain.com/callback&scope=openid profile email accounting.transactions accounting.settings')
62
+ end
63
+ end
64
+ end
65
+ end
66
+
67
+ describe 'api_client helper functions' do
68
+ let(:api_client) { XeroRuby::ApiClient.new }
69
+ let(:token_set) { {access_token: 'eyx.jibberjabber', refresh_token: 'REFRESHMENTS'} }
70
+ let(:connections) {
71
+ [{
72
+ "id" => "xxx-yyy-zzz",
73
+ "tenantId" => "xxx-yyy-zzz",
74
+ "tenantType" => "ORGANISATION",
75
+ "tenantName" => "Demo Company (US)",
76
+ "createdDateUtc" => "2019-11-01T20:08:03.0766400",
77
+ "updatedDateUtc" => "2020-04-15T22:37:10.4943410"
78
+ }]
79
+ }
80
+
81
+ before do
82
+ allow(api_client).to receive(:token_request).and_return(token_set)
83
+ end
84
+
85
+ it "#set_token_set" do
86
+ api_client.set_token_set(token_set)
87
+ expect(api_client.token_set).to eq(token_set)
88
+ end
89
+
90
+ it "#set_access_token" do
91
+ api_client.set_access_token(token_set[:access_token])
92
+ expect(api_client.access_token).to eq(token_set[:access_token])
93
+ end
94
+
95
+ it "#refresh_token_set" do
96
+ expect(api_client.refresh_token_set(token_set)).to eq(token_set)
97
+ end
98
+
99
+ it "#connections" do
100
+ expect(api_client).to receive(:call_api).and_return(connections)
101
+ expect(api_client.config.base_url).to eq(nil)
102
+ expect(api_client.connections).to eq(connections[0])
103
+ expect(api_client.config.base_url).to eq('https://api.xero.com')
104
+ end
105
+
106
+ it "#disconnect" do
107
+ expect(api_client).to receive(:call_api).and_return(connections)
108
+ expect(api_client).to receive(:connections).and_return(connections[0])
109
+ expect(api_client.disconnect(connections[0]['id'])).to eq(connections[0])
110
+ expect(api_client.config.base_url).to eq('https://api.xero.com')
111
+ end
112
+
113
+ it "sets and resets the base url based on endpoint usage of the same client" do
114
+ expect(api_client).to receive(:call_api).and_return(connections)
115
+
116
+ api_client.accounting_api
117
+ expect(api_client.config.base_url).to eq('https://api.xero.com/api.xro/2.0')
118
+
119
+ api_client.asset_api
120
+ expect(api_client.config.base_url).to eq('https://api.xero.com/assets.xro/1.0')
121
+
122
+ api_client.project_api
123
+ expect(api_client.config.base_url).to eq('https://api.xero.com/projects.xro/2.0/')
124
+
125
+ api_client.files_api
126
+ expect(api_client.config.base_url).to eq('https://api.xero.com/files.xro/1.0/')
127
+
128
+ api_client.payroll_au_api
129
+ expect(api_client.config.base_url).to eq('https://api.xero.com/payroll.xro/1.0/')
130
+
131
+ api_client.payroll_nz_api
132
+ expect(api_client.config.base_url).to eq('https://api.xero.com/payroll.xro/2.0/')
133
+
134
+ api_client.payroll_uk_api
135
+ expect(api_client.config.base_url).to eq('https://api.xero.com/payroll.xro/2.0/')
136
+
137
+ api_client.connections
138
+ expect(api_client.config.base_url).to eq('https://api.xero.com')
51
139
  end
52
140
  end
53
141
 
@@ -0,0 +1,45 @@
1
+ require './spec_helper'
2
+
3
+ describe XeroRuby::ApiError do
4
+ context 'initialization' do
5
+ it 'returns default error message' do
6
+ api_error = XeroRuby::ApiError.new
7
+ expect(api_error.message).to eq("Error message: the server returns an error")
8
+ end
9
+
10
+ it 'returns error message from json array' do
11
+ error_body = {
12
+ "ErrorNumber": 10,
13
+ "Type": "ValidationException",
14
+ "Message": "A validation exception occurred",
15
+ "Elements": [
16
+ {
17
+ "ValidationErrors": [
18
+ {
19
+ "Message": "The TaxType code NONE does not exist or cannot be used for this type of transaction."
20
+ }
21
+ ],
22
+ "Warnings": [
23
+ {
24
+ "Message": "Account code '600' has been removed as it does not match a recognised account."
25
+ }
26
+ ]
27
+ }
28
+ ]
29
+ }
30
+ api_error = XeroRuby::ApiError.new(
31
+ :code => 400,
32
+ :response_headers => {"content-type"=>"application/json; charset=utf-8", "content-length"=>"1700", "server"=>"nginx", "xero-correlation-id"=>"31e2c94e-3ae4-402a-a374-b7a94ef9445c", "x-appminlimit-remaining"=>"9988", "x-minlimit-remaining"=>"58", "x-daylimit-remaining"=>"4998", "expires"=>"Fri, 18 Dec 2020 17:56:29 GMT", "cache-control"=>"max-age=0, no-cache, no-store", "pragma"=>"no-cache", "date"=>"Fri, 18 Dec 2020 17:56:29 GMT", "connection"=>"close", "x-client-tls-ver"=>"tls1.3"},
33
+ :response_body => error_body
34
+ )
35
+ expect(api_error.message).to include("The TaxType code NONE does not exist or cannot be used for this type of transaction")
36
+ expect(api_error.message).to include("Account code '600' has been removed as it does not match a recognised account.")
37
+ end
38
+
39
+ it 'returns error message when message is simple string' do
40
+ error_body = "Timeout error"
41
+ api_error = XeroRuby::ApiError.new(error_body)
42
+ expect(api_error.message).to include(error_body)
43
+ end
44
+ end
45
+ end
@@ -1,15 +1,3 @@
1
- =begin
2
- #Accounting API
3
-
4
- #No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
5
-
6
- The version of the OpenAPI document: 2.1.3
7
- Contact: api@xero.com
8
- Generated by: https://openapi-generator.tech
9
- OpenAPI Generator version: 4.3.0
10
-
11
- =end
12
-
13
1
  require 'spec_helper'
14
2
 
15
3
  describe XeroRuby::Configuration do
@@ -17,10 +5,15 @@ describe XeroRuby::Configuration do
17
5
 
18
6
  describe 'urls' do
19
7
  it 'should have the default value' do
20
- expect(config.login_url).to eq("https://login.xero.com/identity/connect/authorize")
21
- expect(config.token_url).to eq("https://identity.xero.com/connect/token")
22
- expect(config.accounting_url).to eq("https://api.xero.com/api.xro/2.0")
23
- expect(config.asset_url).to eq("https://api.xero.com/assets.xro/1.0")
8
+ expect(config.login_url).to eq('https://login.xero.com/identity/connect/authorize')
9
+ expect(config.token_url).to eq('https://identity.xero.com/connect/token')
10
+ expect(config.accounting_url).to eq('https://api.xero.com/api.xro/2.0')
11
+ expect(config.asset_url).to eq('https://api.xero.com/assets.xro/1.0')
12
+ expect(config.project_url).to eq('https://api.xero.com/projects.xro/2.0/')
13
+ expect(config.files_url).to eq('https://api.xero.com/files.xro/1.0/')
14
+ expect(config.payroll_au_url).to eq('https://api.xero.com/payroll.xro/1.0/')
15
+ expect(config.payroll_nz_url).to eq('https://api.xero.com/payroll.xro/2.0/')
16
+ expect(config.payroll_uk_url).to eq('https://api.xero.com/payroll.xro/2.0/')
24
17
  end
25
18
  end
26
19
  end
@@ -0,0 +1,82 @@
1
+ require './spec_helper'
2
+
3
+ describe 'shared helper methdods' do
4
+
5
+ describe '#parse_date' do
6
+ let(:model_instance) {XeroRuby::Accounting::Account.new}
7
+
8
+ it 'can parse from ms date with backslash' do
9
+ datestring = "\/Date(1519851689297+0000)\/"
10
+ date = model_instance.parse_date(datestring)
11
+ expect(date).to eq('2018-02-28T21:01:29+0000')
12
+ end
13
+
14
+ it 'can parse from a MS date without extra backslashes' do
15
+ datestring = "/Date(1285721714157+0000)/"
16
+ date = model_instance.parse_date(datestring)
17
+ expect(date).to eq('2010-09-29T00:55:14+0000')
18
+ end
19
+
20
+ describe 'valid UTC strings (from some payroll apis)' do
21
+ it 'can parse from a utc string' do
22
+ datestring = "2020-05-08T17:44:30"
23
+ date = model_instance.parse_date(datestring)
24
+ expect(date).to eq('2020-05-08T17:44:30')
25
+ end
26
+
27
+ it 'can parse with a timezone to correct UTC day' do
28
+ datestring = "2020-11-05T19:14:49.4084255"
29
+ date = model_instance.parse_date(datestring)
30
+ expect(date).to eq('2020-11-05T19:14:49')
31
+ end
32
+
33
+ it 'valid utc strings drop timezone' do
34
+ datestring = "2020-06-02T18:47:26"
35
+ date = model_instance.parse_date(datestring)
36
+ expect(date).to eq(datestring)
37
+ end
38
+ end
39
+ end
40
+
41
+ describe '#to_hash' do
42
+ let(:invoice) {
43
+ XeroRuby::Accounting::Invoice.new(
44
+ type: 'ACCPAY',
45
+ total_discount: 100,
46
+ invoice_number: 'abc-123',
47
+ currency_code: 'USD'
48
+ )
49
+ }
50
+
51
+ let(:contact) {
52
+ XeroRuby::Accounting::Contact.new(
53
+ account_number: 'abc-123',
54
+ contact_status: XeroRuby::Accounting::Contact::ACTIVE,
55
+ name: 'Contact Name',
56
+ first_name: 'Contact',
57
+ last_name: 'Name',
58
+ email_address: 'email@gmail.com'
59
+ )
60
+ }
61
+
62
+ describe '#to_hash' do
63
+ it 'can serialize invoice attributes into a PascalCase hash' do
64
+ expect(invoice.to_hash).to eq(:CurrencyCode => "USD", :HasAttachments => false, :HasErrors => false, :InvoiceNumber => "abc-123", :TotalDiscount => 100, :Type => "ACCPAY")
65
+ end
66
+
67
+ it 'can serialize contact attributes into a PascalCase hash' do
68
+ expect(contact.to_hash).to eq(:AccountNumber => "abc-123", :ContactStatus => "ACTIVE", :EmailAddress => "email@gmail.com", :FirstName => "Contact", :HasAttachments => false, :HasValidationErrors => false, :LastName => "Name", :Name => "Contact Name")
69
+ end
70
+ end
71
+
72
+ describe '#attributes' do
73
+ it 'can serialize invoice attributes into a snake_case hash' do
74
+ expect(invoice.attributes).to eq({currency_code: "USD", has_attachments: false, has_errors: false, invoice_number: "abc-123", total_discount: 100, type: "ACCPAY"})
75
+ end
76
+
77
+ it 'can serialize contact attributes into a snake_case hash' do
78
+ expect(contact.attributes).to eq({account_number: "abc-123", contact_status: "ACTIVE", email_address: "email@gmail.com", first_name: 'Contact', has_attachments: false, has_validation_errors: false, last_name: "Name", name: "Contact Name"})
79
+ end
80
+ end
81
+ end
82
+ end