finapps 5.0.3 → 5.0.4

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 (67) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/.rubocop.yml +1 -7
  4. data/.tmuxinator.yml +19 -0
  5. data/Guardfile +42 -0
  6. data/finapps.gemspec +3 -1
  7. data/lib/finapps.rb +1 -7
  8. data/lib/finapps/rest/client.rb +5 -10
  9. data/lib/finapps/rest/consumers.rb +2 -1
  10. data/lib/finapps/rest/operators.rb +8 -2
  11. data/lib/finapps/rest/order_reports.rb +2 -1
  12. data/lib/finapps/rest/orders.rb +11 -9
  13. data/lib/finapps/rest/plaid/plaid_consumer_institutions.rb +15 -0
  14. data/lib/finapps/rest/portfolios_alerts.rb +2 -1
  15. data/lib/finapps/rest/portfolios_available_consumers.rb +2 -1
  16. data/lib/finapps/rest/portfolios_consumers.rb +6 -1
  17. data/lib/finapps/rest/products.rb +1 -2
  18. data/lib/finapps/rest/sessions.rb +8 -2
  19. data/lib/finapps/rest/statements.rb +2 -1
  20. data/lib/finapps/version.rb +1 -1
  21. data/spec/rest/alert_definitions_spec.rb +12 -7
  22. data/spec/rest/alert_occurrences_spec.rb +17 -5
  23. data/spec/rest/client_spec.rb +115 -57
  24. data/spec/rest/consumers_portfolios_spec.rb +9 -4
  25. data/spec/rest/consumers_spec.rb +76 -20
  26. data/spec/rest/operators_password_resets_spec.rb +19 -10
  27. data/spec/rest/operators_spec.rb +60 -22
  28. data/spec/rest/order_assignments_spec.rb +11 -5
  29. data/spec/rest/order_notifications_spec.rb +6 -2
  30. data/spec/rest/order_refreshes_spec.rb +11 -5
  31. data/spec/rest/order_reports_spec.rb +15 -5
  32. data/spec/rest/order_statuses_spec.rb +12 -4
  33. data/spec/rest/order_tokens_spec.rb +17 -5
  34. data/spec/rest/orders_spec.rb +80 -34
  35. data/spec/rest/password_resets_spec.rb +51 -14
  36. data/spec/rest/plaid/plaid_webhooks_spec.rb +7 -3
  37. data/spec/rest/portfolio_reports_spec.rb +9 -4
  38. data/spec/rest/portfolios_alerts_spec.rb +18 -10
  39. data/spec/rest/portfolios_available_consumers_spec.rb +9 -4
  40. data/spec/rest/portfolios_consumers_spec.rb +29 -11
  41. data/spec/rest/portfolios_spec.rb +51 -22
  42. data/spec/rest/products_spec.rb +5 -2
  43. data/spec/rest/sessions_spec.rb +36 -14
  44. data/spec/rest/statements_spec.rb +6 -2
  45. data/spec/rest/tenant_app_settings_spec.rb +13 -5
  46. data/spec/rest/tenant_settings_spec.rb +13 -5
  47. data/spec/rest/version_spec.rb +3 -1
  48. data/spec/spec_helper.rb +6 -4
  49. data/spec/spec_helpers/client.rb +2 -1
  50. data/spec/support/fake_api.rb +253 -119
  51. data/spec/utils/query_builder_spec.rb +8 -3
  52. data/tags +6 -0
  53. metadata +48 -25
  54. data/lib/finapps/rest/consumer_institution_refresh.rb +0 -14
  55. data/lib/finapps/rest/consumer_institution_refreshes.rb +0 -12
  56. data/lib/finapps/rest/institutions.rb +0 -34
  57. data/lib/finapps/rest/institutions_forms.rb +0 -14
  58. data/lib/finapps/rest/user_institutions.rb +0 -54
  59. data/lib/finapps/rest/user_institutions_forms.rb +0 -14
  60. data/lib/finapps/rest/user_institutions_statuses.rb +0 -19
  61. data/spec/rest/consumer_institution_refresh_spec.rb +0 -44
  62. data/spec/rest/consumer_institution_refreshes_spec.rb +0 -20
  63. data/spec/rest/institutions_forms_spec.rb +0 -29
  64. data/spec/rest/institutions_spec.rb +0 -55
  65. data/spec/rest/user_institutions_forms_spec.rb +0 -30
  66. data/spec/rest/user_institutions_spec.rb +0 -144
  67. data/spec/rest/user_institutions_statuses_spec.rb +0 -43
