sageone_sdk 0.0.1

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 (198) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +15 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +15 -0
  5. data/Fudgefile +27 -0
  6. data/Gemfile +12 -0
  7. data/Guardfile +33 -0
  8. data/LICENSE +22 -0
  9. data/README.md +57 -0
  10. data/Rakefile +10 -0
  11. data/fudge_settings.yml +5 -0
  12. data/lib/sageone_sdk.rb +16 -0
  13. data/lib/sageone_sdk/authentication.rb +8 -0
  14. data/lib/sageone_sdk/client.rb +117 -0
  15. data/lib/sageone_sdk/client/account_types.rb +19 -0
  16. data/lib/sageone_sdk/client/bank_accounts.rb +18 -0
  17. data/lib/sageone_sdk/client/chart_of_accounts.rb +21 -0
  18. data/lib/sageone_sdk/client/contact_types.rb +20 -0
  19. data/lib/sageone_sdk/client/contacts.rb +82 -0
  20. data/lib/sageone_sdk/client/countries.rb +18 -0
  21. data/lib/sageone_sdk/client/expenditures.rb +26 -0
  22. data/lib/sageone_sdk/client/expense_methods.rb +19 -0
  23. data/lib/sageone_sdk/client/expense_types.rb +19 -0
  24. data/lib/sageone_sdk/client/financial_settings.rb +23 -0
  25. data/lib/sageone_sdk/client/income_methods.rb +19 -0
  26. data/lib/sageone_sdk/client/income_types.rb +19 -0
  27. data/lib/sageone_sdk/client/incomes.rb +51 -0
  28. data/lib/sageone_sdk/client/journals.rb +27 -0
  29. data/lib/sageone_sdk/client/ledger_accounts.rb +52 -0
  30. data/lib/sageone_sdk/client/payment_statuses.rb +18 -0
  31. data/lib/sageone_sdk/client/period_types.rb +19 -0
  32. data/lib/sageone_sdk/client/products.rb +50 -0
  33. data/lib/sageone_sdk/client/purchase_invoices.rb +61 -0
  34. data/lib/sageone_sdk/client/sales_invoices.rb +65 -0
  35. data/lib/sageone_sdk/client/services.rb +48 -0
  36. data/lib/sageone_sdk/client/tax_rates.rb +18 -0
  37. data/lib/sageone_sdk/client/transactions.rb +13 -0
  38. data/lib/sageone_sdk/configurable.rb +43 -0
  39. data/lib/sageone_sdk/default.rb +47 -0
  40. data/lib/sageone_sdk/middleware.rb +6 -0
  41. data/lib/sageone_sdk/middleware/sdata_parser.rb +29 -0
  42. data/lib/sageone_sdk/middleware/signature.rb +26 -0
  43. data/lib/sageone_sdk/sdata_error_response.rb +36 -0
  44. data/lib/sageone_sdk/sdata_response.rb +58 -0
  45. data/lib/sageone_sdk/signature.rb +115 -0
  46. data/lib/sageone_sdk/version.rb +3 -0
  47. data/sageone_sdk.gemspec +37 -0
  48. data/spec/cassettes/SageoneSdk_Client_AccountTypes/account_types/_id/returns_a_specific_account_type.json +1 -0
  49. data/spec/cassettes/SageoneSdk_Client_AccountTypes/account_types/allows_pagination.json +1 -0
  50. data/spec/cassettes/SageoneSdk_Client_AccountTypes/account_types/returns_all_account_types.json +1 -0
  51. data/spec/cassettes/SageoneSdk_Client_BankAccounts/bank_accounts/_id/returns_a_specific_bank_account.json +1 -0
  52. data/spec/cassettes/SageoneSdk_Client_BankAccounts/bank_accounts/allows_pagination.json +1 -0
  53. data/spec/cassettes/SageoneSdk_Client_BankAccounts/bank_accounts/returns_all_bank_accounts.json +1 -0
  54. data/spec/cassettes/SageoneSdk_Client_ChartOfAccounts/chart_of_accounts_structure/returns_the_chart_of_accounts_structure.json +1 -0
  55. data/spec/cassettes/SageoneSdk_Client_ChartOfAccounts/chart_of_accounts_templates/returns_the_chart_of_accounts_templates.json +1 -0
  56. data/spec/cassettes/SageoneSdk_Client_ContactTypes/contact_types/_id/returns_a_specific_contact_type.json +1 -0
  57. data/spec/cassettes/SageoneSdk_Client_ContactTypes/contact_types/allows_pagination.json +1 -0
  58. data/spec/cassettes/SageoneSdk_Client_ContactTypes/contact_types/returns_all_contact_types.json +1 -0
  59. data/spec/cassettes/SageoneSdk_Client_Contacts/contacts/_id/returns_a_specific_contact.json +1 -0
  60. data/spec/cassettes/SageoneSdk_Client_Contacts/contacts/allows_pagination.json +1 -0
  61. data/spec/cassettes/SageoneSdk_Client_Contacts/contacts/returns_all_contacts.json +1 -0
  62. data/spec/cassettes/SageoneSdk_Client_Contacts/create_contacts/creates_a_new_contact.json +1 -0
  63. data/spec/cassettes/SageoneSdk_Client_Contacts/create_contacts/on_error/responds_with_an_appropriate_error_message.json +1 -0
  64. data/spec/cassettes/SageoneSdk_Client_Contacts/delete_a_contact/deletes_the_contact.json +1 -0
  65. data/spec/cassettes/SageoneSdk_Client_Contacts/update_a_contact/updates_the_given_contact.json +1 -0
  66. data/spec/cassettes/SageoneSdk_Client_Countries/countries/_id/returns_a_specific_account_type.json +1 -0
  67. data/spec/cassettes/SageoneSdk_Client_Countries/countries/allows_pagination.json +1 -0
  68. data/spec/cassettes/SageoneSdk_Client_Countries/countries/returns_all_countries.json +1 -0
  69. data/spec/cassettes/SageoneSdk_Client_Expenditures/create_expenditures/creates_a_new_expenditure.json +1 -0
  70. data/spec/cassettes/SageoneSdk_Client_Expenditures/create_expenditures/on_error/responds_with_an_appropriate_error_message.json +1 -0
  71. data/spec/cassettes/SageoneSdk_Client_Expenditures/delete_an_expenditure/deletes_the_expenditure.json +1 -0
  72. data/spec/cassettes/SageoneSdk_Client_Expenditures/expenditures/_id/returns_a_specific_expenditure.json +1 -0
  73. data/spec/cassettes/SageoneSdk_Client_Expenditures/expenditures/allows_pagination.json +1 -0
  74. data/spec/cassettes/SageoneSdk_Client_Expenditures/expenditures/returns_all_expenditures.json +1 -0
  75. data/spec/cassettes/SageoneSdk_Client_Expenditures/update_an_expenditure/updates_the_given_expenditure.json +1 -0
  76. data/spec/cassettes/SageoneSdk_Client_ExpenseMethods/expense_methods/_id/returns_a_specific_contact_type.json +1 -0
  77. data/spec/cassettes/SageoneSdk_Client_ExpenseMethods/expense_methods/returns_all_expense_methods.json +1 -0
  78. data/spec/cassettes/SageoneSdk_Client_ExpenseMethods/income_methods/_id/returns_a_specific_contact_type.json +1 -0
  79. data/spec/cassettes/SageoneSdk_Client_ExpenseMethods/income_methods/allows_pagination.json +1 -0
  80. data/spec/cassettes/SageoneSdk_Client_ExpenseMethods/income_methods/returns_all_income_methods.json +1 -0
  81. data/spec/cassettes/SageoneSdk_Client_ExpenseTypes/expense_types/_id/returns_a_specific_contact_type.json +1 -0
  82. data/spec/cassettes/SageoneSdk_Client_ExpenseTypes/expense_types/allows_pagination.json +1 -0
  83. data/spec/cassettes/SageoneSdk_Client_ExpenseTypes/expense_types/returns_all_expense_types.json +1 -0
  84. data/spec/cassettes/SageoneSdk_Client_FinancialSettings/financial_settings/returns_the_financial_settings.json +1 -0
  85. data/spec/cassettes/SageoneSdk_Client_FinancialSettings/update_financial_settings/updates_the_financial_settings.json +1 -0
  86. data/spec/cassettes/SageoneSdk_Client_IncomeMethods/income_methods/_id/returns_a_specific_contact_type.json +1 -0
  87. data/spec/cassettes/SageoneSdk_Client_IncomeMethods/income_methods/returns_all_income_methods.json +1 -0
  88. data/spec/cassettes/SageoneSdk_Client_IncomeTypes/income_types/_id/returns_a_specific_contact_type.json +1 -0
  89. data/spec/cassettes/SageoneSdk_Client_IncomeTypes/income_types/allows_pagination.json +1 -0
  90. data/spec/cassettes/SageoneSdk_Client_IncomeTypes/income_types/returns_all_income_types.json +1 -0
  91. data/spec/cassettes/SageoneSdk_Client_Incomes/create_incomes/creates_a_new_income.json +1 -0
  92. data/spec/cassettes/SageoneSdk_Client_Incomes/create_incomes/on_error/responds_with_an_appropriate_error_message.json +1 -0
  93. data/spec/cassettes/SageoneSdk_Client_Incomes/delete_an_income/deletes_the_income.json +1 -0
  94. data/spec/cassettes/SageoneSdk_Client_Incomes/incomes/_id/returns_a_specific_income.json +1 -0
  95. data/spec/cassettes/SageoneSdk_Client_Incomes/incomes/allows_pagination.json +1 -0
  96. data/spec/cassettes/SageoneSdk_Client_Incomes/incomes/returns_all_incomes.json +1 -0
  97. data/spec/cassettes/SageoneSdk_Client_Incomes/update_an_income/updates_the_given_income.json +1 -0
  98. data/spec/cassettes/SageoneSdk_Client_Journals/journals/creates_a_journal.json +1 -0
  99. data/spec/cassettes/SageoneSdk_Client_Journals/journals/on_error/responds_with_an_appropriate_error_message.json +1 -0
  100. data/spec/cassettes/SageoneSdk_Client_LedgerAccounts/create_a_ledger_account/creates_a_new_ledger_account.json +1 -0
  101. data/spec/cassettes/SageoneSdk_Client_LedgerAccounts/create_a_ledger_account/on_error/responds_with_an_appropriate_error_message.json +1 -0
  102. data/spec/cassettes/SageoneSdk_Client_LedgerAccounts/ledger_account_balances/does_not_return_ledger_accounts_with_a_zero_balance.json +1 -0
  103. data/spec/cassettes/SageoneSdk_Client_LedgerAccounts/ledger_account_balances/returns_ledger_accounts_with_a_balance.json +1 -0
  104. data/spec/cassettes/SageoneSdk_Client_LedgerAccounts/ledger_accounts/_id/returns_a_specific_ledger_account.json +1 -0
  105. data/spec/cassettes/SageoneSdk_Client_LedgerAccounts/ledger_accounts/allows_pagination.json +1 -0
  106. data/spec/cassettes/SageoneSdk_Client_LedgerAccounts/ledger_accounts/returns_all_ledger_accounts.json +1 -0
  107. data/spec/cassettes/SageoneSdk_Client_PaymentStatuses/payment_statuses/_id/returns_a_specific_contact_type.json +1 -0
  108. data/spec/cassettes/SageoneSdk_Client_PaymentStatuses/payment_statuses/allows_pagination.json +1 -0
  109. data/spec/cassettes/SageoneSdk_Client_PaymentStatuses/payment_statuses/returns_all_payment_statuses.json +1 -0
  110. data/spec/cassettes/SageoneSdk_Client_PeriodTypes/period_types/_id/returns_a_specific_contact_type.json +1 -0
  111. data/spec/cassettes/SageoneSdk_Client_PeriodTypes/period_types/allows_pagination.json +1 -0
  112. data/spec/cassettes/SageoneSdk_Client_PeriodTypes/period_types/returns_all_period_types.json +1 -0
  113. data/spec/cassettes/SageoneSdk_Client_Products/create_products/creates_a_new_product.json +1 -0
  114. data/spec/cassettes/SageoneSdk_Client_Products/create_products/on_error/responds_with_an_appropriate_error_message.json +1 -0
  115. data/spec/cassettes/SageoneSdk_Client_Products/delete_a_product/deletes_the_product.json +1 -0
  116. data/spec/cassettes/SageoneSdk_Client_Products/products/_id/returns_a_specific_product.json +1 -0
  117. data/spec/cassettes/SageoneSdk_Client_Products/products/allows_pagination.json +1 -0
  118. data/spec/cassettes/SageoneSdk_Client_Products/products/returns_all_products.json +1 -0
  119. data/spec/cassettes/SageoneSdk_Client_Products/update_a_product/updates_the_given_product.json +1 -0
  120. data/spec/cassettes/SageoneSdk_Client_PurchaseInvoices/create_purchase_invoices/creates_a_new_purchase_invoice.json +1 -0
  121. data/spec/cassettes/SageoneSdk_Client_PurchaseInvoices/create_purchase_invoices/on_error/responds_with_an_appropriate_error_message.json +1 -0
  122. data/spec/cassettes/SageoneSdk_Client_PurchaseInvoices/delete_a_purchase_invoice/deletes_the_purchase_invoice.json +1 -0
  123. data/spec/cassettes/SageoneSdk_Client_PurchaseInvoices/purchase_invoices/_id/returns_a_specific_purchase_invoice.json +1 -0
  124. data/spec/cassettes/SageoneSdk_Client_PurchaseInvoices/purchase_invoices/allows_pagination.json +1 -0
  125. data/spec/cassettes/SageoneSdk_Client_PurchaseInvoices/purchase_invoices/returns_all_purchase_invoices.json +1 -0
  126. data/spec/cassettes/SageoneSdk_Client_PurchaseInvoices/update_a_purchase_invoice/updates_the_given_purchase_invoice.json +1 -0
  127. data/spec/cassettes/SageoneSdk_Client_SalesInvoices/create_sales_invoices/creates_a_new_sales_invoice.json +1 -0
  128. data/spec/cassettes/SageoneSdk_Client_SalesInvoices/create_sales_invoices/on_error/responds_with_an_appropriate_error_message.json +1 -0
  129. data/spec/cassettes/SageoneSdk_Client_SalesInvoices/delete_a_sales_invoice/deletes_the_sales_invoice.json +1 -0
  130. data/spec/cassettes/SageoneSdk_Client_SalesInvoices/sales_invoices/_id/returns_a_specific_sales_invoice.json +1 -0
  131. data/spec/cassettes/SageoneSdk_Client_SalesInvoices/sales_invoices/allows_pagination.json +1 -0
  132. data/spec/cassettes/SageoneSdk_Client_SalesInvoices/sales_invoices/returns_all_sales_invoices.json +1 -0
  133. data/spec/cassettes/SageoneSdk_Client_SalesInvoices/update_a_sales_invoice/updates_the_given_sales_invoice.json +1 -0
  134. data/spec/cassettes/SageoneSdk_Client_Services/create_services/creates_a_new_service.json +1 -0
  135. data/spec/cassettes/SageoneSdk_Client_Services/create_services/on_error/responds_with_an_appropriate_error_message.json +1 -0
  136. data/spec/cassettes/SageoneSdk_Client_Services/delete_a_service/deletes_the_service.json +1 -0
  137. data/spec/cassettes/SageoneSdk_Client_Services/services/_id/returns_a_specific_service.json +1 -0
  138. data/spec/cassettes/SageoneSdk_Client_Services/services/allows_pagination.json +1 -0
  139. data/spec/cassettes/SageoneSdk_Client_Services/services/returns_all_services.json +1 -0
  140. data/spec/cassettes/SageoneSdk_Client_Services/update_a_service/updates_the_given_service.json +1 -0
  141. data/spec/cassettes/SageoneSdk_Client_TaxRates/tax_rates/_id/returns_a_specific_contact_type.json +1 -0
  142. data/spec/cassettes/SageoneSdk_Client_TaxRates/tax_rates/allows_pagination.json +1 -0
  143. data/spec/cassettes/SageoneSdk_Client_TaxRates/tax_rates/returns_all_tax_rates.json +1 -0
  144. data/spec/cassettes/SageoneSdk_Client_Transactions/transactions/returns_all_transactions.json +1 -0
  145. data/spec/cassettes/account_types_index.json +1 -0
  146. data/spec/cassettes/bank_accounts_index.json +1 -0
  147. data/spec/cassettes/contact_types_index.json +1 -0
  148. data/spec/cassettes/contacts_index.json +1 -0
  149. data/spec/cassettes/countries_index.json +1 -0
  150. data/spec/cassettes/customer_create.json +1 -0
  151. data/spec/cassettes/customers_index.json +1 -0
  152. data/spec/cassettes/expenditure_create.json +1 -0
  153. data/spec/cassettes/expenditures_index.json +1 -0
  154. data/spec/cassettes/expense_methods_index.json +1 -0
  155. data/spec/cassettes/expense_types_index.json +1 -0
  156. data/spec/cassettes/income_create.json +1 -0
  157. data/spec/cassettes/income_methods_index.json +1 -0
  158. data/spec/cassettes/income_types_index.json +1 -0
  159. data/spec/cassettes/incomes_index.json +1 -0
  160. data/spec/cassettes/ledger_accounts_index.json +1 -0
  161. data/spec/cassettes/payment_statuses_index.json +1 -0
  162. data/spec/cassettes/period_types_index.json +1 -0
  163. data/spec/cassettes/product_create.json +1 -0
  164. data/spec/cassettes/products_index.json +1 -0
  165. data/spec/cassettes/purchase_invoice_create.json +1 -0
  166. data/spec/cassettes/purchase_invoices_index.json +1 -0
  167. data/spec/cassettes/sales_invoice_create.json +1 -0
  168. data/spec/cassettes/sales_invoices_index.json +1 -0
  169. data/spec/cassettes/service_create.json +1 -0
  170. data/spec/cassettes/services_index.json +1 -0
  171. data/spec/cassettes/suppliers_index.json +1 -0
  172. data/spec/cassettes/tax_rates_index.json +1 -0
  173. data/spec/sageone_sdk/client/account_types_spec.rb +29 -0
  174. data/spec/sageone_sdk/client/bank_accounts_spec.rb +34 -0
  175. data/spec/sageone_sdk/client/chart_of_accounts_spec.rb +23 -0
  176. data/spec/sageone_sdk/client/contact_types_spec.rb +29 -0
  177. data/spec/sageone_sdk/client/contacts_spec.rb +75 -0
  178. data/spec/sageone_sdk/client/countries_spec.rb +29 -0
  179. data/spec/sageone_sdk/client/expenditures_spec.rb +113 -0
  180. data/spec/sageone_sdk/client/expense_methods_spec.rb +29 -0
  181. data/spec/sageone_sdk/client/expense_types_spec.rb +29 -0
  182. data/spec/sageone_sdk/client/financial_settings_spec.rb +23 -0
  183. data/spec/sageone_sdk/client/income_methods_spec.rb +29 -0
  184. data/spec/sageone_sdk/client/income_types_spec.rb +29 -0
  185. data/spec/sageone_sdk/client/incomes_spec.rb +114 -0
  186. data/spec/sageone_sdk/client/journals_spec.rb +39 -0
  187. data/spec/sageone_sdk/client/ledger_accounts_spec.rb +65 -0
  188. data/spec/sageone_sdk/client/payment_statuses_spec.rb +29 -0
  189. data/spec/sageone_sdk/client/period_types_spec.rb +29 -0
  190. data/spec/sageone_sdk/client/products_spec.rb +75 -0
  191. data/spec/sageone_sdk/client/purchase_invoices_spec.rb +124 -0
  192. data/spec/sageone_sdk/client/sales_invoices_spec.rb +126 -0
  193. data/spec/sageone_sdk/client/services_spec.rb +75 -0
  194. data/spec/sageone_sdk/client/tax_rates_spec.rb +29 -0
  195. data/spec/sageone_sdk/client/transactions_spec.rb +16 -0
  196. data/spec/sageone_sdk_spec.rb +19 -0
  197. data/spec/spec_helper.rb +40 -0
  198. metadata +601 -0
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ describe SageoneSdk::Client::ExpenseTypes do
4
+ before :each do
5
+ SageoneSdk.reset!
6
+ end
7
+
8
+ let(:client) { SageoneSdk::Client.new({access_token: "foo", signing_secret: "bar" }) }
9
+
10
+ describe "expense_types", :vcr do
11
+ it "returns all expense_types" do
12
+ expense_types = client.expense_types
13
+ expect(expense_types.first.name).not_to be_nil
14
+ end
15
+ end
16
+
17
+ describe "expense_types/:id", :vcr do
18
+ before :each do
19
+ VCR.use_cassette('expense_types_index') do
20
+ @expense_type_id = client.expense_types.first.id
21
+ end
22
+ end
23
+
24
+ it "returns a specific contact type" do
25
+ expense_type = client.expense_type(@expense_type_id)
26
+ expect(expense_type.name).to eq("Assets - Cost")
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ describe SageoneSdk::Client::FinancialSettings do
4
+ before :each do
5
+ SageoneSdk.reset!
6
+ end
7
+
8
+ let(:client) { SageoneSdk::Client.new({access_token: "foo", signing_secret: "bar"}) }
9
+
10
+ describe "financial settings", :vcr do
11
+ it "returns the financial settings" do
12
+ settings = client.financial_settings
13
+ expect(settings.year_end_date).not_to be_nil
14
+ end
15
+ end
16
+
17
+ describe "update financial settings", :vcr do
18
+ it "updates the financial settings" do
19
+ settings = client.update_financial_settings({year_end_date: "2016-12-31"})
20
+ expect(settings.year_end_date).to eq("2016-12-31")
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ describe SageoneSdk::Client::IncomeMethods do
4
+ before :each do
5
+ SageoneSdk.reset!
6
+ end
7
+
8
+ let(:client) { SageoneSdk::Client.new({access_token: "foo", signing_secret: "bar" }) }
9
+
10
+ describe "income_methods", :vcr do
11
+ it "returns all income_methods" do
12
+ income_methods = client.income_methods
13
+ expect(income_methods.first.name).not_to be_nil
14
+ end
15
+ end
16
+
17
+ describe "income_methods/:id", :vcr do
18
+ before :each do
19
+ VCR.use_cassette('income_methods_index') do
20
+ @income_method_id = client.income_methods.first.id
21
+ end
22
+ end
23
+
24
+ it "returns a specific contact type" do
25
+ income_method = client.income_method(@income_method_id)
26
+ expect(income_method.name).to eq("Bank Receipt")
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ describe SageoneSdk::Client::IncomeTypes do
4
+ before :each do
5
+ SageoneSdk.reset!
6
+ end
7
+
8
+ let(:client) { SageoneSdk::Client.new({access_token: "foo", signing_secret: "bar" }) }
9
+
10
+ describe "income_types", :vcr do
11
+ it "returns all income_types" do
12
+ income_types = client.income_types
13
+ expect(income_types.first.name).not_to be_nil
14
+ end
15
+ end
16
+
17
+ describe "income_types/:id", :vcr do
18
+ before :each do
19
+ VCR.use_cassette('income_types_index') do
20
+ @income_type_id = client.income_types.first.id
21
+ end
22
+ end
23
+
24
+ it "returns a specific contact type" do
25
+ income_type = client.income_type(@income_type_id)
26
+ expect(income_type.name).to eq("Sales Type A")
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,114 @@
1
+ require 'spec_helper'
2
+
3
+ describe SageoneSdk::Client::Incomes do
4
+ before :each do
5
+ SageoneSdk.reset!
6
+ end
7
+
8
+ let(:client) { SageoneSdk::Client.new({access_token: "foo", signing_secret: "bar" }) }
9
+
10
+ let(:source) do
11
+ VCR.use_cassette('ledger_accounts_index') do
12
+ client.ledger_accounts.find_by(:name => "Sales")
13
+ end
14
+ end
15
+
16
+ let(:destination) do
17
+ VCR.use_cassette('bank_accounts_index') do
18
+ client.bank_accounts.find_by(:account_name => "Current").ledger_account
19
+ end
20
+ end
21
+
22
+ let(:payment_method) do
23
+ VCR.use_cassette('income_methods_index') do
24
+ client.income_methods.find_by(:name => "Bank Receipt")
25
+ end
26
+ end
27
+
28
+ let(:tax_rate) do
29
+ VCR.use_cassette('tax_rates_index') do
30
+ client.tax_rates.find_by(:name => "Lower Rate")
31
+ end
32
+ end
33
+
34
+ let(:data) do
35
+ {
36
+ :date => Date.today.strftime("%d/%m/%Y"),
37
+ :amount => 100,
38
+ :tax_amount => 20,
39
+ :tax_percentage_rate => tax_rate.percentage,
40
+ :tax_code_id => tax_rate.id,
41
+ :source_id => source.id,
42
+ :destination_id => destination.id,
43
+ :payment_method_id => payment_method.id,
44
+ :reference => "Foo"
45
+ }
46
+ end
47
+
48
+ describe "incomes", :vcr do
49
+ it "returns all incomes" do
50
+ incomes = client.incomes
51
+ expect(incomes.first.reference).not_to be_nil
52
+ end
53
+
54
+ it "allows pagination" do
55
+ incomes = client.incomes({ "$itemsPerPage" => 2 })
56
+ expect(incomes.count).to eq(2)
57
+ end
58
+ end
59
+
60
+ describe "incomes/:id", :vcr do
61
+ before :each do
62
+ VCR.use_cassette('incomes_index') do
63
+ @income_id = client.incomes.first.id
64
+ end
65
+ end
66
+
67
+ it "returns a specific income" do
68
+ income = client.income(@income_id)
69
+ expect(income.reference).to eq("I12345")
70
+ end
71
+ end
72
+
73
+ describe "create incomes", :vcr do
74
+ it "creates a new income" do
75
+ income = client.create_income(data)
76
+
77
+ expect(income.reference).to eq("Foo")
78
+ end
79
+
80
+ context "on error" do
81
+ it "responds with an appropriate error message" do
82
+ income = client.create_income({})
83
+ expect(income.error?).to eq(true)
84
+ expect(income.full_messages).to include("Source: blank")
85
+ end
86
+ end
87
+ end
88
+
89
+ describe "update an income", :vcr do
90
+ before :each do
91
+ VCR.use_cassette('incomes_index') do
92
+ @income_id = client.incomes.first.id
93
+ end
94
+ end
95
+
96
+ it "updates the given income" do
97
+ income = client.update_income(@income_id, { :reference => "Bar" })
98
+ expect(income.reference).to eq("Bar")
99
+ end
100
+ end
101
+
102
+ describe "delete an income", :vcr do
103
+ before :each do
104
+ VCR.use_cassette('income_create') do
105
+ @income_id = client.create_income(data).id
106
+ end
107
+ end
108
+
109
+ it "deletes the income" do
110
+ income = client.delete_income(@income_id)
111
+ expect(income).to_not be_nil
112
+ end
113
+ end
114
+ end
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ describe SageoneSdk::Client::Journals do
4
+ before :each do
5
+ SageoneSdk.reset!
6
+ end
7
+
8
+ let(:client) { SageoneSdk::Client.new({access_token: "foo", signing_secret: "bar"}) }
9
+
10
+ describe "journals", :vcr do
11
+ let(:data) do
12
+ {"reference" => "ref001",
13
+ "description" => "description",
14
+ "date" => "2016-01-01",
15
+ "journal_lines[0][credit]" => 50.0,
16
+ "journal_lines[0][debit]" => 0.0,
17
+ "journal_lines[0][details]" => "detail",
18
+ "journal_lines[0][ledger_account][nominal_code]" => 1,
19
+ "journal_lines[1][credit]" => 0.0,
20
+ "journal_lines[1][debit]" => 50.0,
21
+ "journal_lines[1][details]" => "detail",
22
+ "journal_lines[1][ledger_account][nominal_code]" => 9999}
23
+ end
24
+
25
+ it "creates a journal" do
26
+ journal = client.create_journal(data)
27
+ expect(journal.reference).not_to be_nil
28
+ end
29
+
30
+ context "on error" do
31
+ it "responds with an appropriate error message" do
32
+ journal = client.create_journal({"foo" => "bar"})
33
+
34
+ expect(journal.error?).to eq(true)
35
+ expect(journal.full_messages).to eq(["Base: invalid_date"])
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,65 @@
1
+ require 'spec_helper'
2
+
3
+ describe SageoneSdk::Client::LedgerAccounts do
4
+ before :each do
5
+ SageoneSdk.reset!
6
+ end
7
+
8
+ let(:client) { SageoneSdk::Client.new({access_token: "foo", signing_secret: "bar" }) }
9
+
10
+ describe "ledger_accounts", :vcr do
11
+ it "returns all ledger_accounts" do
12
+ ledger_accounts = client.ledger_accounts
13
+ expect(ledger_accounts.first.name).not_to be_nil
14
+ end
15
+ end
16
+
17
+ describe "ledger_accounts/:id", :vcr do
18
+ before :each do
19
+ VCR.use_cassette('ledger_accounts_index') do
20
+ @ledger_account_id = client.ledger_accounts.first.id
21
+ end
22
+ end
23
+
24
+ it "returns a specific ledger account" do
25
+ ledger_account = client.ledger_account(@ledger_account_id)
26
+ expect(ledger_account.name).to eq("IT equipment cost")
27
+ end
28
+ end
29
+
30
+ describe "ledger_account_balances", :vcr do
31
+ it "returns ledger accounts with a balance" do
32
+ ledger_account_balances = client.ledger_account_balances({from_date: '2015-01-01', to_date: '2016-01-01'})
33
+ expect(ledger_account_balances.first.balance).to eq("12575.0")
34
+ end
35
+
36
+ it "does not return ledger accounts with a zero balance" do
37
+ ledger_account_zero_balances = client.ledger_account_balances({from_date: '2010-01-01', to_date: '2010-01-01'})
38
+ expect(ledger_account_zero_balances.length).to eq(0)
39
+ end
40
+ end
41
+
42
+ describe "create a ledger account", :vcr do
43
+ let(:data) do
44
+ {ledger_name: "My new ledger account",
45
+ display_name: "My new ledger account",
46
+ nominal_code: 1235,
47
+ included_in_chart: true,
48
+ category_id: 1}
49
+ end
50
+
51
+ it "creates a new ledger account" do
52
+ ledger_account = client.create_ledger_account(data)
53
+ expect(ledger_account.name).to eq("My new ledger account")
54
+ end
55
+
56
+ context "on error" do
57
+ it "responds with an appropriate error message" do
58
+ ledger_account = client.create_ledger_account({})
59
+
60
+ expect(ledger_account.error?).to eq(true)
61
+ expect(ledger_account.full_messages).to include("Name: This field is required.")
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ describe SageoneSdk::Client::PaymentStatuses do
4
+ before :each do
5
+ SageoneSdk.reset!
6
+ end
7
+
8
+ let(:client) { SageoneSdk::Client.new({access_token: "foo", signing_secret: "bar" }) }
9
+
10
+ describe "payment_statuses", :vcr do
11
+ it "returns all payment_statuses" do
12
+ payment_statuses = client.payment_statuses
13
+ expect(payment_statuses.first.name).not_to be_nil
14
+ end
15
+ end
16
+
17
+ describe "payment_statuses/:id", :vcr do
18
+ before :each do
19
+ VCR.use_cassette('payment_statuses_index') do
20
+ @payment_status_id = client.payment_statuses.first.id
21
+ end
22
+ end
23
+
24
+ it "returns a specific contact type" do
25
+ payment_status = client.payment_status(@payment_status_id)
26
+ expect(payment_status.name).to eq("Unpaid")
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ describe SageoneSdk::Client::PeriodTypes do
4
+ before :each do
5
+ SageoneSdk.reset!
6
+ end
7
+
8
+ let(:client) { SageoneSdk::Client.new({access_token: "foo", signing_secret: "bar" }) }
9
+
10
+ describe "period_types", :vcr do
11
+ it "returns all period_types" do
12
+ period_types = client.period_types
13
+ expect(period_types.first.name).not_to be_nil
14
+ end
15
+ end
16
+
17
+ describe "period_types/:id", :vcr do
18
+ before :each do
19
+ VCR.use_cassette('period_types_index') do
20
+ @period_type_id = client.period_types.first.id
21
+ end
22
+ end
23
+
24
+ it "returns a specific contact type" do
25
+ period_type = client.period_type(@period_type_id)
26
+ expect(period_type.name).to eq("Annually")
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,75 @@
1
+ require 'spec_helper'
2
+
3
+ describe SageoneSdk::Client::Products do
4
+ before :each do
5
+ SageoneSdk.reset!
6
+ end
7
+
8
+ let(:client) { SageoneSdk::Client.new({access_token: "foo", signing_secret: "bar" }) }
9
+
10
+ describe "products", :vcr do
11
+ it "returns all products" do
12
+ products = client.products
13
+ expect(products.first.product_code).not_to be_nil
14
+ end
15
+
16
+ it "allows pagination" do
17
+ products = client.products({ "$itemsPerPage" => 2 })
18
+ expect(products.count).to eq(2)
19
+ end
20
+ end
21
+
22
+ describe "products/:id", :vcr do
23
+ before :each do
24
+ VCR.use_cassette('products_index') do
25
+ @product_id = client.products.first.id
26
+ end
27
+ end
28
+
29
+ it "returns a specific product" do
30
+ product = client.product(@product_id)
31
+ expect(product.description).to eq("Foo")
32
+ end
33
+ end
34
+
35
+ describe "create products", :vcr do
36
+ it "creates a new product" do
37
+ product = client.create_product(:description => "Foo")
38
+ expect(product.description).to eq("Foo")
39
+ end
40
+
41
+ context "on error" do
42
+ it "responds with an appropriate error message" do
43
+ product = client.create_product({})
44
+ expect(product.error?).to eq(true)
45
+ expect(product.full_messages).to include("Description: blank")
46
+ end
47
+ end
48
+ end
49
+
50
+ describe "update a product", :vcr do
51
+ before :each do
52
+ VCR.use_cassette('products_index') do
53
+ @product_id = client.products.first.id
54
+ end
55
+ end
56
+
57
+ it "updates the given product" do
58
+ product = client.update_product(@product_id, { :product_code => "Bar" })
59
+ expect(product.product_code).to eq("Bar")
60
+ end
61
+ end
62
+
63
+ describe "delete a product", :vcr do
64
+ before :each do
65
+ VCR.use_cassette('product_create') do
66
+ @product_id = client.create_product(:description => "Foo").id
67
+ end
68
+ end
69
+
70
+ it "deletes the product" do
71
+ product = client.delete_product(@product_id)
72
+ expect(product).to_not be_nil
73
+ end
74
+ end
75
+ end