finapps 2.0.27 → 2.0.28

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: 15ae9c547ceaadc025c1b3f03d7c993d9f79f49e
4
- data.tar.gz: 1bf245cf64d57451f652c1da3920521b473910cc
3
+ metadata.gz: 96e530944d9dd3ef2ad9fa275645777bd14f47e1
4
+ data.tar.gz: bafbeb5761ff48a077ac50a07b0f816bdafc9b70
5
5
  SHA512:
6
- metadata.gz: 5d3221c7cc42c64a8ec61e4d822b413d04e0a302f252e564c7378ebdbd263e51ed97d0c18efb5fd10e81f68ec7a0c5fab981d3d66aa877c6b7900e69880cc593
7
- data.tar.gz: 7c323b31dcaa4258b95f19fb1a175f20ed8c9b0e57ddf50240d9783f8df4c0431097ab86d3ad156398d50ba88fce896aad701cc786f5928e6ab791de40f905ac
6
+ metadata.gz: 38eb922890d8e99ff8b408f8e1fead1dc99ad74ac68408af4537803aa55641f95df3539823d01b7c54be191cb90b2eab643ea6e65ab9af814b02f78ecb1f9312
7
+ data.tar.gz: eaa2583d8a286ee234d717511aed8a18c574869658d0b936de30d680d5cc74e2e29ae6b60dacce9ec8f2c86a0b90c6a95920988ef8bffd258fb43981bd48b03f
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+ module FinApps
3
+ module REST
4
+ class OrderReports < FinApps::REST::Resources # :nodoc:
5
+ using ObjectExtensions
6
+ using StringExtensions
7
+
8
+ def show(id, format)
9
+ raise MissingArgumentsError.new 'Missing argument: id.' if id.blank?
10
+ raise MissingArgumentsError.new 'Missing argument: format' if format.blank?
11
+ raise InvalidArgumentsError.new 'Invalid argument: format' unless accepted_format?(format)
12
+
13
+ path = "orders/#{ERB::Util.url_encode(id)}/report.#{ERB::Util.url_encode(format)}"
14
+ super nil, path
15
+ end
16
+
17
+ private
18
+
19
+ def accepted_format?(format)
20
+ [:json, :html, :pdf].include? format.to_sym
21
+ end
22
+ end
23
+ end
24
+ end
@@ -10,18 +10,24 @@ module FinApps
10
10
  super
11
11
  end
12
12
 
13
- def list(_params=nil)
14
- # TODO: get the paramaters for the pagination
15
- # GET /v2/list/orders/:page/:requested/:sort/:asc
16
- # :page - page number requested
17
- # :requested - number of results per page requested
18
- # :sort - sort order
19
- # options:
20
- # date - the date of the order
21
- # status - the status of the order
22
- # :asc - sort order true for asc false for desc
23
-
24
- super 'list/orders/1/10000/date/false'
13
+ def create(params)
14
+ raise MissingArgumentsError.new 'Missing argument: params.' if params.blank?
15
+ super params
16
+ end
17
+
18
+ # GET /v2/list/orders/:page/:requested/:sort/:asc
19
+ # :page - page number requested
20
+ # :requested - number of results per page requested
21
+ # :sort - sort order
22
+ # options:
23
+ # date - the date of the order
24
+ # status - the status of the order
25
+ # :asc - sort order true for asc false for desc
26
+ def list(params=nil) # params hash with optional keys [:page, :requested, :sort, :asc]
27
+ return super 'list/orders/1/10000/date/false' if params.nil?
28
+ raise InvalidArgumentsError.new 'Invalid argument: params' unless params.is_a? Hash
29
+
30
+ super build_path(params)
25
31
  end
26
32
 
27
33
  def update(id, params)
@@ -35,6 +41,19 @@ module FinApps
35
41
 
36
42
  super params, path
37
43
  end
44
+
45
+ private
46
+
47
+ def build_path(p)
48
+ page = p[:page] || 1
49
+ requested = p[:requested] || 100
50
+ sort = p[:sort] || 'date'
51
+ asc = p[:asc] || false
52
+ end_point = 'list/orders'
53
+ path = end_point.dup
54
+ [page, requested, sort, asc].each_with_index {|a| path << "/#{ERB::Util.url_encode(a)}" }
55
+ path
56
+ end
38
57
  end
39
58
  end
40
59
  end
@@ -22,6 +22,11 @@ module FinApps
22
22
  super params, path
23
23
  end
24
24
 
25
+ def destroy(public_id)
26
+ raise MissingArgumentsError.new 'Missing argument: public_id.' if public_id.blank?
27
+ super public_id
28
+ end
29
+
25
30
  private
