finapps 5.0.30 → 5.0.35
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 +4 -4
- data/.github/workflows/main.yaml +37 -0
- data/.rubocop.yml +134 -61
- data/.rubocop_todo.yml +29 -0
- data/.tmuxinator.yml +1 -0
- data/.travis.yml +3 -1
- data/README.md +1 -0
- data/RELEASES.md +29 -0
- data/finapps.gemspec +4 -4
- data/lib/finapps/rest/alert_definitions.rb +1 -1
- data/lib/finapps/rest/alert_occurrences.rb +1 -1
- data/lib/finapps/rest/client.rb +6 -5
- data/lib/finapps/rest/consumers.rb +22 -6
- data/lib/finapps/rest/consumers_portfolios.rb +1 -1
- data/lib/finapps/rest/documents_orders.rb +43 -26
- data/lib/finapps/rest/operators.rb +5 -5
- data/lib/finapps/rest/operators_password_resets.rb +1 -1
- data/lib/finapps/rest/order_assignments.rb +1 -1
- data/lib/finapps/rest/order_reports.rb +1 -1
- data/lib/finapps/rest/orders.rb +33 -22
- data/lib/finapps/rest/plaid/plaid_consumer_institutions.rb +1 -1
- data/lib/finapps/rest/portfolio_reports.rb +1 -1
- data/lib/finapps/rest/portfolios.rb +1 -1
- data/lib/finapps/rest/portfolios_available_consumers.rb +1 -1
- data/lib/finapps/rest/portfolios_consumers.rb +1 -1
- data/lib/finapps/rest/sessions.rb +11 -9
- data/lib/finapps/rest/signed_documents_downloads.rb +3 -1
- data/lib/finapps/utils/query_builder.rb +13 -4
- data/lib/finapps/version.rb +1 -1
- data/spec/rest/alert_definitions_spec.rb +10 -6
- data/spec/rest/alert_occurrences_spec.rb +6 -1
- data/spec/rest/api_request.rb +1 -0
- data/spec/rest/client_spec.rb +33 -41
- data/spec/rest/consumers_portfolios_spec.rb +7 -2
- data/spec/rest/consumers_spec.rb +240 -192
- data/spec/rest/documents_orders_notifications_spec.rb +4 -2
- data/spec/rest/documents_orders_spec.rb +94 -17
- data/spec/rest/esign_templates_spec.rb +2 -1
- data/spec/rest/operators_password_resets_spec.rb +50 -52
- data/spec/rest/operators_spec.rb +181 -172
- data/spec/rest/order_assignments_spec.rb +6 -1
- data/spec/rest/order_notifications_spec.rb +4 -2
- data/spec/rest/order_refreshes_spec.rb +8 -5
- data/spec/rest/order_reports_spec.rb +21 -15
- data/spec/rest/order_statuses_spec.rb +14 -10
- data/spec/rest/order_tokens_spec.rb +37 -30
- data/spec/rest/orders_spec.rb +121 -73
- data/spec/rest/password_resets_spec.rb +46 -36
- data/spec/rest/plaid/plaid_account_permissions_spec.rb +5 -4
- data/spec/rest/plaid/plaid_accounts_spec.rb +9 -4
- data/spec/rest/plaid/plaid_consumer_institutions_spec.rb +11 -11
- data/spec/rest/plaid/plaid_institution_logos_spec.rb +1 -1
- data/spec/rest/plaid/plaid_webhooks_spec.rb +3 -1
- data/spec/rest/portfolio_reports_spec.rb +7 -2
- data/spec/rest/portfolios_alerts_spec.rb +9 -4
- data/spec/rest/portfolios_available_consumers_spec.rb +7 -2
- data/spec/rest/portfolios_consumers_spec.rb +15 -4
- data/spec/rest/portfolios_spec.rb +20 -17
- data/spec/rest/products_spec.rb +17 -14
- data/spec/rest/sessions_spec.rb +63 -58
- data/spec/rest/signed_documents_downloads_spec.rb +10 -6
- data/spec/rest/tenant_app_settings_spec.rb +9 -3
- data/spec/rest/tenant_settings_spec.rb +9 -3
- data/spec/rest/verix/verix_documents_spec.rb +15 -22
- data/spec/rest/verix/verix_metadata_spec.rb +1 -1
- data/spec/rest/verix/verix_pdf_documents_spec.rb +14 -19
- data/spec/rest/verix/verix_records_spec.rb +31 -10
- data/spec/rest/version_spec.rb +6 -4
- data/spec/spec_helper.rb +2 -2
- data/spec/support/fake_api.rb +9 -3
- data/spec/support/fixtures/documents_orders_none.json +6 -0
- data/spec/utils/query_builder_spec.rb +40 -14
- metadata +20 -17
@@ -6,10 +6,11 @@ RSpec.describe FinApps::REST::DocumentsOrdersNotifications do
|
|
6
6
|
include SpecHelpers::Client
|
7
7
|
|
8
8
|
describe '#create' do
|
9
|
-
subject(:notifications) {
|
9
|
+
subject(:notifications) { described_class.new(client) }
|
10
10
|
|
11
11
|
context 'when missing id' do
|
12
12
|
let(:create) { subject.create(nil) }
|
13
|
+
|
13
14
|
it('returns missing argument error') do
|
14
15
|
expect { create }.to raise_error(FinAppsCore::MissingArgumentsError)
|
15
16
|
end
|
@@ -22,12 +23,13 @@ RSpec.describe FinApps::REST::DocumentsOrdersNotifications do
|
|
22
23
|
|
23
24
|
it { expect { create }.not_to raise_error }
|
24
25
|
it('results is nil') { expect(results).to be_nil }
|
26
|
+
|
25
27
|
it('error messages array is populated') do
|
26
28
|
expect(error_messages.first.downcase).to eq('order id is invalid')
|
27
29
|
end
|
28
30
|
end
|
29
31
|
|
30
|
-
context '
|
32
|
+
context 'with valid id' do
|
31
33
|
let(:create) { subject.create(:valid_id) }
|
32
34
|
let(:results) { create[RESULTS] }
|
33
35
|
let(:error_messages) { create[ERROR_MESSAGES] }
|
@@ -15,7 +15,8 @@ RSpec.describe FinApps::REST::DocumentsOrders do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
describe '#list' do
|
18
|
-
subject(:list) {
|
18
|
+
subject(:list) { described_class.new(client).list(params) }
|
19
|
+
|
19
20
|
let(:results) { list[0] }
|
20
21
|
let(:error_messages) { list[1] }
|
21
22
|
|
@@ -31,12 +32,14 @@ RSpec.describe FinApps::REST::DocumentsOrders do
|
|
31
32
|
end
|
32
33
|
|
33
34
|
context 'without searchTerm' do
|
34
|
-
let(:params) { {
|
35
|
+
let(:params) { {searchTerm: nil, page: 2} }
|
36
|
+
|
35
37
|
it_behaves_like 'an API request'
|
36
38
|
it_behaves_like 'a successful request'
|
37
39
|
it 'performs a get and returns the response' do
|
38
40
|
expect(results).to have_key(:records)
|
39
41
|
end
|
42
|
+
|
40
43
|
it 'builds query and sends proper request' do
|
41
44
|
list
|
42
45
|
url = "#{versioned_api_path}/documents/orders?page=2"
|
@@ -50,26 +53,72 @@ RSpec.describe FinApps::REST::DocumentsOrders do
|
|
50
53
|
it 'performs a get and returns the response' do
|
51
54
|
expect(results).to have_key(:records)
|
52
55
|
end
|
56
|
+
|
53
57
|
it 'builds query and sends proper request' do
|
54
58
|
list
|
55
59
|
url =
|
56
|
-
"#{versioned_api_path}/documents/orders?
|
57
|
-
'%
|
58
|
-
'%22term%22%7D,%7B%
|
59
|
-
'%
|
60
|
+
"#{versioned_api_path}/documents/orders?"\
|
61
|
+
'filter=%7B%22$or%22:%5B%7B%22applicant.email%22:'\
|
62
|
+
'%22term%22%7D,%7B%22applicant.first_name%22:%22term%22%7D,'\
|
63
|
+
'%7B%22applicant.last_name%22:'\
|
64
|
+
'%22term%22%7D,%7B%22reference_no%22:%7B%22$regex%22:%22%5Eterm%22,'\
|
65
|
+
'%22$options%22:%22i%22%7D%7D%5D,'\
|
66
|
+
'%22consumer_id%22:%22valid_consumer_id%22%7D&'\
|
67
|
+
'page=2&requested=25&sort=tag '
|
60
68
|
|
61
69
|
expect(WebMock).to have_requested(:get, url)
|
62
70
|
end
|
71
|
+
|
72
|
+
context 'with search term containing spaces' do
|
73
|
+
let(:params) { {"searchTerm": 'Blue Jay', "page": 2} }
|
74
|
+
|
75
|
+
it 'builds query and sends proper request' do
|
76
|
+
list
|
77
|
+
url =
|
78
|
+
"#{versioned_api_path}/documents/orders?"\
|
79
|
+
'filter=%7B%22$or%22:%5B%7B%22applicant.email%22:'\
|
80
|
+
'%22Blue%20Jay%22%7D,'\
|
81
|
+
'%7B%22applicant.first_name%22:%22Blue%20Jay%22%7D,'\
|
82
|
+
'%7B%22applicant.last_name%22:'\
|
83
|
+
'%22Blue%20Jay%22%7D,'\
|
84
|
+
'%7B%22reference_no%22:%7B%22$regex%22:%22%5EBlue%20Jay%22,'\
|
85
|
+
'%22$options%22:'\
|
86
|
+
'%22i%22%7D%7D,%7B%22applicant.first_name%22:%22Blue%22%7D,'\
|
87
|
+
'%7B%22applicant.last_name%22:%22Blue%22%7D,'\
|
88
|
+
'%7B%22applicant.first_name%22:%22Jay%22%7D,'\
|
89
|
+
'%7B%22applicant.last_name%22:%22Jay%22%7D%5D%7D&page=2'
|
90
|
+
|
91
|
+
expect(WebMock).to have_requested(:get, url)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
context 'when filtering by open status ordes' do
|
97
|
+
let(:params) { {status: 1} }
|
98
|
+
|
99
|
+
it_behaves_like 'an API request'
|
100
|
+
it_behaves_like 'a successful request'
|
101
|
+
it { expect(list.first[:records]).not_to be_empty }
|
102
|
+
end
|
103
|
+
|
104
|
+
context 'when filtering by closed status ordes' do
|
105
|
+
let(:params) { {status: 2, searchTerm: 'term'} }
|
106
|
+
|
107
|
+
it_behaves_like 'an API request'
|
108
|
+
it_behaves_like 'a successful request'
|
109
|
+
it { expect(results[:records]).to be_empty }
|
63
110
|
end
|
64
111
|
end
|
65
112
|
|
66
113
|
context 'with invalid params' do
|
67
114
|
let(:params) { ['invalid array'] }
|
115
|
+
|
68
116
|
it { expect { list }.to raise_error(FinAppsCore::InvalidArgumentsError) }
|
69
117
|
end
|
70
118
|
|
71
119
|
context 'with missing params' do
|
72
120
|
let(:params) { nil }
|
121
|
+
|
73
122
|
it_behaves_like 'an API request'
|
74
123
|
it_behaves_like 'a successful request'
|
75
124
|
it('performs a get and returns the response') do
|
@@ -79,15 +128,18 @@ RSpec.describe FinApps::REST::DocumentsOrders do
|
|
79
128
|
end
|
80
129
|
|
81
130
|
describe '#show' do
|
82
|
-
subject(:show) {
|
131
|
+
subject(:show) { described_class.new(client).show(id) }
|
132
|
+
|
83
133
|
let(:results) { show[0] }
|
84
134
|
let(:error_messages) { show[1] }
|
85
135
|
|
86
136
|
context 'with valid id' do
|
87
137
|
let(:id) { :valid_order_id }
|
138
|
+
|
88
139
|
it_behaves_like 'an API request'
|
89
140
|
it_behaves_like 'a successful request'
|
90
141
|
it('results is a Hash') { expect(results).to be_a(Hash) }
|
142
|
+
|
91
143
|
it('performs a get and returns the response') do
|
92
144
|
expect(results).to have_key(:order_id)
|
93
145
|
end
|
@@ -95,18 +147,21 @@ RSpec.describe FinApps::REST::DocumentsOrders do
|
|
95
147
|
|
96
148
|
context 'with invalid id' do
|
97
149
|
let(:id) { :invalid_order_id }
|
150
|
+
|
98
151
|
it { expect(results).to be_nil }
|
99
|
-
it { expect(error_messages).
|
152
|
+
it { expect(error_messages).not_to be_empty }
|
100
153
|
end
|
101
154
|
|
102
155
|
context 'when missing id' do
|
103
156
|
let(:id) { nil }
|
157
|
+
|
104
158
|
it_behaves_like 'a request that raises an error'
|
105
159
|
end
|
106
160
|
end
|
107
161
|
|
108
162
|
describe '#create' do
|
109
|
-
subject(:create) {
|
163
|
+
subject(:create) { described_class.new(client).create(params) }
|
164
|
+
|
110
165
|
let(:results) { create[0] }
|
111
166
|
let(:error_messages) { create[1] }
|
112
167
|
|
@@ -126,9 +181,11 @@ RSpec.describe FinApps::REST::DocumentsOrders do
|
|
126
181
|
"tag": 'new'
|
127
182
|
}
|
128
183
|
end
|
184
|
+
|
129
185
|
it_behaves_like 'an API request'
|
130
186
|
it_behaves_like 'a successful request'
|
131
187
|
it('results is a Hash') { expect(results).to be_a(Hash) }
|
188
|
+
|
132
189
|
it('performs a post and returns the response') do
|
133
190
|
expect(results).to have_key(:order_id)
|
134
191
|
end
|
@@ -146,8 +203,10 @@ RSpec.describe FinApps::REST::DocumentsOrders do
|
|
146
203
|
"reference_no": 'REFNO'
|
147
204
|
}
|
148
205
|
end
|
206
|
+
|
149
207
|
it { expect { create }.not_to raise_error }
|
150
208
|
it('results is nil') { expect(results).to be_nil }
|
209
|
+
|
151
210
|
it('error messages array is populated') do
|
152
211
|
expect(error_messages.first.downcase).to eq('invalid request body')
|
153
212
|
end
|
@@ -155,12 +214,14 @@ RSpec.describe FinApps::REST::DocumentsOrders do
|
|
155
214
|
|
156
215
|
context 'with missing params' do
|
157
216
|
let(:params) { nil }
|
217
|
+
|
158
218
|
it_behaves_like 'a request that raises an error'
|
159
219
|
end
|
160
220
|
end
|
161
221
|
|
162
222
|
describe '#update' do
|
163
|
-
subject(:update) {
|
223
|
+
subject(:update) { described_class.new(client).update(id, params) }
|
224
|
+
|
164
225
|
let(:params) { {} }
|
165
226
|
let(:results) { update[0] }
|
166
227
|
let(:error_messages) { update[1] }
|
@@ -169,16 +230,19 @@ RSpec.describe FinApps::REST::DocumentsOrders do
|
|
169
230
|
let(:id) { :valid_order_id }
|
170
231
|
|
171
232
|
context 'with valid params' do
|
172
|
-
let(:params) { {
|
233
|
+
let(:params) { {"tag": 'pending'} }
|
234
|
+
|
173
235
|
it_behaves_like 'an API request'
|
174
236
|
it_behaves_like 'a successful request'
|
175
237
|
it('results is nil') { expect(results).to be_nil }
|
176
238
|
end
|
177
239
|
|
178
240
|
context 'with invalid params' do
|
179
|
-
let(:params) { {
|
241
|
+
let(:params) { {"tag": 'invalid'} }
|
242
|
+
|
180
243
|
it_behaves_like 'an API request'
|
181
244
|
it('results is nil') { expect(results).to be_nil }
|
245
|
+
|
182
246
|
it('error messages array is populated') do
|
183
247
|
expect(error_messages.first.downcase).to eq('invalid request body')
|
184
248
|
end
|
@@ -187,9 +251,11 @@ RSpec.describe FinApps::REST::DocumentsOrders do
|
|
187
251
|
|
188
252
|
context 'with invalid id' do
|
189
253
|
let(:id) { :invalid_order_id }
|
190
|
-
let(:params) { {
|
254
|
+
let(:params) { {applicant: {first_name: 'Quasar'}} }
|
255
|
+
|
191
256
|
it_behaves_like 'an API request'
|
192
257
|
it('results is nil') { expect(results).to be_nil }
|
258
|
+
|
193
259
|
it('error messages array is populated') do
|
194
260
|
expect(error_messages.first.downcase).to eq(
|
195
261
|
'order id is invalid'
|
@@ -199,17 +265,20 @@ RSpec.describe FinApps::REST::DocumentsOrders do
|
|
199
265
|
|
200
266
|
context 'with missing id' do
|
201
267
|
let(:id) { nil }
|
268
|
+
|
202
269
|
it_behaves_like 'a request that raises an error'
|
203
270
|
end
|
204
271
|
end
|
205
272
|
|
206
273
|
describe '#destroy' do
|
207
|
-
subject(:destroy) {
|
274
|
+
subject(:destroy) { described_class.new(client).destroy(id) }
|
275
|
+
|
208
276
|
let(:results) { destroy[0] }
|
209
277
|
let(:error_messages) { destroy[1] }
|
210
278
|
|
211
279
|
context 'with valid id' do
|
212
280
|
let(:id) { :valid_order_id }
|
281
|
+
|
213
282
|
it_behaves_like 'an API request'
|
214
283
|
it_behaves_like 'a successful request'
|
215
284
|
it('results is nil') { expect(results).to be_nil }
|
@@ -217,8 +286,10 @@ RSpec.describe FinApps::REST::DocumentsOrders do
|
|
217
286
|
|
218
287
|
context 'with invalid id' do
|
219
288
|
let(:id) { :invalid_order_id }
|
289
|
+
|
220
290
|
it_behaves_like 'an API request'
|
221
291
|
it('results is nil') { expect(results).to be_nil }
|
292
|
+
|
222
293
|
it('error messages array is populated') do
|
223
294
|
expect(error_messages.first.downcase).to eq('resource not found')
|
224
295
|
end
|
@@ -226,12 +297,14 @@ RSpec.describe FinApps::REST::DocumentsOrders do
|
|
226
297
|
|
227
298
|
context 'with missing id' do
|
228
299
|
let(:id) { nil }
|
300
|
+
|
229
301
|
it_behaves_like 'a request that raises an error'
|
230
302
|
end
|
231
303
|
end
|
232
304
|
|
233
305
|
describe '#show_signing_url' do
|
234
|
-
subject(:sign_url) {
|
306
|
+
subject(:sign_url) { described_class.new(client).show_signing_url(order_id, signature_id) }
|
307
|
+
|
235
308
|
let(:results) { sign_url[0] }
|
236
309
|
let(:error_messages) { sign_url[1] }
|
237
310
|
let(:order_id) { :valid_order_id }
|
@@ -248,24 +321,28 @@ RSpec.describe FinApps::REST::DocumentsOrders do
|
|
248
321
|
|
249
322
|
context 'with invalid signature id' do
|
250
323
|
let(:signature_id) { :invalid_signature_id }
|
324
|
+
|
251
325
|
it { expect(results).to be_nil }
|
252
|
-
it { expect(error_messages).
|
326
|
+
it { expect(error_messages).not_to be_empty }
|
253
327
|
end
|
254
328
|
end
|
255
329
|
|
256
330
|
context 'with invalid order id' do
|
257
331
|
let(:order_id) { :invalid_order_id }
|
332
|
+
|
258
333
|
it { expect(results).to be_nil }
|
259
|
-
it { expect(error_messages).
|
334
|
+
it { expect(error_messages).not_to be_empty }
|
260
335
|
end
|
261
336
|
|
262
337
|
context 'with missing order id' do
|
263
338
|
let(:order_id) { nil }
|
339
|
+
|
264
340
|
it_behaves_like 'a request that raises an error'
|
265
341
|
end
|
266
342
|
|
267
343
|
context 'with missing signature id' do
|
268
344
|
let(:signature_id) { nil }
|
345
|
+
|
269
346
|
it_behaves_like 'a request that raises an error'
|
270
347
|
end
|
271
348
|
end
|
@@ -5,7 +5,8 @@ require 'rest/api_request'
|
|
5
5
|
|
6
6
|
RSpec.describe FinApps::REST::EsignTemplates do
|
7
7
|
include SpecHelpers::Client
|
8
|
-
subject(:templates) {
|
8
|
+
subject(:templates) { described_class.new(client).list }
|
9
|
+
|
9
10
|
let(:results) { templates[0] }
|
10
11
|
|
11
12
|
describe '#list' do
|
@@ -2,79 +2,77 @@
|
|
2
2
|
|
3
3
|
require 'spec_helpers/client'
|
4
4
|
|
5
|
-
RSpec.describe FinApps::REST::OperatorsPasswordResets
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
5
|
+
RSpec.describe FinApps::REST::OperatorsPasswordResets do
|
6
|
+
context 'when initialized with valid FinApps::Client object' do
|
7
|
+
include SpecHelpers::Client
|
8
|
+
subject(:operators_password_resets) do
|
9
|
+
described_class.new(client)
|
10
|
+
end
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
describe '#create' do
|
13
|
+
let(:results) { create[0] }
|
14
|
+
let(:error_messages) { create[1] }
|
15
15
|
|
16
|
-
|
17
|
-
|
16
|
+
context 'when missing params' do
|
17
|
+
let(:create) { subject.create(nil) }
|
18
18
|
|
19
|
-
|
20
|
-
|
19
|
+
it do
|
20
|
+
expect { create }.to raise_error(FinAppsCore::MissingArgumentsError)
|
21
|
+
end
|
21
22
|
end
|
22
|
-
end
|
23
23
|
|
24
|
-
|
25
|
-
|
24
|
+
context 'with invalid params' do
|
25
|
+
let(:create) { subject.create(params: 'invalid params') }
|
26
26
|
|
27
|
-
|
28
|
-
|
27
|
+
it do
|
28
|
+
expect { create }.to raise_error(FinAppsCore::InvalidArgumentsError)
|
29
|
+
end
|
29
30
|
end
|
30
|
-
end
|
31
31
|
|
32
|
-
|
33
|
-
|
32
|
+
context 'with valid params' do
|
33
|
+
let(:create) { subject.create(email: 'valid email') }
|
34
34
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
expect(results).to have_key(:
|
39
|
-
expect(results).to have_key(:
|
40
|
-
expect(
|
35
|
+
it { expect { create }.not_to raise_error }
|
36
|
+
it('returns an array') { expect(create).to be_a(Array) }
|
37
|
+
it { expect(results).to have_key(:public_id) }
|
38
|
+
it { expect(results).to have_key(:token) }
|
39
|
+
it { expect(results).to have_key(:expiry_date) }
|
40
|
+
it('returns no error messages') { expect(error_messages).to be_empty }
|
41
41
|
end
|
42
|
-
it('returns no error messages') { expect(error_messages).to be_empty }
|
43
42
|
end
|
44
|
-
end
|
45
43
|
|
46
|
-
|
47
|
-
|
48
|
-
|
44
|
+
describe '#update' do
|
45
|
+
let(:results) { update[0] }
|
46
|
+
let(:error_messages) { update[1] }
|
49
47
|
|
50
|
-
|
51
|
-
|
48
|
+
context 'when missing params' do
|
49
|
+
let(:update) { subject.update(nil) }
|
52
50
|
|
53
|
-
|
54
|
-
|
51
|
+
it do
|
52
|
+
expect { update }.to raise_error(FinAppsCore::MissingArgumentsError)
|
53
|
+
end
|
55
54
|
end
|
56
|
-
end
|
57
55
|
|
58
|
-
|
59
|
-
|
56
|
+
context 'with invalid params' do
|
57
|
+
let(:update) { subject.update(params: 'invalid') }
|
60
58
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
59
|
+
it { expect { update }.not_to raise_error }
|
60
|
+
it('results is nil') { expect(results).to be_nil }
|
61
|
+
|
62
|
+
it('error messages array is populated') do
|
63
|
+
expect(error_messages.first.downcase).to eq('invalid request body')
|
64
|
+
end
|
65
65
|
end
|
66
|
-
end
|
67
66
|
|
68
|
-
|
69
|
-
|
67
|
+
context 'with valid params' do
|
68
|
+
let(:update) { subject.update(params: 'valid') }
|
70
69
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
expect(results).to have_key(:
|
75
|
-
expect(
|
70
|
+
it { expect { update }.not_to raise_error }
|
71
|
+
it('returns an array') { expect(update).to be_a(Array) }
|
72
|
+
it { expect(results).to have_key(:public_id) }
|
73
|
+
it { expect(results).to have_key(:role) }
|
74
|
+
it('returns no error messages') { expect(error_messages).to be_empty }
|
76
75
|
end
|
77
|
-
it('returns no error messages') { expect(error_messages).to be_empty }
|
78
76
|
end
|
79
77
|
end
|
80
78
|
end
|