spec/rest/client_spec.rb in finapps-0.22.4.pre vs spec/rest/client_spec.rb in finapps-1.0.0
- old
+ new
@@ -1,91 +1,123 @@
-require 'rspec'
-require 'finapps'
+RSpec.describe FinApps::REST::Client do
-module FinApps
+ describe '#new' do
- describe FinApps::REST::Client do
+ context 'when company_identifier is NOT provided' do
+ it { expect { FinApps::REST::Client.new nil, :company_token }.to raise_error(FinApps::REST::MissingArgumentsError) }
+ end
- before do
- @client = FinApps::REST::Client.new :company_identifier, :company_token
+ context 'when company_token is NOT provided' do
+ it { expect { FinApps::REST::Client.new :company_identifier, nil }.to raise_error(FinApps::REST::MissingArgumentsError) }
end
- it 'responds to send' do
- expect(@client).to respond_to(:send)
+ context 'when company_identifier is not string or symbol' do
+ it { expect { FinApps::REST::Client.new 1, :company_token }.to raise_error(FinApps::REST::InvalidArgumentsError) }
end
- it 'responds to user_credentials!' do
- expect(@client).to respond_to(:user_credentials!)
+ context 'when company_token is not string or symbol' do
+ it { expect { FinApps::REST::Client.new :company_identifier, 1 }.to raise_error(FinApps::REST::InvalidArgumentsError) }
end
- it 'responds to public api methods' do
- [:alert, :alert_definition, :alert_settings, :alert_preferences,
- :budgets, :budget_calculation, :budget_models, :cashflows,
- :categories, :institutions, :transactions,
- :user_institutions, :users,
- :rule_sets].each do |method|
- expect(@client).to respond_to(method)
- end
+ context 'when options are not provided' do
+ it { expect { FinApps::REST::Client.new :company_identifier, :company_token }.not_to raise_error }
end
- describe '#new' do
- context 'when company credentials are NOT provided' do
- it 'should raise a MissingArgumentsError exception' do
- expect { FinApps::REST::Client.new nil, nil }.to raise_error(FinApps::REST::MissingArgumentsError)
- end
- end
+ end
- context 'when company credentials are of invalid type' do
- it 'should raise an InvalidArgumentsError exception' do
- expect { FinApps::REST::Client.new 1, 2 }.to raise_error(FinApps::REST::InvalidArgumentsError)
- end
- end
+ context 'after initialized' do
- context 'when company credentials are provided' do
- it 'returns a client object' do
- expect(@client).to be_an_instance_of(FinApps::REST::Client)
- end
+ let(:client) { FinApps::REST::Client.new(:company_identifier, :company_token) }
+
+ [:send_request, :connection, :users, :institutions, :user_institutions, :transactions,
+ :categories, :budget_models, :budget_calculation, :budgets, :cashflows, :alert,
+ :alert_definition, :alert_preferences, :alert_settings, :rule_sets, :user_credentials!].each do |method|
+ it "responds to #{method}" do
+ expect(client).to respond_to(method)
end
end
- describe '.users' do
- it 'returns a Users object' do
- expect(@client.users).to be_an_instance_of(FinApps::REST::Users)
- end
+ describe '#users' do
+ it { expect(client.users).to be_an_instance_of(FinApps::REST::Users) }
end
- describe '.users' do
- it 'returns a Users object' do
- expect(@client.users).to be_an_instance_of(FinApps::REST::Users)
- end
+ describe '#institutions' do
+ it { expect(client.institutions).to be_an_instance_of(FinApps::REST::Institutions) }
end
- describe '.institutions' do
- it 'returns an Institutions object' do
- expect(@client.institutions).to be_an_instance_of(FinApps::REST::Institutions)
- end
+ describe '#user_institutions' do
+ it { expect(client.user_institutions).to be_an_instance_of(FinApps::REST::UserInstitutions) }
end
- describe '.user_institutions' do
- it 'returns a UserInstitutions object' do
- expect(@client.user_institutions).to be_an_instance_of(FinApps::REST::UserInstitutions)
- end
+ describe '#categories' do
+ it { expect(client.categories).to be_an_instance_of(FinApps::REST::Categories) }
end
- describe '.transactions' do
- it 'returns a Transactions object' do
- expect(@client.transactions).to be_an_instance_of(FinApps::REST::Transactions)
- end
+ describe '#budget_models' do
+ it { expect(client.budget_models).to be_an_instance_of(FinApps::REST::BudgetModels) }
end
+ describe '#budget_calculation' do
+ it { expect(client.budget_calculation).to be_an_instance_of(FinApps::REST::BudgetCalculation) }
+ end
+
+ describe '#budgets' do
+ it { expect(client.budgets).to be_an_instance_of(FinApps::REST::Budgets) }
+ end
+
+ describe '#cashflows' do
+ it { expect(client.cashflows).to be_an_instance_of(FinApps::REST::Cashflows) }
+ end
+
+ describe '#alert' do
+ it { expect(client.alert).to be_an_instance_of(FinApps::REST::Alert) }
+ end
+
+ describe '#alert_definition' do
+ it { expect(client.alert_definition).to be_an_instance_of(FinApps::REST::AlertDefinition) }
+ end
+
+ describe '#alert_preferences' do
+ it { expect(client.alert_preferences).to be_an_instance_of(FinApps::REST::AlertPreferences) }
+ end
+
+ describe '#alert_settings' do
+ it { expect(client.alert_settings).to be_an_instance_of(FinApps::REST::AlertSettings) }
+ end
+
+ describe '#rule_sets' do
+ it { expect(client.rule_sets).to be_an_instance_of(FinApps::REST::Relevance::Rulesets) }
+ end
+
describe '#connection' do
- it 'looks like Faraday connection' do
- expect(@client.connection).to respond_to(:run_request)
+ it { expect(client.connection).to be_an_instance_of(Faraday::Connection) }
+ end
+
+ [:connection, :users, :institutions, :user_institutions, :transactions,
+ :categories, :budget_models, :budget_calculation, :budgets, :cashflows, :alert,
+ :alert_definition, :alert_preferences, :alert_settings, :rule_sets].each do |method|
+ it "memoizes the result of #{method}" do
+ first, second = client.send(method), client.send(method)
+ expect(first.object_id).to eq(second.object_id)
end
- it 'memoizes the connection' do
- c1, c2 = @client.connection, @client.connection
- expect(c1.object_id).to eq(c2.object_id)
+ end
+
+ describe '#send_request' do
+
+ context 'when path is NOT provided' do
+ it { expect { client.send_request(nil, :post) }.to raise_error(FinApps::REST::MissingArgumentsError) }
end
+
+ context 'when method is NOT provided' do
+ it { expect { client.send_request(:path, nil) }.to raise_error(FinApps::REST::MissingArgumentsError) }
+ end
+
+ context 'when method is NOT supported' do
+ it { expect { client.send_request(:path, :unsupported_method) }.to raise_error(FinApps::REST::InvalidArgumentsError) }
+ end
+
end
end
-end
\ No newline at end of file
+
+end
+