finapps 2.0.11 → 2.0.12

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e9685b0a3f9fad48a9bd328149950e69d9ceece8
4
- data.tar.gz: 499cd1b6b4e58d8cc0c80d3bbee9ea7b47b187e4
3
+ metadata.gz: 892658d99508ced4e79d11b2b61897f7c795b381
4
+ data.tar.gz: b839df6e00c6ad1720ed2a36fc53008c3fb9c6ed
5
5
  SHA512:
6
- metadata.gz: 221ed36e938139757128972a2a1b249249bd9fc06aa2c1d75717af2d80a58a68db4dfb81377ba90e260c83f6b21cdfc72d37483a0a9df1739a2d689996caebf7
7
- data.tar.gz: f6c5e89211c89c172c42f5aebb35e7fdd1b5350b894e49c72ba3b3b3d83771c14ea7c59ce2c153969f48dcc90817e1cdf788d92083b36205d1cd2a90888cd1c9
6
+ metadata.gz: cfa0c2e7fd724240be7ca119f996b70bb53bac454f21e1883b3a6b892e9ea628a0bc714c3eda3106a356aa69c01d6832f32dfd7b8f95880c478c32c923cfa9c8
7
+ data.tar.gz: 96ad3e2ddd0d94b881bf604316ada36e8abad77eed58692a11a95fd350dd62f05482855a9b46b84ee55ce3d7d677e90113a3fd68bdaa7f8a3629319d6fa3c232
@@ -5,8 +5,6 @@ module ObjectExtensions
5
5
  Integer(self)
6
6
  rescue
7
7
  false
8
- else
9
- true
10
8
  end
11
9
  end
12
10
  end
data/lib/finapps.rb CHANGED
@@ -22,6 +22,7 @@ require 'finapps/rest/defaults'
22
22
  require 'finapps/rest/resources'
23
23
 
24
24
  require 'finapps/rest/users'
25
+ require 'finapps/rest/order_tokens'
25
26
  require 'finapps/rest/orders'
26
27
 
27
28
  require 'finapps/rest/configuration'
@@ -24,6 +24,10 @@ module FinApps
24
24
  @users ||= FinApps::REST::Users.new self
25
25
  end
26
26
 
27
+ def order_tokens
28
+ @order_tokens ||= FinApps::REST::OrderTokens.new self
29
+ end
30
+
27
31
  def orders
28
32
  @orders ||= FinApps::REST::Orders.new self
29
33
  end
@@ -23,7 +23,7 @@ module FinApps
23
23
  conn.use FinApps::Middleware::RaiseError
24
24
  conn.response :rashify
25
25
  conn.response :json, content_type: /\bjson$/
26
- conn.response :logger, logger, bodies: true
26
+ conn.response :logger, logger, bodies: (ENV['RSPEC'] != 'true')
27
27
 
28
28
  # Adapter (ensure that the adapter is always last.)
29
29
  conn.adapter :typhoeus
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+ module FinApps
3
+ module REST
4
+ class OrderTokens < FinApps::REST::Resources # :nodoc:
5
+ using ObjectExtensions
6
+ using StringExtensions
7
+
8
+ def show(token)
9
+ raise MissingArgumentsError.new 'Missing argument: token.' if token.blank?
10
+
11
+ create nil, "orders/#{ERB::Util.url_encode(token)}"
12
+ end
13
+ end
14
+ end
15
+ end
@@ -14,16 +14,14 @@ module FinApps
14
14
  end
15
15
 
16
16
  def create(params={}, path=nil)
17
- path = self.class.name.split('::').last.downcase if path.nil?
17
+ path = end_point if path.nil?
18
18
  logger.debug "#{self.class.name}##{__method__} => path: #{path} params: #{params}"
19
19
  results, error_messages = client.send_request(path, :post, params)
20
20
  [results, error_messages]
21
21
  end
22
22
 
23
23
  def show(id, path=nil)
24
- if path.nil?
25
- path = "#{self.class.name.split('::').last.downcase}/:id".sub ':id', ERB::Util.url_encode(id)
26
- end
24
+ path = "#{end_point}/:id".sub ':id', ERB::Util.url_encode(id) if path.nil?
27
25
  logger.debug "#{self.class.name}##{__method__} => path: #{path}"
28
26
  results, error_messages = client.send_request(path, :get)
29
27
  [results, error_messages]
@@ -34,6 +32,10 @@ module FinApps
34
32
  def logger
