finapps 5.0.33 → 5.0.41

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 (49) hide show
  1. checksums.yaml +4 -4
  2. data/.github/release-drafter.yml +49 -0
  3. data/.github/workflows/main.yaml +38 -0
  4. data/.github/workflows/release-drafter.yml +15 -0
  5. data/.github/workflows/release.yml +43 -0
  6. data/.github/workflows/verify-pr-labeled.yml +14 -0
  7. data/.rubocop.yml +5 -12
  8. data/.rubocop_todo.yml +4 -95
  9. data/README.md +1 -0
  10. data/RELEASES.md +20 -0
  11. data/finapps.gemspec +1 -2
  12. data/lib/finapps.rb +2 -0
  13. data/lib/finapps/rest/client.rb +8 -5
  14. data/lib/finapps/rest/documents_orders.rb +1 -1
  15. data/lib/finapps/rest/documents_upload_types.rb +11 -0
  16. data/lib/finapps/rest/documents_uploads.rb +23 -0
  17. data/lib/finapps/rest/orders.rb +26 -15
  18. data/lib/finapps/rest/sessions.rb +10 -8
  19. data/lib/finapps/utils/query_builder.rb +13 -4
  20. data/lib/finapps/version.rb +1 -1
  21. data/spec/rest/alert_definitions_spec.rb +2 -6
  22. data/spec/rest/client_spec.rb +32 -40
  23. data/spec/rest/consumers_spec.rb +221 -220
  24. data/spec/rest/documents_orders_notifications_spec.rb +1 -1
  25. data/spec/rest/documents_orders_spec.rb +1 -1
  26. data/spec/rest/documents_upload_types_spec.rb +21 -0
  27. data/spec/rest/documents_uploads_spec.rb +104 -0
  28. data/spec/rest/operators_password_resets_spec.rb +49 -56
  29. data/spec/rest/operators_spec.rb +167 -178
  30. data/spec/rest/order_notifications_spec.rb +1 -1
  31. data/spec/rest/order_refreshes_spec.rb +2 -5
  32. data/spec/rest/order_reports_spec.rb +14 -14
  33. data/spec/rest/order_statuses_spec.rb +10 -10
  34. data/spec/rest/order_tokens_spec.rb +33 -32
  35. data/spec/rest/orders_spec.rb +78 -64
  36. data/spec/rest/password_resets_spec.rb +28 -28
  37. data/spec/rest/plaid/plaid_consumer_institutions_spec.rb +1 -1
  38. data/spec/rest/portfolios_alerts_spec.rb +3 -3
  39. data/spec/rest/portfolios_consumers_spec.rb +2 -2
  40. data/spec/rest/portfolios_spec.rb +6 -18
  41. data/spec/rest/products_spec.rb +16 -15
  42. data/spec/rest/sessions_spec.rb +61 -60
  43. data/spec/rest/signed_documents_downloads_spec.rb +8 -4
  44. data/spec/rest/verix/verix_documents_spec.rb +2 -2
  45. data/spec/rest/version_spec.rb +4 -4
  46. data/spec/support/fake_api.rb +16 -1
  47. data/spec/support/fixtures/upload_types.json +9 -0
  48. metadata +70 -79
  49. data/lib/tasks/releaser.rake +0 -12
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module FinApps
4
+ module REST
5
+ class DocumentsUploads < FinAppsCore::REST::Resources
6
+ def show(consumer_id, doc_id, thumbnail = false)
7
+ not_blank(consumer_id, :consumer_id)
8
+ not_blank(doc_id, :doc_id)
9
+
10
+ path =
11
+ "consumers/#{ERB::Util.url_encode(consumer_id)}/"\
12
+ "documents/#{ERB::Util.url_encode(doc_id)}?thumbnail=#{thumbnail}"
13
+ super(nil, path)
14
+ end
15
+
16
+ def destroy(order_id, doc_id)
17
+ not_blank(order_id, :order_id)
18
+ not_blank(doc_id, :doc_id)
19
+ super(nil, "documents/orders/#{order_id}/#{doc_id}")
20
+ end
21
+ end
22
+ end
23
+ end
@@ -63,22 +63,33 @@ module FinApps
63
63
  end
64
64
 
65
65
  def search_query(term)
66
- if term
67
- {
68
- "$or": [
69
- {"public_id": {"$regex": "^#{term}", "$options": 'i'}},
70
- {"applicant.last_name": term},
71
- {"assignment.last_name": term},
72
- {
73
- "requestor.reference_no": {
74
- "$regex": "^#{term}", "$options": 'i'
75
- }
76
- }
77
- ]
78
- }
79
- else
80
- {}
66
+ return {} unless term
67
+
68
+ query = search_query_object(term).concat(consumer_name_query(term))
69
+ {"$or": query}
70
+ end
71
+
72
+ def consumer_name_query(term)
73
+ search_arr = []
74
+ if /\s/.match?(term)
75
+ term.split.each do |t|
76
+ search_arr.append("applicant.first_name": t)
77
+ search_arr.append("applicant.last_name": t)
78
+ end
81
79
  end