26
31
 
27
32
  def password_update?(params)
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module FinApps
3
- VERSION = '2.0.27'
3
+ VERSION = '2.0.28'
4
4
  end
data/lib/finapps.rb CHANGED
@@ -33,6 +33,7 @@ require 'finapps/rest/institutions'
33
33
  require 'finapps/rest/user_institutions_statuses'
34
34
  require 'finapps/rest/user_institutions'
35
35
  require 'finapps/rest/user_institutions_forms'
36
+ require 'finapps/rest/order_reports'
36
37
 
37
38
  require 'finapps/rest/configuration'
38
39
  require 'finapps/rest/credentials'
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+ RSpec.describe FinApps::REST::OrderReports do
3
+ let(:client) { FinApps::REST::Client.new(:company_identifier, :company_token) }
4
+ describe '#show' do
5
+ context 'when missing id' do
6
+ subject { FinApps::REST::OrderReports.new(client).show(nil, :pdf) }
7
+ it { expect { subject }.to raise_error(FinApps::MissingArgumentsError) }
8
+ end
9
+
10
+ context 'when missing format' do
11
+ subject { FinApps::REST::OrderReports.new(client).show(:valid_id, nil) }
12
+ it { expect { subject }.to raise_error(FinApps::MissingArgumentsError) }
13
+ end
14
+
15
+ context 'when invalid format is provided' do
16
+ subject { FinApps::REST::OrderReports.new(client).show(:valid_id, :xml) }
17
+ it { expect { subject }.to raise_error(FinApps::InvalidArgumentsError) }
18
+ end
19
+
20
+ context 'when valid params are provided' do
21
+ subject { FinApps::REST::OrderReports.new(client).show(:valid_id, :json) }
22
+
23
+ it { expect { subject }.not_to raise_error }
24
+ it('performs a get and returns the response') { expect(subject[0]).to respond_to(:days_requested) }
25
+ it('returns no error messages') { expect(subject[1]).to be_empty }
26
+ end
27
+
28
+ context 'when invalid id is provided' do
29
+ subject { FinApps::REST::OrderReports.new(client).show(:invalid_id, :json) }
30
+
31
+ it { expect { subject }.not_to raise_error }
32
+ it('results is nil') { expect(subject[0]).to be_nil }
33
+ it('error messages array is populated') { expect(subject[1].first.downcase).to eq('resource not found') }
34
+ end
35
+ end
36
+ end
@@ -10,11 +10,37 @@ RSpec.describe FinApps::REST::Orders do
10
10
  context 'when valid params are provided' do
11
11
  subject { FinApps::REST::Orders.new(client).show(:id) }
12
12
 
13
+ it { expect { subject }.not_to raise_error }
14
+ it('returns an array') { expect(subject).to be_a(Array) }
15
+ it('performs a get and returns the response') { expect(subject[0]).to respond_to(:public_id) }
16
+ it('returns no error messages') { expect(subject[1]).to be_empty }
17
+ end
18
+ end
19
+
20
+ describe '#create' do
21
+ context 'when missing params' do
22
+ subject { FinApps::REST::Orders.new(client).create(nil) }
23
+ it { expect { subject }.to raise_error(FinApps::MissingArgumentsError) }
24
+ end
25
+
26
+ context 'when valid params are provided' do
27
+ subject { FinApps::REST::Orders.new(client).create(valid_params) }
28
+ let(:valid_params) { {applicant: 'valid', institutions: 'valid', product: 'valid'} }
29
+
13
30
  it { expect { subject }.not_to raise_error }
14
31
  it('returns an array') { expect(subject).to be_a(Array) }
15
32
  it('performs a post and returns the response') { expect(subject[0]).to respond_to(:public_id) }
16
33
  it('returns no error messages') { expect(subject[1]).to be_empty }
17
34
  end
35
+
36
+ context 'when invalid params are provided' do
37
+ subject { FinApps::REST::Orders.new(client).create(invalid_params) }
38
+ let(:invalid_params) { {applicant: 'valid'} }
39
+
40
+ it { expect { subject }.not_to raise_error }
41
+ it('results is nil') { expect(subject[0]).to be_nil }
42
+ it('error messages array is populated') { expect(subject[1].first.downcase).to eq('invalid request body') }
43
+ end
18
44
  end
19
45
 
20
46
  describe '#list' do
@@ -28,6 +54,16 @@ RSpec.describe FinApps::REST::Orders do
28
54
  it('performs a get and returns the response') { expect(subject[0]).to respond_to(:orders) }
29
55
  it('returns no error messages') { expect(subject[1]).to be_empty }