@@ -8,7 +8,9 @@ RSpec.describe FinApps::REST::Orders do
8
8
  describe '#show' do
9
9
  context 'when missing params' do
10
10
  subject { FinApps::REST::Orders.new(client).show(nil) }
11
- it { expect { subject }.to raise_error(FinAppsCore::MissingArgumentsError) }
11
+ it do
12
+ expect { subject }.to raise_error(FinAppsCore::MissingArgumentsError)
13
+ end
12
14
  end
13
15
 
14
16
  context 'when valid params are provided' do
@@ -17,30 +19,38 @@ RSpec.describe FinApps::REST::Orders do
17
19
  it { expect { subject }.not_to raise_error }
18
20
  it('returns an array') { expect(subject).to be_a(Array) }
19
21
  it('performs a get and returns the response') do
20
- expect(subject[RESULTS]).to respond_to(:public_id)
21
- expect(subject[RESULTS]).to respond_to(:consumer_id)
22
+ expect(subject[RESULTS]).to have_key(:public_id)
23
+ expect(subject[RESULTS]).to have_key(:consumer_id)
24
+ end
25
+ it('returns no error messages') do
26
+ expect(subject[ERROR_MESSAGES]).to be_empty
22
27
  end
23
- it('returns no error messages') { expect(subject[ERROR_MESSAGES]).to be_empty }
24
28
  end
25
29
  end
26
30
 
27
31
  describe '#create' do
28
32
  context 'when missing params' do
29
33
  subject { FinApps::REST::Orders.new(client).create(nil) }
30
- it { expect { subject }.to raise_error(FinAppsCore::MissingArgumentsError) }
34
+ it do
35
+ expect { subject }.to raise_error(FinAppsCore::MissingArgumentsError)
36
+ end
31
37
  end
32
38
 
33
39
  context 'when valid params are provided' do
34
40
  subject { FinApps::REST::Orders.new(client).create(valid_params) }
35
- let(:valid_params) { { applicant: 'valid', institutions: 'valid', product: 'valid' } }
41
+ let(:valid_params) do
42
+ { applicant: 'valid', institutions: 'valid', product: 'valid' }
43
+ end
36
44
 
37
45
  it { expect { subject }.not_to raise_error }
38
46
  it('returns an array') { expect(subject).to be_a(Array) }
39
47
  it('performs a post and returns the response') do
40
- expect(subject[RESULTS]).to respond_to(:public_id)
41
- expect(subject[RESULTS]).to respond_to(:consumer_id)
48
+ expect(subject[RESULTS]).to have_key(:public_id)
49
+ expect(subject[RESULTS]).to have_key(:consumer_id)
50
+ end
51
+ it('returns no error messages') do
52
+ expect(subject[ERROR_MESSAGES]).to be_empty
42
53
  end
43
- it('returns no error messages') { expect(subject[ERROR_MESSAGES]).to be_empty }
44
54
  end
45
55
 
46
56
  context 'when invalid params are provided' do
@@ -50,7 +60,9 @@ RSpec.describe FinApps::REST::Orders do
50
60
  it { expect { subject }.not_to raise_error }
51
61
  it('results is nil') { expect(subject[RESULTS]).to be_nil }
52
62
  it('error messages array is populated') do
53
- expect(subject[ERROR_MESSAGES].first.downcase).to eq('invalid request body')
63
+ expect(subject[ERROR_MESSAGES].first.downcase).to eq(
64
+ 'invalid request body'
65
+ )
54
66
  end
55
67
  end
56
68
  end
@@ -63,51 +75,73 @@ RSpec.describe FinApps::REST::Orders do
63
75
  it { expect { subject }.not_to raise_error }
64
76
 
65
77
  it('returns an array') { expect(subject).to be_a(Array) }
