sageone_sdk 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +15 -0
- data/.rspec +2 -0
- data/.travis.yml +15 -0
- data/Fudgefile +27 -0
- data/Gemfile +12 -0
- data/Guardfile +33 -0
- data/LICENSE +22 -0
- data/README.md +57 -0
- data/Rakefile +10 -0
- data/fudge_settings.yml +5 -0
- data/lib/sageone_sdk.rb +16 -0
- data/lib/sageone_sdk/authentication.rb +8 -0
- data/lib/sageone_sdk/client.rb +117 -0
- data/lib/sageone_sdk/client/account_types.rb +19 -0
- data/lib/sageone_sdk/client/bank_accounts.rb +18 -0
- data/lib/sageone_sdk/client/chart_of_accounts.rb +21 -0
- data/lib/sageone_sdk/client/contact_types.rb +20 -0
- data/lib/sageone_sdk/client/contacts.rb +82 -0
- data/lib/sageone_sdk/client/countries.rb +18 -0
- data/lib/sageone_sdk/client/expenditures.rb +26 -0
- data/lib/sageone_sdk/client/expense_methods.rb +19 -0
- data/lib/sageone_sdk/client/expense_types.rb +19 -0
- data/lib/sageone_sdk/client/financial_settings.rb +23 -0
- data/lib/sageone_sdk/client/income_methods.rb +19 -0
- data/lib/sageone_sdk/client/income_types.rb +19 -0
- data/lib/sageone_sdk/client/incomes.rb +51 -0
- data/lib/sageone_sdk/client/journals.rb +27 -0
- data/lib/sageone_sdk/client/ledger_accounts.rb +52 -0
- data/lib/sageone_sdk/client/payment_statuses.rb +18 -0
- data/lib/sageone_sdk/client/period_types.rb +19 -0
- data/lib/sageone_sdk/client/products.rb +50 -0
- data/lib/sageone_sdk/client/purchase_invoices.rb +61 -0
- data/lib/sageone_sdk/client/sales_invoices.rb +65 -0
- data/lib/sageone_sdk/client/services.rb +48 -0
- data/lib/sageone_sdk/client/tax_rates.rb +18 -0
- data/lib/sageone_sdk/client/transactions.rb +13 -0
- data/lib/sageone_sdk/configurable.rb +43 -0
- data/lib/sageone_sdk/default.rb +47 -0
- data/lib/sageone_sdk/middleware.rb +6 -0
- data/lib/sageone_sdk/middleware/sdata_parser.rb +29 -0
- data/lib/sageone_sdk/middleware/signature.rb +26 -0
- data/lib/sageone_sdk/sdata_error_response.rb +36 -0
- data/lib/sageone_sdk/sdata_response.rb +58 -0
- data/lib/sageone_sdk/signature.rb +115 -0
- data/lib/sageone_sdk/version.rb +3 -0
- data/sageone_sdk.gemspec +37 -0
- data/spec/cassettes/SageoneSdk_Client_AccountTypes/account_types/_id/returns_a_specific_account_type.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_AccountTypes/account_types/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_AccountTypes/account_types/returns_all_account_types.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_BankAccounts/bank_accounts/_id/returns_a_specific_bank_account.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_BankAccounts/bank_accounts/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_BankAccounts/bank_accounts/returns_all_bank_accounts.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_ChartOfAccounts/chart_of_accounts_structure/returns_the_chart_of_accounts_structure.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_ChartOfAccounts/chart_of_accounts_templates/returns_the_chart_of_accounts_templates.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_ContactTypes/contact_types/_id/returns_a_specific_contact_type.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_ContactTypes/contact_types/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_ContactTypes/contact_types/returns_all_contact_types.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Contacts/contacts/_id/returns_a_specific_contact.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Contacts/contacts/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Contacts/contacts/returns_all_contacts.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Contacts/create_contacts/creates_a_new_contact.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Contacts/create_contacts/on_error/responds_with_an_appropriate_error_message.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Contacts/delete_a_contact/deletes_the_contact.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Contacts/update_a_contact/updates_the_given_contact.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Countries/countries/_id/returns_a_specific_account_type.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Countries/countries/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Countries/countries/returns_all_countries.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Expenditures/create_expenditures/creates_a_new_expenditure.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Expenditures/create_expenditures/on_error/responds_with_an_appropriate_error_message.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Expenditures/delete_an_expenditure/deletes_the_expenditure.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Expenditures/expenditures/_id/returns_a_specific_expenditure.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Expenditures/expenditures/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Expenditures/expenditures/returns_all_expenditures.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Expenditures/update_an_expenditure/updates_the_given_expenditure.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_ExpenseMethods/expense_methods/_id/returns_a_specific_contact_type.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_ExpenseMethods/expense_methods/returns_all_expense_methods.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_ExpenseMethods/income_methods/_id/returns_a_specific_contact_type.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_ExpenseMethods/income_methods/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_ExpenseMethods/income_methods/returns_all_income_methods.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_ExpenseTypes/expense_types/_id/returns_a_specific_contact_type.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_ExpenseTypes/expense_types/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_ExpenseTypes/expense_types/returns_all_expense_types.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_FinancialSettings/financial_settings/returns_the_financial_settings.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_FinancialSettings/update_financial_settings/updates_the_financial_settings.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_IncomeMethods/income_methods/_id/returns_a_specific_contact_type.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_IncomeMethods/income_methods/returns_all_income_methods.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_IncomeTypes/income_types/_id/returns_a_specific_contact_type.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_IncomeTypes/income_types/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_IncomeTypes/income_types/returns_all_income_types.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Incomes/create_incomes/creates_a_new_income.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Incomes/create_incomes/on_error/responds_with_an_appropriate_error_message.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Incomes/delete_an_income/deletes_the_income.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Incomes/incomes/_id/returns_a_specific_income.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Incomes/incomes/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Incomes/incomes/returns_all_incomes.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Incomes/update_an_income/updates_the_given_income.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Journals/journals/creates_a_journal.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Journals/journals/on_error/responds_with_an_appropriate_error_message.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_LedgerAccounts/create_a_ledger_account/creates_a_new_ledger_account.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_LedgerAccounts/create_a_ledger_account/on_error/responds_with_an_appropriate_error_message.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_LedgerAccounts/ledger_account_balances/does_not_return_ledger_accounts_with_a_zero_balance.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_LedgerAccounts/ledger_account_balances/returns_ledger_accounts_with_a_balance.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_LedgerAccounts/ledger_accounts/_id/returns_a_specific_ledger_account.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_LedgerAccounts/ledger_accounts/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_LedgerAccounts/ledger_accounts/returns_all_ledger_accounts.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_PaymentStatuses/payment_statuses/_id/returns_a_specific_contact_type.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_PaymentStatuses/payment_statuses/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_PaymentStatuses/payment_statuses/returns_all_payment_statuses.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_PeriodTypes/period_types/_id/returns_a_specific_contact_type.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_PeriodTypes/period_types/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_PeriodTypes/period_types/returns_all_period_types.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Products/create_products/creates_a_new_product.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Products/create_products/on_error/responds_with_an_appropriate_error_message.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Products/delete_a_product/deletes_the_product.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Products/products/_id/returns_a_specific_product.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Products/products/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Products/products/returns_all_products.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Products/update_a_product/updates_the_given_product.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_PurchaseInvoices/create_purchase_invoices/creates_a_new_purchase_invoice.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_PurchaseInvoices/create_purchase_invoices/on_error/responds_with_an_appropriate_error_message.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_PurchaseInvoices/delete_a_purchase_invoice/deletes_the_purchase_invoice.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_PurchaseInvoices/purchase_invoices/_id/returns_a_specific_purchase_invoice.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_PurchaseInvoices/purchase_invoices/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_PurchaseInvoices/purchase_invoices/returns_all_purchase_invoices.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_PurchaseInvoices/update_a_purchase_invoice/updates_the_given_purchase_invoice.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_SalesInvoices/create_sales_invoices/creates_a_new_sales_invoice.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_SalesInvoices/create_sales_invoices/on_error/responds_with_an_appropriate_error_message.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_SalesInvoices/delete_a_sales_invoice/deletes_the_sales_invoice.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_SalesInvoices/sales_invoices/_id/returns_a_specific_sales_invoice.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_SalesInvoices/sales_invoices/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_SalesInvoices/sales_invoices/returns_all_sales_invoices.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_SalesInvoices/update_a_sales_invoice/updates_the_given_sales_invoice.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Services/create_services/creates_a_new_service.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Services/create_services/on_error/responds_with_an_appropriate_error_message.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Services/delete_a_service/deletes_the_service.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Services/services/_id/returns_a_specific_service.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Services/services/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Services/services/returns_all_services.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Services/update_a_service/updates_the_given_service.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_TaxRates/tax_rates/_id/returns_a_specific_contact_type.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_TaxRates/tax_rates/allows_pagination.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_TaxRates/tax_rates/returns_all_tax_rates.json +1 -0
- data/spec/cassettes/SageoneSdk_Client_Transactions/transactions/returns_all_transactions.json +1 -0
- data/spec/cassettes/account_types_index.json +1 -0
- data/spec/cassettes/bank_accounts_index.json +1 -0
- data/spec/cassettes/contact_types_index.json +1 -0
- data/spec/cassettes/contacts_index.json +1 -0
- data/spec/cassettes/countries_index.json +1 -0
- data/spec/cassettes/customer_create.json +1 -0
- data/spec/cassettes/customers_index.json +1 -0
- data/spec/cassettes/expenditure_create.json +1 -0
- data/spec/cassettes/expenditures_index.json +1 -0
- data/spec/cassettes/expense_methods_index.json +1 -0
- data/spec/cassettes/expense_types_index.json +1 -0
- data/spec/cassettes/income_create.json +1 -0
- data/spec/cassettes/income_methods_index.json +1 -0
- data/spec/cassettes/income_types_index.json +1 -0
- data/spec/cassettes/incomes_index.json +1 -0
- data/spec/cassettes/ledger_accounts_index.json +1 -0
- data/spec/cassettes/payment_statuses_index.json +1 -0
- data/spec/cassettes/period_types_index.json +1 -0
- data/spec/cassettes/product_create.json +1 -0
- data/spec/cassettes/products_index.json +1 -0
- data/spec/cassettes/purchase_invoice_create.json +1 -0
- data/spec/cassettes/purchase_invoices_index.json +1 -0
- data/spec/cassettes/sales_invoice_create.json +1 -0
- data/spec/cassettes/sales_invoices_index.json +1 -0
- data/spec/cassettes/service_create.json +1 -0
- data/spec/cassettes/services_index.json +1 -0
- data/spec/cassettes/suppliers_index.json +1 -0
- data/spec/cassettes/tax_rates_index.json +1 -0
- data/spec/sageone_sdk/client/account_types_spec.rb +29 -0
- data/spec/sageone_sdk/client/bank_accounts_spec.rb +34 -0
- data/spec/sageone_sdk/client/chart_of_accounts_spec.rb +23 -0
- data/spec/sageone_sdk/client/contact_types_spec.rb +29 -0
- data/spec/sageone_sdk/client/contacts_spec.rb +75 -0
- data/spec/sageone_sdk/client/countries_spec.rb +29 -0
- data/spec/sageone_sdk/client/expenditures_spec.rb +113 -0
- data/spec/sageone_sdk/client/expense_methods_spec.rb +29 -0
- data/spec/sageone_sdk/client/expense_types_spec.rb +29 -0
- data/spec/sageone_sdk/client/financial_settings_spec.rb +23 -0
- data/spec/sageone_sdk/client/income_methods_spec.rb +29 -0
- data/spec/sageone_sdk/client/income_types_spec.rb +29 -0
- data/spec/sageone_sdk/client/incomes_spec.rb +114 -0
- data/spec/sageone_sdk/client/journals_spec.rb +39 -0
- data/spec/sageone_sdk/client/ledger_accounts_spec.rb +65 -0
- data/spec/sageone_sdk/client/payment_statuses_spec.rb +29 -0
- data/spec/sageone_sdk/client/period_types_spec.rb +29 -0
- data/spec/sageone_sdk/client/products_spec.rb +75 -0
- data/spec/sageone_sdk/client/purchase_invoices_spec.rb +124 -0
- data/spec/sageone_sdk/client/sales_invoices_spec.rb +126 -0
- data/spec/sageone_sdk/client/services_spec.rb +75 -0
- data/spec/sageone_sdk/client/tax_rates_spec.rb +29 -0
- data/spec/sageone_sdk/client/transactions_spec.rb +16 -0
- data/spec/sageone_sdk_spec.rb +19 -0
- data/spec/spec_helper.rb +40 -0
- 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
|