30
56
  end
57
+
58
+ context 'when including partial params' do
59
+ subject { FinApps::REST::Orders.new(client).list(params) }
60
+ let(:params) { {page: 2, sort: 'status'} }
61
+
62
+ it { expect { subject }.not_to raise_error }
63
+ it('returns an array') { expect(subject).to be_a(Array) }
64
+ it('performs a get and returns the response') { expect(subject[0]).to respond_to(:orders) }
65
+ it('returns no error messages') { expect(subject[1]).to be_empty }
66
+ end
31
67
  end
32
68
 
33
69
  describe '#update' do
@@ -3,12 +3,10 @@ require 'spec_helpers/client'
3
3
 
4
4
  RSpec.describe FinApps::REST::Users, 'initialized with valid FinApps::Client object' do
5
5
  include SpecHelpers::Client
6
-
6
+ subject(:users) { FinApps::REST::Users.new(client) }
7
7
  missing_public_id = 'Missing argument: public_id.'
8
8
 
9
9
  describe '#show' do
10
- subject(:users) { FinApps::REST::Users.new(client) }
11
-
12
10
  context 'when missing public_id' do
13
11
  it { expect { subject.show(nil) }.to raise_error(FinApps::MissingArgumentsError, missing_public_id) }
14
12
  end
@@ -36,8 +34,6 @@ RSpec.describe FinApps::REST::Users, 'initialized with valid FinApps::Client obj
36
34
  end
37
35
 
38
36
  describe '#update' do
39
- subject(:users) { FinApps::REST::Users.new(client) }
40
-
41
37
  context 'when missing public_id' do
42
38
  it { expect { subject.update(nil, {}) }.to raise_error(FinApps::MissingArgumentsError, missing_public_id) }
43
39
  end
@@ -54,7 +50,15 @@ RSpec.describe FinApps::REST::Users, 'initialized with valid FinApps::Client obj
54
50
  end
55
51
 
56
52
  context 'for invalid public_id' do
57
- # no point testing this context unless this api bug is solved: https://github.com/finapps/api/issues/209
53
+ let(:update) { subject.update(:invalid_public_id, postal_code: '33021') }
54
+ let(:results) { update[0] }
55
+ let(:error_messages) { update[1] }
56
+
57
+ it { expect { update }.not_to raise_error }
58
+ it('results is nil') { expect(results).to be_nil }
59
+ it('error messages array is populated') do
60
+ expect(error_messages.first.downcase).to eq('invalid user id specified.')
61
+ end
58
62
  end
59
63
  end
60
64
 
@@ -81,5 +85,31 @@ RSpec.describe FinApps::REST::Users, 'initialized with valid FinApps::Client obj
81
85
  it('error messages array is populated') { expect(error_messages.first.downcase).to eq('resource not found') }
82
86
  end
83
87
  end
88
+
89
+ describe '#destroy' do
90
+ context 'when missing public_id' do
91
+ it { expect { subject.destroy(nil) }.to raise_error(FinApps::MissingArgumentsError, missing_public_id) }
92
+ end
93
+
94
+ context 'for valid public_id' do
95
+ let(:destroy) { subject.destroy(:valid_public_id) }
96
+ let(:results) { destroy[0] }
97
+ let(:error_messages) { destroy[1] }
98
+
99
+ it { expect { destroy }.not_to raise_error }
100
+ it('results is nil') { expect(results).to be_nil }
101
+ it('error_messages array is empty') { expect(error_messages).to eq([]) }
102
+ end
103
+
104
+ context 'for invalid token' do
105
+ let(:destroy) { subject.destroy(:invalid_public_id) }
106
+ let(:results) { destroy[0] }
107
+ let(:error_messages) { destroy[1] }
108
+
109
+ it { expect { destroy }.not_to raise_error }
110
+ it('results is nil') { expect(results).to be_nil }
111
+ it('error messages array is populated') { expect(error_messages.first.downcase).to eq('resource not found') }
112
+ end
113
+ end
84
114
  end
85
115
  end
@@ -15,6 +15,8 @@ class FakeApi < Sinatra::Base
15
15
  post('/v2/orders/invalid_token') { json_response 404, 'resource_not_found.json' }
16
16
  get('/v2/orders/:id') { json_response 200, 'resource.json' }
17
17
  get('/v2/list/orders/:page/:requested/:sort/:asc') { json_response 200, 'orders.json' }
18
+ get('/v2/orders/valid_id/report.:format') { json_response 200, 'order_report.json' }
19
+ get('/v2/orders/invalid_id/report.:format') { json_response 404, 'resource_not_found.json' }
18
20
  put('/v2/orders/invalid_id') { json_response 404, 'resource_not_found.json' }