66
- it('performs a get and returns the response') { expect(subject[RESULTS]).to respond_to(:orders) }
67
- it('returns no error messages') { expect(subject[ERROR_MESSAGES]).to be_empty }
78
+ it('performs a get and returns the response') do
79
+ expect(subject[RESULTS]).to have_key(:orders)
80
+ end
81
+ it('returns no error messages') do
82
+ expect(subject[ERROR_MESSAGES]).to be_empty
83
+ end
68
84
  end
69
85
 
70
86
  context 'when invalid params are provided' do
71
87
  subject { FinApps::REST::Orders.new(client).list(invalid_params) }
72
88
  let(:invalid_params) { %w[this is an array] }
73
89
 
74
- it { expect { subject }.to raise_error(FinAppsCore::InvalidArgumentsError) }
90
+ it do
91
+ expect { subject }.to raise_error(FinAppsCore::InvalidArgumentsError)
92
+ end
75
93
  end
76
94
 
77
95
  context 'when including valid params' do
78
96
  subject { FinApps::REST::Orders.new(client).list(params) }
79
97
  let(:params) do
80
- { page: 2, sort: 'status', requested: 25, searchTerm: 'term', status: %w[1 7],
81
- assignment: 'valid_operator', relation: ['valid_order_id'] }
98
+ {
99
+ page: 2,
100
+ sort: 'status',
101
+ requested: 25,
102
+ searchTerm: 'term',
103
+ status: %w[1 7],
104
+ assignment: 'valid_operator',
105
+ relation: %w[valid_order_id]
106
+ }
82
107
  end
83
108
 
84
109
  it { expect { subject }.not_to raise_error }
85
110
  it('returns an array') { expect(subject).to be_a(Array) }
86
- it('performs a get and returns the response') { expect(subject[RESULTS]).to respond_to(:orders) }
87
- it('each order contains a consumer_id') { expect(subject[RESULTS].orders).to all(have_key('consumer_id')) }
88
- it('returns no error messages') { expect(subject[ERROR_MESSAGES]).to be_empty }
111
+ it('performs a get and returns the response') do
112
+ expect(subject[RESULTS]).to have_key(:orders)
113
+ end
114
+ it('each order contains a consumer_id') do
115
+ expect(subject[RESULTS][:orders]).to all(have_key(:consumer_id))
116
+ end
117
+ it('returns no error messages') do
118
+ expect(subject[ERROR_MESSAGES]).to be_empty
119
+ end
89
120
  it 'builds query and sends proper request' do
90
121
  subject
91
- url = "#{versioned_api_path}/orders?filter=%7B%22$or%22:%5B%7B%22public_id%22:" \
92
- '%7B%22$regex%22:%22%5Eterm%22,%22$options%22:%22i%22%7D%7D,%7B%22applicant.last_name%22:%22term%22%7D' \
93
- ',%7B%22assignment.last_name%22:%22term%22%7D,%7B%22requestor.reference_no%22:%7B%22$regex%22:%22%5E' \
94
- 'term%22,%22$options%22:%22i%22%7D%7D%5D,%22status%22:%7B%22$in%22:%5B1,7%5D%7D,%22assignment.' \
95
- 'operator_id%22:%22valid_operator%22%7D&page=2&requested=25&sort=status'
122
+ url =
123
+ "#{versioned_api_path}/orders?filter=%7B%22$or%22:%5B%7B%22public_id%22:" \
124
+ '%7B%22$regex%22:%22%5Eterm%22,%22$options%22:%22i%22%7D%7D,%7B%22applicant.last_name%22:%22term%22%7D' \
125
+ ',%7B%22assignment.last_name%22:%22term%22%7D,%7B%22requestor.reference_no%22:%7B%22$regex%22:%22%5E' \
126
+ 'term%22,%22$options%22:%22i%22%7D%7D%5D,%22status%22:%7B%22$in%22:%5B1,7%5D%7D,%22assignment.' \
127
+ 'operator_id%22:%22valid_operator%22%7D&page=2&requested=25&sort=status'
96
128
  expect(WebMock).to have_requested(:get, url)
97
129
  end
98
130
  it 'builds query and sends proper request with searchTerm/relation exclusivity' do
99
131
  params[:searchTerm] = nil
100
132
  subject