35
33
  client.logger
36
34
  end
35
+
36
+ def end_point
37
+ self.class.name.split('::').last.downcase
38
+ end
37
39
  end
38
40
  end
39
41
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module FinApps
3
- VERSION = '2.0.11'
3
+ VERSION = '2.0.12'
4
4
  end
@@ -13,7 +13,7 @@ RSpec.describe FinApps::REST::Client do
13
13
  context 'an instance of Client' do
14
14
  subject { FinApps::REST::Client.new(:company_identifier, :company_token) }
15
15
 
16
- %i(users orders).each do |method|
16
+ %i(users orders order_tokens).each do |method|
17
17
  it "responds to #{method}" do
18
18
  expect(subject).to respond_to(method)
19
19
  end
@@ -23,6 +23,10 @@ RSpec.describe FinApps::REST::Client do
23
23
  it { expect(subject.users).to be_an_instance_of(FinApps::REST::Users) }
24
24
  end
25
25
 
26
+ describe '#order_tokens' do
27
+ it { expect(subject.order_tokens).to be_an_instance_of(FinApps::REST::OrderTokens) }
28
+ end
29
+
26
30
  describe '#orders' do
27
31
  it { expect(subject.orders).to be_an_instance_of(FinApps::REST::Orders) }
28
32
  end
@@ -30,7 +34,7 @@ RSpec.describe FinApps::REST::Client do
30
34
  # [:users, :institutions, :user_institutions, :transactions, :categories,
31
35
  # :budget_models, :budget_calculation, :budgets, :cashflows,
32
36
  # :alert, :alert_definition, :alert_preferences, :alert_settings, :rule_sets]
33
- %i(users orders).each do |method|
37
+ %i(users orders order_tokens).each do |method|
34
38
  it "memoizes the result of #{method}" do
35
39
  first = subject.send(method)
36
40
  second = subject.send(method)
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+ RSpec.describe FinApps::REST::OrderTokens, 'initialized with valid FinApps::Client object' do
3
+ describe '#show' do
4
+ client = FinApps::REST::Client.new :company_identifier, :company_token
5
+ subject(:order_tokens) { FinApps::REST::OrderTokens.new(client) }
6
+
7
+ context 'when missing token' do
8
+ it { expect { subject.show(nil) }.to raise_error(FinApps::MissingArgumentsError, 'Missing argument: token.') }
9
+ end
10
+
11
+ context 'for valid token' do
12
+ let(:show) { subject.show(:valid_token) }
13
+ let(:results) { show[0] }
14
+ let(:error_messages) { show[1] }
15
+
16
+ it { expect { show }.not_to raise_error }
17
+ it('results is a Hashie::Rash') { expect(results).to be_a(Hashie::Rash) }
18
+ it('error_messages array is empty') { expect(error_messages).to eq([]) }
19
+ end
20
+
21
+ context 'for invalid token' do
22
+ let(:show) { subject.show(:invalid_token) }
23
+ let(:results) { show[0] }
24
+ let(:error_messages) { show[1] }
25
+
26
+ it { expect { show }.not_to raise_error }
27
+ it('results is nil') { expect(results).to be_nil }
28
+ it('error messages array is populated') { expect(error_messages.first).to eq('resource not found') }
29
+ end
30
+ end
31
+ end
data/spec/spec_helper.rb CHANGED
@@ -4,6 +4,8 @@ if ENV['CODECLIMATE_REPO_TOKEN']
4
4
  CodeClimate::TestReporter.start
5
5
  end
6
6
 
7
+ ENV['RSPEC'] = 'true'
8
+
7
9
  require 'bundler/setup'
8
10
  Bundler.setup
9
11
 
@@ -8,6 +8,8 @@ class FakeApi < Sinatra::Base
8
8
  get('/v2/resources/:id') { json_response 200, 'resource.json' }
9
9
 
10
10
  # orders
11
+ post('/v2/orders/invalid_token') { json_response 404, 'order_token_invalid.json' }
12
+ post('/v2/orders/valid_token') { json_response 200, 'order_token.json' }
11
13
  get('/v2/orders/:id') { json_response 200, 'resource.json' }
12
14
 
13
15
  # users
@@ -16,6 +18,7 @@ class FakeApi < Sinatra::Base
16
18
  # relevance
17
19
  get('/v2/relevance/ruleset/names') { json_response 200, 'relevance_ruleset_names.json' }
18
20
 