19
21
  put('/v2/orders/valid_id') do
20
22
  request.body.rewind
@@ -25,6 +27,15 @@ class FakeApi < Sinatra::Base
25
27
  json_response 400, 'invalid_request_body.json'
26
28
  end
27
29
  end
30
+ post('/v2/orders') do
31
+ request.body.rewind
32
+ request_payload = JSON.parse request.body.read
33
+ if %w(applicant institutions product).all? {|s| request_payload.key? s }
34
+ json_response 200, 'order_token.json'
35
+ else
36
+ json_response 400, 'invalid_request_body.json'
37
+ end
38
+ end
28
39
 
29
40
  # institutions
30
41
  get('/v2/institutions/site/valid_site_id/form') { json_response 200, 'institution_login_form.json' }
@@ -53,8 +64,11 @@ class FakeApi < Sinatra::Base
53
64
  get('/v2/users/valid_public_id') { json_response 200, 'user.json' }
54
65
  get('/v2/users/invalid_public_id') { json_response 404, 'resource_not_found.json' }
55
66
  put('/v2/users/valid_public_id') { status 204 }
67
+ put('/v2/users/invalid_public_id') { json_response 400, 'invalid_user_id.json' }
56
68
  put('/v2/users/valid_public_id/password') { json_response 200, 'user.json' }
57
69
  put('/v2/users/invalid_public_id/password') { json_response 404, 'resource_not_found.json' }
70
+ delete('/v2/users/valid_public_id') { status 204 }
71
+ delete('/v2/users/invalid_public_id') { json_response 404, 'resource_not_found.json' }
58
72
 
59
73
  # session
60
74
  post('/v2/login') do
@@ -0,0 +1,5 @@
1
+ {
2
+ "messages": [
3
+ "invalid user id specified."
4
+ ]
5
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "currency": "USD",
3
+ "days_requested": 90,
4
+ "applicant": {
5
+ "first_name": "Bobby",
6
+ "last_name": "P",
7
+ "ssn": "",
8
+ "dob": "",
9
+ "email": "bobby@bobby.com",
10
+ "mobile_phone": "",
11
+ "work_phone": "",
12
+ "home_phone": "",
13
+ "address": "",
14
+ "address2": "",
15
+ "city": "",
16
+ "state": "",
17
+ "zip": "33146",
18
+ "employer": {
19
+ "name": "",
20
+ "position": "",
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
+ }
30
+ // shortened version
31
+ }
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.27
4
+ version: 2.0.28
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-09-15 00:00:00.000000000 Z
11
+ date: 2016-09-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -266,6 +266,7 @@ files:
266
266
  - lib/finapps/rest/defaults.rb
267
267
  - lib/finapps/rest/institutions.rb
268
268
  - lib/finapps/rest/institutions_forms.rb
269
+ - lib/finapps/rest/order_reports.rb
269
270
  - lib/finapps/rest/order_tokens.rb
270
271
  - lib/finapps/rest/orders.rb
271
272
  - lib/finapps/rest/resources.rb
@@ -290,6 +291,7 @@ files:
290
291
  - spec/rest/credentials_spec.rb
291
292
  - spec/rest/institutions_forms_spec.rb
292
293
  - spec/rest/institutions_spec.rb
294
+ - spec/rest/order_reports_spec.rb
293
295
  - spec/rest/order_tokens_spec.rb
294
296
  - spec/rest/orders_spec.rb
295
297
  - spec/rest/resources_spec.rb
@@ -307,7 +309,9 @@ files:
307
309
  - spec/support/fixtures/institutions_search_list.json
308
310
  - spec/support/fixtures/invalid_institution_id.json
309
311
  - spec/support/fixtures/invalid_request_body.json
312
+ - spec/support/fixtures/invalid_user_id.json
310
313
  - spec/support/fixtures/invalid_user_institution_id.json
314
+ - spec/support/fixtures/order_report.json
311
315
  - spec/support/fixtures/order_token.json
312
316
  - spec/support/fixtures/orders.json
313
317
  - spec/support/fixtures/relevance_ruleset_names.json
@@ -369,6 +373,7 @@ test_files:
369
373
  - spec/rest/users_spec.rb
370
374
  - spec/rest/base_client_spec.rb
371
375
  - spec/rest/user_institutions_forms_spec.rb
376
+ - spec/rest/order_reports_spec.rb
372
377
  - spec/rest/user_institutions_statuses_spec.rb
373
378
  - spec/rest/user_institutions_spec.rb
374
379
  - spec/rest/client_spec.rb