101
- url = "#{versioned_api_path}/orders?filter=%7B%22status%22:%7B%22$in%22:%5B1," \
102
- '7%5D%7D,%22assignment.operator_id%22:%22valid_operator%22,%22$or%22:%5B%7B%22public_id%22:%7B%22$in' \
103
- '%22:%5B%22valid_order_id%22%5D%7D%7D,%7B%22original_order_id%22:%7B%22$in%22:%5B%22valid_order_id%22' \
104
- '%5D%7D%7D%5D%7D&page=2&requested=25&sort=status'
133
+ url =
134
+ "#{versioned_api_path}/orders?filter=%7B%22status%22:%7B%22$in%22:%5B1," \
135
+ '7%5D%7D,%22assignment.operator_id%22:%22valid_operator%22,%22$or%22:%5B%7B%22public_id%22:%7B%22$in' \
136
+ '%22:%5B%22valid_order_id%22%5D%7D%7D,%7B%22original_order_id%22:%7B%22$in%22:%5B%22valid_order_id%22' \
137
+ '%5D%7D%7D%5D%7D&page=2&requested=25&sort=status'
105
138
  expect(WebMock).to have_requested(:get, url)
106
139
  end
107
140
  it 'builds null assignment query properly when supplied w/ empty string' do
108
141
  FinApps::REST::Orders.new(client).list(assignment: '')
109
142
 
110
- url = "#{versioned_api_path}/orders?filter=%7B%22assignment.operator_id%22:null%7D"
143
+ url =
144
+ "#{versioned_api_path}/orders?filter=%7B%22assignment.operator_id%22:null%7D"
111
145
  expect(WebMock).to have_requested(:get, url)
112
146
  end
113
147
  end
@@ -118,12 +152,16 @@ RSpec.describe FinApps::REST::Orders do
118
152
 
119
153
  context 'when missing id' do
120
154
  let(:update) { subject.update(nil, :params) }
121
- it('returns missing argument error') { expect { update }.to raise_error(FinAppsCore::MissingArgumentsError) }
155
+ it('returns missing argument error') do
156
+ expect { update }.to raise_error(FinAppsCore::MissingArgumentsError)
157
+ end
122
158
  end
123
159
 
124
160
  context 'when missing params' do
125
161
  let(:update) { subject.update(:id, nil) }
126
- it('returns missing argument error') { expect { update }.to raise_error(FinAppsCore::MissingArgumentsError) }
162
+ it('returns missing argument error') do
163
+ expect { update }.to raise_error(FinAppsCore::MissingArgumentsError)
164
+ end
127
165
  end
128
166
 
129
167
  context 'when valid id and params are provided' do
@@ -143,7 +181,9 @@ RSpec.describe FinApps::REST::Orders do
143
181
 
144
182
  it { expect { update }.not_to raise_error }
145
183
  it('results is nil') { expect(results).to be_nil }
146
- it('error messages array is populated') { expect(error_messages.first.downcase).to eq('resource not found') }
184
+ it('error messages array is populated') do
185
+ expect(error_messages.first.downcase).to eq('resource not found')
186
+ end
147
187
  end
148
188
 
149
189
  context 'when invalid params are provided' do
@@ -153,7 +193,9 @@ RSpec.describe FinApps::REST::Orders do
153
193
 
154
194
  it { expect { update }.not_to raise_error }
155
195
  it('results is nil') { expect(results).to be_nil }
156
- it('error messages array is populated') { expect(error_messages.first.downcase).to eq('invalid request body') }
196
+ it('error messages array is populated') do
197
+ expect(error_messages.first.downcase).to eq('invalid request body')
198
+ end
157
199
  end
158
200
  end
159
201
 
@@ -162,7 +204,9 @@ RSpec.describe FinApps::REST::Orders do
162
204
 
163
205
  context 'when missing id' do
164
206
  let(:destroy) { subject.destroy(nil) }
165
- it('returns missing argument error') { expect { destroy }.to raise_error(FinAppsCore::MissingArgumentsError) }
207
+ it('returns missing argument error') do
208
+ expect { destroy }.to raise_error(FinAppsCore::MissingArgumentsError)
209
+ end
166
210
  end
167
211
 
168
212
  context 'when invalid id is provided' do
@@ -172,7 +216,9 @@ RSpec.describe FinApps::REST::Orders do
172
216
 
173
217
  it { expect { destroy }.not_to raise_error }
174
218
  it('results is nil') { expect(results).to be_nil }