21
+ # errors
19
22
  get('/v2/client_error') { json_response 400, 'error.json' }
20
23
  get('/v2/server_error') { status 500 }
21
24
  get('/v2/proxy_error') { status 407 }
@@ -0,0 +1,67 @@
1
+ {
2
+ "public_id": "ead38f03-96e4-4c62-42fd-281d96170e41",
3
+ "user_id": "62356939-5837-48cc-4a3a-87cbe58daa0e",
4
+ "applicant": {
5
+ "first_name": "John",
6
+ "last_name": "Smith",
7
+ "ssn": "",
8
+ "dob": "",
9
+ "email": "erich@financialapps.com",
10
+ "mobile_phone": "",
11
+ "work_phone": "",
12
+ "home_phone": "",
13
+ "address": "",
14
+ "address2": "",
15
+ "city": "",
16
+ "state": "",
17
+ "zip": "33021",
18
+ "employer": {
19
+ "name": "",
20
+ "poistion": "",
21
+ "length_months": 0,
22
+ "pay_cycle": "",
23
+ "type": "",
24
+ "start_date": "0001-01-01T00:00:00Z",
25
+ "end_date": "0001-01-01T00:00:00Z",
26
+ "pay_amt_gross": 0,
27
+ "pay_amt_net": 0
28
+ },
29
+ "previous_employers": [],
30
+ "annual_income": 0,
31
+ "monthly_income": 0,
32
+ "weekly_income": 0,
33
+ "net_income": 0,
34
+ "marital_status": "",
35
+ "dependents": 0
36
+ },
37
+ "institutions": [
38
+ {
39
+ "name": "DAG",
40
+ "account_type": "",
41
+ "routing_no": "99999999",
42
+ "account_no": "1",
43
+ "name_on_account": "John Smith",
44
+ "account_nickname": "",
45
+ "account_address": "",
46
+ "shared": false,
47
+ "site_id": 16441
48
+ }
49
+ ],
50
+ "product": {
51
+ "public_id": "77777777-6ac6-4183-a671-6e75ca5989a5",
52
+ "code": "PROD2"
53
+ },
54
+ "requestor": {
55
+ "company_id": "",
56
+ "company_name": "",
57
+ "broker": "",
58
+ "processor": "",
59
+ "phone": "",
60
+ "email": "",
61
+ "reference_no": ""
62
+ },
63
+ "webhook": "",
64
+ "status": 2,
65
+ "date": "2016-07-12T19:33:33.655Z",
66
+ "date_modified": "2016-07-12T19:33:33.655Z"
67
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "messages": [
3
+ "resource not found"
4
+ ]
5
+ }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: finapps
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.11
4
+ version: 2.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Erich Quintero
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-18 00:00:00.000000000 Z
11
+ date: 2016-07-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -261,6 +261,7 @@ files:
261
261
  - lib/finapps/rest/connection.rb
262
262
  - lib/finapps/rest/credentials.rb
263
263
  - lib/finapps/rest/defaults.rb
264
+ - lib/finapps/rest/order_tokens.rb
264
265
  - lib/finapps/rest/orders.rb
265
266
  - lib/finapps/rest/resources.rb
266
267
  - lib/finapps/rest/users.rb
@@ -276,11 +277,14 @@ files:
276
277
  - spec/rest/client_spec.rb
277
278
  - spec/rest/configuration_spec.rb
278
279
  - spec/rest/credentials_spec.rb
280
+ - spec/rest/order_tokens_spec.rb
279
281
  - spec/rest/orders_spec.rb
280
282
  - spec/rest/resources_spec.rb
281
283
  - spec/spec_helper.rb
282
284
  - spec/support/fake_api.rb
283
285
  - spec/support/fixtures/error.json
286
+ - spec/support/fixtures/order_token.json
287
+ - spec/support/fixtures/order_token_invalid.json
284
288
  - spec/support/fixtures/relevance_ruleset_names.json
285
289
  - spec/support/fixtures/resource.json
286
290
  - spec/support/fixtures/user.json
@@ -324,6 +328,7 @@ test_files:
324
328
  - spec/rest/resources_spec.rb
325
329
  - spec/rest/client_spec.rb
326
330
  - spec/rest/orders_spec.rb
331
+ - spec/rest/order_tokens_spec.rb
327
332
  - spec/rest/base_client_spec.rb
328
333
  - spec/rest/configuration_spec.rb
329
334
  - spec/core_extensions/object/is_integer_spec.rb