80
+ search_arr
81
+ end
82
+
83
+ def search_query_object(term)
84
+ [{"public_id": {"$regex": "^#{term}", "$options": 'i'}},
85
+ {"assignment.last_name": term},
86
+ {"applicant.first_name": term},
87
+ {"applicant.last_name": term},
88
+ {
89
+ "requestor.reference_no": {
90
+ "$regex": "^#{term}", "$options": 'i'
91
+ }
92
+ }]
82
93
  end
83
94
 
84
95
  def status_query(status)
@@ -15,14 +15,7 @@ module FinApps
15
15
  begin
16
16
  super params, path
17
17
  rescue FinAppsCore::ApiUnauthenticatedError
18
- (
19
- [
20
- nil,
21
- [
22
- "Invalid #{path == CONSUMER_LOGIN ? 'Consumer' : 'Operator'} Identifier or Credentials"
23
- ]
24
- ]
25
- )
18
+ login_error(path)
26
19
  end
27
20
  end
28
21
 
@@ -36,6 +29,15 @@ module FinApps
36
29
  params.key?(:email) && params[:email] && params.key?(:password) &&
37
30
  params[:password]
38
31
  end
32
+
33
+ def login_error(path)
34
+ [
35
+ nil,
36
+ [
37
+ "Invalid #{path == CONSUMER_LOGIN ? 'Consumer' : 'Operator'} Identifier or Credentials"
38
+ ]
39
+ ]
40
+ end
39
41
  end
40
42
  end
41
43
  end
@@ -5,15 +5,24 @@ module FinApps
5
5
  module QueryBuilder
6
6
  def build_query_path(root_url, params)
7
7
  filter_obj = build_filter(params)
8
- page = "page=#{params[:page].to_i}" if params[:page]
9
- requested = "requested=#{params[:requested].to_i}" if params[:requested]
10
- sort = "sort=#{ERB::Util.url_encode(params[:sort])}" if params[:sort]
11
8
  filter = "filter=#{ERB::Util.url_encode(filter_obj.to_json)}" unless filter_obj.empty?
12
- query_join(root_url, [page, requested, sort, filter])
9
+ query_join(root_url, [page(params), requested(params), sort(params), filter])
13
10
  end
14
11
 
15
12
  private
16
13
 
14
+ def page(params)
15
+ "page=#{params[:page].to_i}" if params[:page]
16
+ end
17
+
18
+ def requested(params)
19
+ "requested=#{params[:requested].to_i}" if params[:requested]
20
+ end
21
+
22
+ def sort(params)
23
+ "sort=#{ERB::Util.url_encode(params[:sort])}" if params[:sort]
24
+ end
25
+
17
26
  def query_join(root_url, params_array)
18
27
  query_string = params_array.compact.join('&')
19
28
  [root_url, query_string].reject(&:empty?).join('?')
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FinApps
4
- VERSION = '5.0.33'
4
+ VERSION = '5.0.41'
5
5
  end
@@ -68,12 +68,8 @@ RSpec.describe FinApps::REST::AlertDefinitions do
68
68
 
69
69
  it { expect { show }.not_to raise_error }
70
70
  it('returns an array') { expect(show).to be_a(Array) }
71
-
72
- it('performs a get and returns the response') do
73
- expect(results).to have_key(:_id)
74
- expect(results).to have_key(:rule_name)
75
- end
76
-
71
+ it { expect(results).to have_key(:_id) }
72
+ it { expect(results).to have_key(:rule_name) }
77
73
  it('returns no error messages') { expect(errors).to be_empty }
78
74
  end
79
75
 
@@ -9,22 +9,22 @@ RSpec.describe FinApps::REST::Client do
9
9
  end
10
10
  end
11
11
 
12
- context 'an instance of Client' do
13
- subject { described_class.new(:company_token) }
12
+ context 'with an instance of Client' do
13
+ subject(:client) { described_class.new(:company_token) }
14
14
 
15
15
  FinApps::REST::Client::RESOURCES.each do |method|
16
- it("responds to #{method}") { expect(subject).to respond_to(method) }
16
+ it("responds to #{method}") { expect(client).to respond_to(method) }
17
17
 
18
18
  it "memoizes the result of #{method}" do
19
- first = subject.send(method)
20
- second = subject.send(method)
19
+ first = client.send(method)
20
+ second = client.send(method)
21
21
  expect(first.object_id).to eq(second.object_id)
22
22
  end
23
23
  end
24
24
 
25
25
  describe '#alert_definitions' do
26
26
  it do