175
- it('error messages array is populated') { expect(error_messages.first.downcase).to eq('resource not found') }
219
+ it('error messages array is populated') do
220
+ expect(error_messages.first.downcase).to eq('resource not found')
221
+ end
176
222
  end
177
223
 
178
224
  context 'for valid id' do
@@ -6,23 +6,33 @@ RSpec.describe FinApps::REST::PasswordResets do
6
6
  describe '#create' do
7
7
  context 'when missing id' do
8
8
  subject { FinApps::REST::PasswordResets.new(client).create(nil) }
9
- it { expect { subject }.to raise_error(FinAppsCore::MissingArgumentsError) }
9
+ it do
10
+ expect { subject }.to raise_error(FinAppsCore::MissingArgumentsError)
11
+ end
10
12
  end
11
13
 
12
14
  context 'when invalid id is provided' do
13
- subject { FinApps::REST::PasswordResets.new(client).create(:invalid_user_id) }
15
+ subject do
16
+ FinApps::REST::PasswordResets.new(client).create(:invalid_user_id)
17
+ end
14
18
 
15
19
  it { expect { subject }.not_to raise_error }
16
20
  it('results is nil') { expect(subject[0]).to be_nil }
17
- it('error messages array is populated') { expect(subject[1]).not_to be_nil }
21
+ it('error messages array is populated') do
22
+ expect(subject[1]).not_to be_nil
23
+ end
18
24
  end
19
25
 
20
26
  context 'when valid id is provided' do
21
- subject { FinApps::REST::PasswordResets.new(client).create(:valid_user_id) }
27
+ subject do
28
+ FinApps::REST::PasswordResets.new(client).create(:valid_user_id)
29
+ end
22
30
 
23
31
  it { expect { subject }.not_to raise_error }
24
32
  it('returns an array') { expect(subject).to be_a(Array) }
25
- it('performs a post and returns the response') { expect(subject[0]).to respond_to(:token) }
33
+ it('performs a post and returns the response') do
34
+ expect(subject[0]).to have_key(:token)
35
+ end
26
36
  it('returns no error messages') { expect(subject[1]).to be_empty }
27
37
  end
28
38
  end
@@ -33,36 +43,63 @@ RSpec.describe FinApps::REST::PasswordResets do
33
43
 
34
44
  context 'when missing id' do
35
45
  subject { FinApps::REST::PasswordResets.new(client).update(nil, :params) }
36
- it { expect { subject }.to raise_error(FinAppsCore::MissingArgumentsError) }
46
+ it do
47
+ expect { subject }.to raise_error(FinAppsCore::MissingArgumentsError)
48
+ end
37
49
  end
38
50
 
39
51
  context 'when missing params' do
40
- subject { FinApps::REST::PasswordResets.new(client).update(:valid_user_id, nil) }
41
- it { expect { subject }.to raise_error(FinAppsCore::MissingArgumentsError) }
52
+ subject do
53
+ FinApps::REST::PasswordResets.new(client).update(:valid_user_id, nil)
54
+ end
55
+ it do
56
+ expect { subject }.to raise_error(FinAppsCore::MissingArgumentsError)
57
+ end
42
58
  end
43
59
 
44
60
  context 'when invalid id is provided' do
45
- subject { FinApps::REST::PasswordResets.new(client).update(:invalid_user_id, valid_params) }
61
+ subject do
62
+ FinApps::REST::PasswordResets.new(client).update(
63
+ :invalid_user_id,
64
+ valid_params
65
+ )
66
+ end
46
67
 
47
68
  it { expect { subject }.not_to raise_error }
48
69
  it('results is nil') { expect(subject[0]).to be_nil }
49
- it('error messages array is populated') { expect(subject[1]).not_to be_nil }
70
+ it('error messages array is populated') do
71
+ expect(subject[1]).not_to be_nil
72
+ end
50
73
  end
51
74
 
52
75
  context 'when invalid params are provided' do
53
- subject { FinApps::REST::PasswordResets.new(client).update(:valid_user_id, invalid_params) }
76
+ subject do
77
+ FinApps::REST::PasswordResets.new(client).update(
78
+ :valid_user_id,
79
+ invalid_params
80
+ )
81
+ end
54
82
 