27
- expect(subject.alert_definitions).to be_an_instance_of(
27
+ expect(client.alert_definitions).to be_an_instance_of(
28
28
  FinApps::REST::AlertDefinitions
29
29
  )
30
30
  end
@@ -32,7 +32,7 @@ RSpec.describe FinApps::REST::Client do
32
32
 
33
33
  describe '#alert_occurrences' do
34
34
  it do
35
- expect(subject.alert_occurrences).to be_an_instance_of(
35
+ expect(client.alert_occurrences).to be_an_instance_of(
36
36
  FinApps::REST::AlertOccurrences
37
37
  )
38
38
  end
@@ -40,41 +40,41 @@ RSpec.describe FinApps::REST::Client do
40
40
 
41
41
  describe '#version' do
42
42
  it do
43
- expect(subject.version).to be_an_instance_of(FinApps::REST::Version)
43
+ expect(client.version).to be_an_instance_of(FinApps::REST::Version)
44
44
  end
45
45
  end
46
46
 
47
47
  describe '#consumers' do
48
48
  it do
49
- expect(subject.consumers).to be_an_instance_of(FinApps::REST::Consumers)
49
+ expect(client.consumers).to be_an_instance_of(FinApps::REST::Consumers)
50
50
  end
51
51
  end
52
52
 
53
53
  describe '#plaid_webhooks' do
54
54
  it do
55
55
  expect(
56
- subject.plaid_webhooks
56
+ client.plaid_webhooks
57
57
  ).to be_an_instance_of FinApps::REST::PlaidWebhooks
58
58
  end
59
59
  end
60
60
 
61
61
  describe '#sessions' do
62
62
  it do
63
- expect(subject.sessions).to be_an_instance_of(FinApps::REST::Sessions)
63
+ expect(client.sessions).to be_an_instance_of(FinApps::REST::Sessions)
64
64
  end
65
65
  end
66
66
 
67
67
  describe '#order_assignments' do
68
68
  it do
69
- expect(subject.order_assignments).to be_an_instance_of(
69
+ expect(client.order_assignments).to be_an_instance_of(
70
70
  FinApps::REST::OrderAssignments
71
71
  )
72
72
  end
73
73
  end
74
74
 
75
- describe '#order_statuses' do
75
+ describe '#order_notifications' do
76
76
  it do
77
- expect(subject.order_notifications).to be_an_instance_of(
77
+ expect(client.order_notifications).to be_an_instance_of(
78
78
  FinApps::REST::OrderNotifications
79
79
  )
80
80
  end
@@ -82,7 +82,7 @@ RSpec.describe FinApps::REST::Client do
82
82
 
83
83
  describe '#order_statuses' do
84
84
  it do
85
- expect(subject.order_statuses).to be_an_instance_of(
85
+ expect(client.order_statuses).to be_an_instance_of(
86
86
  FinApps::REST::OrderStatuses
87
87
  )
88
88
  end
@@ -90,7 +90,7 @@ RSpec.describe FinApps::REST::Client do
90
90
 
91
91
  describe '#order_refreshes' do
92
92
  it do
93
- expect(subject.order_refreshes).to be_an_instance_of(
93
+ expect(client.order_refreshes).to be_an_instance_of(
94
94
  FinApps::REST::OrderRefreshes
95
95
  )
96
96
  end
@@ -98,7 +98,7 @@ RSpec.describe FinApps::REST::Client do
98
98
 
99
99
  describe '#order_reports' do
100
100
  it do
101
- expect(subject.order_reports).to be_an_instance_of(
101
+ expect(client.order_reports).to be_an_instance_of(
102
102
  FinApps::REST::OrderReports
103
103
  )
104
104
  end
@@ -106,19 +106,19 @@ RSpec.describe FinApps::REST::Client do
106
106
 
107
107
  describe '#order_tokens' do
108
108
  it do
109
- expect(subject.order_tokens).to be_an_instance_of(
109
+ expect(client.order_tokens).to be_an_instance_of(
110
110
  FinApps::REST::OrderTokens
111
111
  )
112
112
  end
113
113
  end
114
114
 
115
115
  describe '#orders' do
116
- it { expect(subject.orders).to be_an_instance_of(FinApps::REST::Orders) }
116
+ it { expect(client.orders).to be_an_instance_of(FinApps::REST::Orders) }
117
117
  end
118
118
 
119
119
  describe '#password_resets' do
120
120
  it do
121
- expect(subject.password_resets).to be_an_instance_of(
121
+ expect(client.password_resets).to be_an_instance_of(
122
122
  FinApps::REST::PasswordResets
123
123
  )
124
124
  end
@@ -126,7 +126,7 @@ RSpec.describe FinApps::REST::Client do
126
126
 
127
127
  describe '#operators_password_resets' do
128
128
  it do
129
- expect(subject.operators_password_resets).to be_an_instance_of(
129
+ expect(client.operators_password_resets).to be_an_instance_of(
130
130
  FinApps::REST::OperatorsPasswordResets
131
131
  )
132
132
  end
@@ -134,19 +134,19 @@ RSpec.describe FinApps::REST::Client do
134
134
 
135
135
  describe '#operators' do
136
136
  it do
137
- expect(subject.operators).to be_an_instance_of(FinApps::REST::Operators)
137
+ expect(client.operators).to be_an_instance_of(FinApps::REST::Operators)
138
138
  end
139
139
  end
140
140
 
141
141
  describe '#products' do
142
142
  it do
143
- expect(subject.products).to be_an_instance_of(FinApps::REST::Products)
143
+ expect(client.products).to be_an_instance_of(FinApps::REST::Products)
144
144
  end
145
145
  end
146
146
 
147
147
  describe '#portfolios' do
148
148
  it do
149
- expect(subject.portfolios).to be_an_instance_of(
149
+ expect(client.portfolios).to be_an_instance_of(
150
150
  FinApps::REST::Portfolios
151
151
  )
152
152
  end
@@ -154,7 +154,7 @@ RSpec.describe FinApps::REST::Client do
154
154
 
155
155
  describe '#portfolios_alerts' do
156
156
  it do
157
- expect(subject.portfolios_alerts).to be_an_instance_of(
157
+ expect(client.portfolios_alerts).to be_an_instance_of(
158
158
  FinApps::REST::PortfoliosAlerts
159
159
  )
160
160
  end
@@ -162,7 +162,7 @@ RSpec.describe FinApps::REST::Client do
162
162
 
163
163
  describe '#portfolios_available_consumers' do
164
164
  it do
165
- expect(subject.portfolios_available_consumers).to be_an_instance_of(
165
+ expect(client.portfolios_available_consumers).to be_an_instance_of(
166
166
  FinApps::REST::PortfoliosAvailableConsumers
167
167
  )
168
168
  end
@@ -170,7 +170,7 @@ RSpec.describe FinApps::REST::Client do
170
170
 
171
171
  describe '#portfolios_consumers' do
172
172
  it do
173
- expect(subject.portfolios_consumers).to be_an_instance_of(
173
+ expect(client.portfolios_consumers).to be_an_instance_of(
174
174
  FinApps::REST::PortfoliosConsumers
175
175
  )
176
176
  end
@@ -178,7 +178,7 @@ RSpec.describe FinApps::REST::Client do
178
178
 
179
179
  describe '#consumers_portfolios' do
180
180
  it do
181
- expect(subject.consumers_portfolios).to be_an_instance_of(
181
+ expect(client.consumers_portfolios).to be_an_instance_of(
182
182
  FinApps::REST::ConsumersPortfolios
183
183
  )
184
184
  end
@@ -186,7 +186,7 @@ RSpec.describe FinApps::REST::Client do
186
186
 
187
187
  describe '#portfolio_reports' do
188
188
  it do
189
- expect(subject.portfolio_reports).to be_an_instance_of(
189
+ expect(client.portfolio_reports).to be_an_instance_of(
190
190
  FinApps::REST::PortfolioReports
191
191
  )
192
192
  end
@@ -194,7 +194,7 @@ RSpec.describe FinApps::REST::Client do
194
194
 
195
195
  describe '#tenant_settings' do
196
196
  it do
197
- expect(subject.tenant_settings).to be_an_instance_of(
197
+ expect(client.tenant_settings).to be_an_instance_of(
198
198
  FinApps::REST::TenantSettings
199
199
  )
200
200
  end
@@ -202,23 +202,15 @@ RSpec.describe FinApps::REST::Client do
202
202
 
203
203
  describe '#tenant_app_settings' do
204
204
  it do
205
- expect(subject.tenant_app_settings).to be_an_instance_of(
205
+ expect(client.tenant_app_settings).to be_an_instance_of(
206
206
  FinApps::REST::TenantAppSettings
207
207
  )
208
208
  end
209
209
  end
210
210
 
211
- describe '#plaid_webhooks' do
212
- it do
213
- expect(subject.plaid_webhooks).to be_an_instance_of(
214
- FinApps::REST::PlaidWebhooks
215
- )
216
- end
217
- end
218
-
219
211
  describe '#plaid_institution_logos' do
220
212
  it do
221
- expect(subject.plaid_institution_logos).to be_an_instance_of(
213
+ expect(client.plaid_institution_logos).to be_an_instance_of(
222
214
  FinApps::REST::PlaidInstitutionLogos
223
215
  )
224
216
  end
@@ -1,308 +1,309 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'spec_helpers/client'
4
- RSpec.describe FinApps::REST::Consumers,
5
- 'initialized with valid FinApps::Client object' do
6
- include SpecHelpers::Client
7
- subject(:users) { described_class.new(client) }
8
-
9
- missing_public_id = ': public_id'
10
-
11
- describe '#create' do
12
- let(:results) { create[0] }
13
- let(:error_messages) { create[1] }
14
-
15
- context 'when missing params' do
16
- it do
17
- expect { subject.create(nil) }.to raise_error(
18
- FinAppsCore::MissingArgumentsError
19
- )
20
- end
21
- end
4
+ RSpec.describe FinApps::REST::Consumers do
5
+ context 'when initialized with valid FinApps::Client object' do
6
+ include SpecHelpers::Client
7
+ subject(:users) { described_class.new(client) }
22
8
 
23
- context 'for valid params' do
24
- let(:create) { subject.create(email: 'email', password: 'password') }
9
+ missing_public_id = ': public_id'
25
10
 
26
- it { expect { create }.not_to raise_error }
27
- it('results is a Hash') { expect(results).to be_a(Hash) }
11
+ describe '#create' do
12
+ let(:results) { create[0] }
13
+ let(:error_messages) { create[1] }
28
14
 
29
- it('performs a post and returns the response') do
30
- expect(results).to have_key(:public_id)
15
+ context 'when missing params' do
16
+ it do
17
+ expect { users.create(nil) }.to raise_error(
18
+ FinAppsCore::MissingArgumentsError
19
+ )
20
+ end
31
21
  end
32
22
 
33
- it('error_messages array is empty') { expect(error_messages).to eq([]) }
34
- end
23
+ context 'with valid params' do
24
+ let(:create) { subject.create(email: 'email', password: 'password') }
35
25
 
36
- context 'for invalid params' do
37
- let(:create) { subject.create(email: 'email') }
26
+ it { expect { create }.not_to raise_error }
27
+ it('results is a Hash') { expect(results).to be_a(Hash) }
38
28
 
39
- it { expect { create }.not_to raise_error }
40
- it('results is nil') { expect(results).to be_nil }
29
+ it('performs a post and returns the response') do
30
+ expect(results).to have_key(:public_id)
31
+ end
41
32
 
42
- it('error messages array is populated') do
43
- expect(error_messages.first.downcase).to eq('invalid request body')
33
+ it('error_messages array is empty') { expect(error_messages).to eq([]) }
44
34
  end
45
- end
46
- end
47
35
 
48
- describe '#list' do
49
- let(:list) { subject.list(params) }
50
- let(:results) { list[0] }
51
- let(:error_messages) { list[1] }
36
+ context 'with invalid params' do
37
+ let(:create) { subject.create(email: 'email') }
52
38
 
53
- context 'when missing params' do
54
- let(:params) { nil }
55
-
56
- it { expect { list }.not_to raise_error }
39
+ it { expect { create }.not_to raise_error }
40
+ it('results is nil') { expect(results).to be_nil }
57
41
 
58
- it('performs a get and returns the response') do
59
- expect(results).to have_key(:records)
42
+ it('error messages array is populated') do
43
+ expect(error_messages.first.downcase).to eq('invalid request body')
44
+ end
60
45
  end
61
-
62
- it('returns an array of records') { expect(results[:records]).to be_a(Array) }
63
- it('returns no error messages') { expect(error_messages).to be_empty }
64
46
  end
65
47
 
66
- context 'when invalid params are provided' do
67
- let(:params) { ['invalid array'] }
48
+ describe '#list' do
49
+ let(:list) { subject.list(params) }
50
+ let(:results) { list[0] }
51
+ let(:error_messages) { list[1] }
68
52
 
69
- it { expect { list }.to raise_error(FinAppsCore::InvalidArgumentsError) }
70
- end
53
+ context 'when missing params' do
54
+ let(:params) { nil }
71
55
 
72
- context 'when including valid params without searchTerm' do
73
- let(:params) do
74
- {
75
- page: 3,
76
- requested: 19
77
- }
78
- end
56
+ it { expect { list }.not_to raise_error }
79
57
 
80
- it { expect { list }.not_to raise_error }
81
- it('returns an array') { expect(list).to be_a(Array) }
58
+ it('performs a get and returns the response') do
59
+ expect(results).to have_key(:records)
60
+ end
82
61
 
83
- it('performs a get and returns the response') do
84
- expect(results).to have_key(:records)
62
+ it('returns an array of records') { expect(results[:records]).to be_a(Array) }
63
+ it('returns no error messages') { expect(error_messages).to be_empty }
85
64
  end
86
65
 
87
- it('returns no error messages') do
88
- expect(error_messages).to be_empty
89
- end
66
+ context 'when invalid params are provided' do
67
+ let(:params) { ['invalid array'] }
90
68
 
91
- it 'builds query and sends proper request' do
92
- list
93
- url = "#{versioned_api_path}/consumers?page=3&requested=19"
94
- expect(WebMock).to have_requested(:get, url)
69
+ it { expect { list }.to raise_error(FinAppsCore::InvalidArgumentsError) }
95
70
  end
96
- end
97
71
 
98
- context 'when including valid params with searchTerm' do
99
- let(:params) do
100
- {
101
- page: 2,
102
- sort: 'date_created',
103
- requested: 25,
104
- searchTerm: 'term'
105
- }
106
- end
72
+ context 'when including valid params without searchTerm' do
73
+ let(:params) do
74
+ {
75
+ page: 3,
76
+ requested: 19
77
+ }
78
+ end
107
79
 
108
- it { expect { list }.not_to raise_error }
109
- it('returns an array') { expect(list).to be_a(Array) }
80
+ it { expect { list }.not_to raise_error }
81
+ it('returns an array') { expect(list).to be_a(Array) }
110
82
 
111
- it('performs a get and returns the response') do
112
- expect(results).to have_key(:records)
113
- end
83
+ it('performs a get and returns the response') do
84
+ expect(results).to have_key(:records)
85
+ end
114
86
 
115
- it('returns no error messages') do
116
- expect(error_messages).to be_empty
117
- end
87
+ it('returns no error messages') do
88
+ expect(error_messages).to be_empty
89
+ end
118
90
 
119
- it 'builds query and sends proper request' do
120
- list
121
- url = "#{versioned_api_path}/consumers?"\
122
- 'filter=%7B%22$or%22:%5B%7B%22email%22:%22term%22%7D,' \
123
- '%7B%22first_name%22:%22term%22%7D,'\
124
- '%7B%22last_name%22:%22term%22%7D%5D%7D&page=2&requested=25' \
125
- '&sort=date_created'
126
- expect(WebMock).to have_requested(:get, url)
91
+ it 'builds query and sends proper request' do
92
+ list
93
+ url = "#{versioned_api_path}/consumers?page=3&requested=19"
94
+ expect(WebMock).to have_requested(:get, url)
95
+ end
127
96
  end
128
97
 
129
- context 'when search term contains a space' do
98
+ context 'when including valid params with searchTerm' do
130
99
  let(:params) do
131
100
  {
132
101
  page: 2,
133
102
  sort: 'date_created',
134
103
  requested: 25,
135
- searchTerm: 'Two terms'
104
+ searchTerm: 'term'
136
105
  }
137
106
  end
138
107
 
139
- it 'treats space as start of a new query for first and last name' do
108
+ it { expect { list }.not_to raise_error }
109
+ it('returns an array') { expect(list).to be_a(Array) }
110
+
111
+ it('performs a get and returns the response') do
112
+ expect(results).to have_key(:records)
113
+ end
114
+
115
+ it('returns no error messages') do
116
+ expect(error_messages).to be_empty
117
+ end
118
+
119
+ it 'builds query and sends proper request' do
140
120
  list
141
121
  url = "#{versioned_api_path}/consumers?"\
142
- 'filter=%7B%22$or%22:%5B%7B%22email%22:%22Two%20terms%22%7D,'\
143
- '%7B%22first_name%22:%22Two%20terms%22%7D,'\
144
- '%7B%22last_name%22:%22Two%20terms%22%7D,%7B%22first_name%22:'\
145
- '%22Two%22%7D,%7B%22last_name%22:%22Two%22%7D,'\
146
- '%7B%22first_name%22:%22terms%22%7D,%7B%22last_name%22:'\
147
- '%22terms%22%7D%5D%7D&page=2&requested=25&sort=date_created'
122
+ 'filter=%7B%22$or%22:%5B%7B%22email%22:%22term%22%7D,' \
123
+ '%7B%22first_name%22:%22term%22%7D,'\
124
+ '%7B%22last_name%22:%22term%22%7D%5D%7D&page=2&requested=25' \
125
+ '&sort=date_created'
148
126
  expect(WebMock).to have_requested(:get, url)
149
127
  end
150
- end
151
- end
152
- end
153
128
 
154
- describe '#show' do
155
- context 'when missing public_id' do
156
- it do
157
- expect { subject.show(nil) }.to raise_error(
158
- FinAppsCore::MissingArgumentsError,
159
- missing_public_id
160
- )
129
+ context 'when search term contains a space' do
130
+ let(:params) do
131
+ {
132
+ page: 2,
133
+ sort: 'date_created',
134
+ requested: 25,
135
+ searchTerm: 'Two terms'
136
+ }
137
+ end
138
+
139
+ it 'treats space as start of a new query for first and last name' do
140
+ list
141
+ url = "#{versioned_api_path}/consumers?"\
142
+ 'filter=%7B%22$or%22:%5B%7B%22email%22:%22Two%20terms%22%7D,'\
143
+ '%7B%22first_name%22:%22Two%20terms%22%7D,'\
144
+ '%7B%22last_name%22:%22Two%20terms%22%7D,%7B%22first_name%22:'\
145
+ '%22Two%22%7D,%7B%22last_name%22:%22Two%22%7D,'\
146
+ '%7B%22first_name%22:%22terms%22%7D,%7B%22last_name%22:'\
147
+ '%22terms%22%7D%5D%7D&page=2&requested=25&sort=date_created'
148
+ expect(WebMock).to have_requested(:get, url)
149
+ end
150
+ end
161
151
  end
162
152
  end
163
153
 
164
- context 'for valid public_id' do
165
- let(:show) { subject.show(:valid_public_id) }
166
- let(:results) { show[0] }
167
- let(:error_messages) { show[1] }
168
-
169
- it { expect { show }.not_to raise_error }
170
- it('results is a Hash') { expect(results).to be_a(Hash) }
171
-
172
- it('performs a get and returns the response') do
173
- expect(results).to have_key(:public_id)
154
+ describe '#show' do
155
+ context 'when missing public_id' do
156
+ it do
157
+ expect { users.show(nil) }.to raise_error(
158
+ FinAppsCore::MissingArgumentsError,
159
+ missing_public_id
160
+ )
161
+ end
174
162
  end
175
163
 
176
- it('error_messages array is empty') { expect(error_messages).to eq([]) }
177
- end
178
-
179
- context 'for invalid token' do
180
- let(:show) { subject.show(:invalid_public_id) }
181
- let(:results) { show[0] }
182
- let(:error_messages) { show[1] }
183
-
184
- it { expect { show }.not_to raise_error }
185
- it('results is nil') { expect(results).to be_nil }
164
+ context 'with valid public_id' do
165
+ let(:show) { users.show(:valid_public_id) }
166
+ let(:results) { show[0] }
167
+ let(:error_messages) { show[1] }
186
168
 
187
- it('error messages array is populated') do
188
- expect(error_messages.first.downcase).to eq('resource not found')
189
- end
190
- end
191
- end
192
-
193
- describe '#update' do
194
- context 'when missing public_id' do
195
- it do
196
- expect { subject.update(nil, {}) }.to raise_error(
197
- FinAppsCore::MissingArgumentsError,
198
- missing_public_id
199
- )
200
- end
201
- end
169
+ it { expect { show }.not_to raise_error }
170
+ it('results is a Hash') { expect(results).to be_a(Hash) }
202
171
 
203
- context 'when updating user details' do
204
- context 'for valid public_id' do
205
- let(:update) { subject.update(:valid_public_id, postal_code: '33021') }
206
- let(:results) { update[0] }
207
- let(:error_messages) { update[1] }
172
+ it('performs a get and returns the response') do
173
+ expect(results).to have_key(:public_id)
174
+ end
208
175
 
209
- it { expect { update }.not_to raise_error }
210
- it('results is nil') { expect(results).to be_nil }
211
176
  it('error_messages array is empty') { expect(error_messages).to eq([]) }
212
177
  end
213
178
 
214
- context 'for invalid public_id' do
215
- let(:update) do
216
- subject.update(:invalid_public_id, postal_code: '33021')
217
- end
218
- let(:results) { update[0] }
219
- let(:error_messages) { update[1] }
179
+ context 'with invalid token' do
180
+ let(:show) { users.show(:invalid_public_id) }
181
+ let(:results) { show[0] }
182
+ let(:error_messages) { show[1] }
220
183
 
221
- it { expect { update }.not_to raise_error }
184
+ it { expect { show }.not_to raise_error }
222
185
  it('results is nil') { expect(results).to be_nil }
223
186
 
224
187
  it('error messages array is populated') do
225
- expect(error_messages.first.downcase).to eq(
226
- 'invalid user id specified.'
227
- )
188
+ expect(error_messages.first.downcase).to eq('resource not found')
228
189
  end
229
190
  end
230
191
  end
231
192
 
232
- context 'when updating password' do
233
- context 'for valid public_id' do
234
- let(:update) do
235
- subject.update(
236
- :valid_public_id,
237
- password: 'Aa123456!', password_confirm: 'Aa123456!'
193
+ describe '#update' do
194
+ context 'when missing public_id' do
195
+ it do
196
+ expect { users.update(nil, {}) }.to raise_error(
197
+ FinAppsCore::MissingArgumentsError,
198
+ missing_public_id
238
199
  )
239
200
  end
240
- let(:results) { update[0] }
241
- let(:error_messages) { update[1] }
201
+ end
242
202
 
243
- it { expect { update }.not_to raise_error }
244
- it('results is a Hash') { expect(results).to be_a(Hash) }
203
+ context 'when updating user details' do
204
+ context 'with valid public_id' do
205
+ let(:update) { users.update(:valid_public_id, postal_code: '33021') }
206
+ let(:results) { update[0] }
207
+ let(:error_messages) { update[1] }
245
208
 
246
- it('the public_id is on the results') do
247
- expect(results).to have_key(:public_id)
209
+ it { expect { update }.not_to raise_error }
210
+ it('results is nil') { expect(results).to be_nil }
211
+ it('error_messages array is empty') { expect(error_messages).to eq([]) }
248
212
  end
249
213
 
250
- it('the new token is on the results') do
251
- expect(results).to have_key(:token)
214
+ context 'with invalid public_id' do
215
+ let(:update) do
216
+ subject.update(:invalid_public_id, postal_code: '33021')
217
+ end
218
+ let(:results) { update[0] }
219
+ let(:error_messages) { update[1] }
220
+
221
+ it { expect { update }.not_to raise_error }
222
+ it('results is nil') { expect(results).to be_nil }
223
+
224
+ it('error messages array is populated') do
225
+ expect(error_messages.first.downcase).to eq(
226
+ 'invalid user id specified.'
227
+ )
228
+ end
252
229
  end
253
-
254
- it('error_messages array is empty') { expect(error_messages).to eq([]) }
255
230
  end
256
231
 
257
- context 'for invalid public_id' do
258
- let(:update) do
259
- subject.update(
260
- :invalid_public_id,
261
- password: 'Aa123456!', password_confirm: 'Aa123456!'
262
- )
232
+ context 'when updating password' do
233
+ context 'with valid public_id' do
234
+ let(:update) do
235
+ subject.update(
236
+ :valid_public_id,
237
+ password: 'Aa123456!', password_confirm: 'Aa123456!'
238
+ )
239
+ end
240
+ let(:results) { update[0] }
241
+ let(:error_messages) { update[1] }
242
+
243
+ it { expect { update }.not_to raise_error }
244
+ it('results is a Hash') { expect(results).to be_a(Hash) }
245
+
246
+ it('the public_id is on the results') do
247
+ expect(results).to have_key(:public_id)
248
+ end
249
+
250
+ it('the new token is on the results') do
251
+ expect(results).to have_key(:token)
252
+ end
253
+
254
+ it('error_messages array is empty') { expect(error_messages).to eq([]) }
263
255
  end
264
- let(:results) { update[0] }
265
- let(:error_messages) { update[1] }
266
-
267
- it { expect { update }.not_to raise_error }
268
- it('results is nil') { expect(results).to be_nil }
269
256
 
270
- it('error messages array is populated') do
271
- expect(error_messages.first.downcase).to eq('resource not found')
257
+ context 'with invalid public_id' do
258
+ let(:update) do
259
+ subject.update(
260
+ :invalid_public_id,
261
+ password: 'Aa123456!', password_confirm: 'Aa123456!'
262
+ )
263
+ end
264
+ let(:results) { update[0] }
265
+ let(:error_messages) { update[1] }
266
+
267
+ it { expect { update }.not_to raise_error }
268
+ it('results is nil') { expect(results).to be_nil }
269
+
270
+ it('error messages array is populated') do
271
+ expect(error_messages.first.downcase).to eq('resource not found')
272
+ end
272
273
  end
273
274
  end
274
- end
275
275
 
276
- describe '#destroy' do
277
- context 'when missing public_id' do
278
- it do
279
- expect { subject.destroy(nil) }.to raise_error(
280
- FinAppsCore::MissingArgumentsError,
281
- missing_public_id
282
- )
276
+ describe '#destroy' do
277
+ context 'when missing public_id' do
278
+ it do
279
+ expect { users.destroy(nil) }.to raise_error(
280
+ FinAppsCore::MissingArgumentsError,
281
+ missing_public_id
282
+ )
283
+ end
283
284
  end
284
- end
285
285
 
286
- context 'for valid public_id' do
287
- let(:destroy) { subject.destroy(:valid_public_id) }
288
- let(:results) { destroy[0] }
289
- let(:error_messages) { destroy[1] }
286
+ context 'with valid public_id' do
287
+ let(:destroy) { users.destroy(:valid_public_id) }
288
+ let(:results) { destroy[0] }
289
+ let(:error_messages) { destroy[1] }
290
290
 
291
- it { expect { destroy }.not_to raise_error }
292
- it('results is nil') { expect(results).to be_nil }
293
- it('error_messages array is empty') { expect(error_messages).to eq([]) }
294
- end
291
+ it { expect { destroy }.not_to raise_error }
292
+ it('results is nil') { expect(results).to be_nil }
293
+ it('error_messages array is empty') { expect(error_messages).to eq([]) }
294
+ end
295
295
 
296
- context 'for invalid token' do
297
- let(:destroy) { subject.destroy(:invalid_public_id) }
298
- let(:results) { destroy[0] }
299
- let(:error_messages) { destroy[1] }
296
+ context 'with invalid token' do
297
+ let(:destroy) { subject.destroy(:invalid_public_id) }
298
+ let(:results) { destroy[0] }
299
+ let(:error_messages) { destroy[1] }
300
300
 
301
- it { expect { destroy }.not_to raise_error }
302
- it('results is nil') { expect(results).to be_nil }
301
+ it { expect { destroy }.not_to raise_error }
302
+ it('results is nil') { expect(results).to be_nil }
303
303
 
304
- it('error messages array is populated') do
305
- expect(error_messages.first.downcase).to eq('resource not found')
304
+ it('error messages array is populated') do
305
+ expect(error_messages.first.downcase).to eq('resource not found')
306
+ end
306
307
  end
307
308
  end
308
309
  end