55
83
  it { expect { subject }.not_to raise_error }
56
84
  it('results is nil') { expect(subject[0]).to be_nil }
57
- it('error messages array is populated') { expect(subject[1]).not_to be_nil }
85
+ it('error messages array is populated') do
86
+ expect(subject[1]).not_to be_nil
87
+ end
58
88
  end
59
89
 
60
90
  context 'when valid params are provided' do
61
- subject { FinApps::REST::PasswordResets.new(client).update(:valid_user_id, valid_params) }
91
+ subject do
92
+ FinApps::REST::PasswordResets.new(client).update(
93
+ :valid_user_id,
94
+ valid_params
95
+ )
96
+ end
62
97
 
63
98
  it { expect { subject }.not_to raise_error }
64
99
  it('returns an array') { expect(subject).to be_a(Array) }
65
- it('performs a post and returns the response') { expect(subject[0]).to respond_to(:token) }
100
+ it('performs a post and returns the response') do
101
+ expect(subject[0]).to have_key(:token)
102
+ end
66
103
  it('returns no error messages') { expect(subject[1]).to be_empty }
67
104
  end
68
105
  end
@@ -18,9 +18,11 @@ RSpec.describe FinApps::REST::PlaidWebhooks do
18
18
  it_behaves_like 'an API request'
19
19
 
20
20
  it('performs a post and returns the webhook url') do
21
- expect(create[RESULTS]).to respond_to(:url)
21
+ expect(create[RESULTS]).to have_key(:url)
22
+ end
23
+ it('returns no error messages') do
24
+ expect(create[ERROR_MESSAGES]).to be_empty
22
25
  end
23
- it('returns no error messages') { expect(create[ERROR_MESSAGES]).to be_empty }
24
26
  end
25
27
 
26
28
  context 'when invalid tenant token is provided' do
@@ -29,7 +31,9 @@ RSpec.describe FinApps::REST::PlaidWebhooks do
29
31
  it_behaves_like 'an API request'
30
32
  it('results is nil') { expect(create[RESULTS]).to be_nil }
31
33
  it('error messages array is populated') do
32
- expect(create[ERROR_MESSAGES].first.downcase).to eq('resource not found')
34
+ expect(create[ERROR_MESSAGES].first.downcase).to eq(
35
+ 'resource not found'
36
+ )
33
37
  end
34
38
  end
35
39
  end
@@ -16,7 +16,9 @@ RSpec.describe FinApps::REST::PortfolioReports do
16
16
 
17
17
  it { expect { list }.not_to raise_error }
18
18
  it('returns an array') { expect(list).to be_a(Array) }
19
- it('performs a get and returns the response') { expect(results).to respond_to(:records) }
19
+ it('performs a get and returns the response') do
20
+ expect(results).to have_key(:records)
21
+ end
20
22
  it('returns no error messages') { expect(errors).to be_empty }
21
23
  end
22
24
 
@@ -31,12 +33,15 @@ RSpec.describe FinApps::REST::PortfolioReports do
31
33
 
32
34
  it { expect { list }.not_to raise_error }
33
35
  it('returns an array') { expect(list).to be_a(Array) }
34
- it('performs a get and returns the response') { expect(results).to respond_to(:records) }
36
+ it('performs a get and returns the response') do
37
+ expect(results).to have_key(:records)
38
+ end
35
39
  it('returns no error messages') { expect(errors).to be_empty }
36
40
  it 'builds query and sends proper request' do
37
41
  list
38
- url = "#{versioned_api_path}/portfolio/reports?page=2&requested=25&" \
39
- 'sort=-created_date'
42
+ url =
43
+ "#{versioned_api_path}/portfolio/reports?page=2&requested=25&" \
44
+ 'sort=-created_date'
40
45
  expect(WebMock).to have_requested(:get, url)
41
46
  end
42
47
  end
@@ -24,8 +24,8 @@ RSpec.describe FinApps::REST::PortfoliosAlerts do
24
24
  it('returns an array') { expect(list).to be_a(Array) }
25
25
  it('performs a get and returns array of alert definitions') do
26
26
  expect(results).to be_a(Array)
27
- expect(results.first).to respond_to(:_id)
28
- expect(results.first).to respond_to(:rule_name)
27
+ expect(results.first).to have_key(:_id)
28
+ expect(results.first).to have_key(:rule_name)
29
29
  end
30
30
  it('returns no error messages') { expect(errors).to be_empty }
31
31
  end
@@ -50,21 +50,25 @@ RSpec.describe FinApps::REST::PortfoliosAlerts do
50
50
  let(:portfolio_id) { nil }
51
51
  let(:alert_id) { 'valid_id' }
52
52
 
53
- it { expect { create }.to raise_error(FinAppsCore::MissingArgumentsError) }
53
+ it do
54
+ expect { create }.to raise_error(FinAppsCore::MissingArgumentsError)
55
+ end
54
56
  end
55
57
 
56
58
  context 'when missing alert_id' do
57
59
  let(:portfolio_id) { 'valid_id' }
58
60
  let(:alert_id) { nil }
59
61
 
60
- it { expect { create }.to raise_error(FinAppsCore::MissingArgumentsError) }
62
+ it do
63
+ expect { create }.to raise_error(FinAppsCore::MissingArgumentsError)
64
+ end
61
65
  end
62
66
 
63
67
  context 'when valid ids are provided' do
64
68
  let(:portfolio_id) { 'valid_id' }
65
69
  let(:alert_id) { portfolio_id }
66
70
 
67
- it { expect { create }.not_to raise_error(FinAppsCore::MissingArgumentsError) }
71
+ it { expect { create }.not_to raise_error }
68
72
  it('returns an array') { expect(create).to be_a(Array) }
69
73
  it('results is nil') { expect(results).to be_nil }
70
74
  it('returns no error messages') { expect(errors).to be_empty }
@@ -74,7 +78,7 @@ RSpec.describe FinApps::REST::PortfoliosAlerts do
74
78
  let(:portfolio_id) { 'invalid_id' }
75
79
  let(:alert_id) { portfolio_id }
76
80
 
77
- it { expect { create }.not_to raise_error(FinAppsCore::MissingArgumentsError) }
81
+ it { expect { create }.not_to raise_error }
78
82
  it('results is nil') { expect(results).to be_nil }
79
83
  it('error messages array is populated') do
80
84
  expect(errors.first.downcase).to eq('resource not found')
@@ -91,21 +95,25 @@ RSpec.describe FinApps::REST::PortfoliosAlerts do
91
95
  let(:portfolio_id) { nil }
92
96
  let(:alert_id) { 'valid_id' }
93
97
 
94
- it { expect { destroy }.to raise_error(FinAppsCore::MissingArgumentsError) }
98
+ it do
99
+ expect { destroy }.to raise_error(FinAppsCore::MissingArgumentsError)
100
+ end
95
101
  end
96
102
 
97
103
  context 'when missing alert_id' do
98
104
  let(:portfolio_id) { 'valid_id' }
99
105
  let(:alert_id) { nil }
100
106
 
101
- it { expect { destroy }.to raise_error(FinAppsCore::MissingArgumentsError) }
107
+ it do
108
+ expect { destroy }.to raise_error(FinAppsCore::MissingArgumentsError)
109
+ end
102
110
  end
103
111
 
104
112
  context 'when valid ids are provided' do
105
113
  let(:portfolio_id) { 'valid_id' }
106
114
  let(:alert_id) { portfolio_id }
107
115
 
108
- it { expect { destroy }.not_to raise_error(FinAppsCore::MissingArgumentsError) }
116
+ it { expect { destroy }.not_to raise_error }
109
117
  it('returns an array') { expect(destroy).to be_a(Array) }
110
118
  it('results is nil') { expect(results).to be_nil }
111
119
  it('returns no error messages') { expect(errors).to be_empty }
@@ -115,7 +123,7 @@ RSpec.describe FinApps::REST::PortfoliosAlerts do
115
123
  let(:portfolio_id) { 'invalid_id' }
116
124
  let(:alert_id) { portfolio_id }
117
125
 
118
- it { expect { destroy }.not_to raise_error(FinAppsCore::MissingArgumentsError) }
126
+ it { expect { destroy }.not_to raise_error }
119
127
  it('results is nil') { expect(results).to be_nil }
120
128
  it('error messages array is populated') do
121
129
  expect(errors.first.downcase).to eq('resource not found')