finapps 5.0.43 → 5.1.0
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/ci.yaml +47 -0
- data/.github/workflows/release.yml +42 -42
- data/.rubocop.yml +1 -1
- data/.ruby-version +1 -1
- data/Guardfile +1 -1
- data/README.md +6 -4
- data/finapps.gemspec +8 -7
- data/lib/finapps.rb +1 -0
- data/lib/finapps/rest/client.rb +2 -1
- data/lib/finapps/rest/consumers.rb +5 -5
- data/lib/finapps/rest/documents_orders.rb +23 -4
- data/lib/finapps/rest/documents_orders_notifications.rb +2 -2
- data/lib/finapps/rest/documents_uploads.rb +8 -0
- data/lib/finapps/rest/operators.rb +3 -3
- data/lib/finapps/rest/orders.rb +6 -6
- data/lib/finapps/rest/screenings.rb +64 -0
- data/lib/finapps/version.rb +1 -1
- data/spec/rest/api_request.rb +8 -0
- data/spec/rest/documents_orders_notifications_spec.rb +2 -2
- data/spec/rest/documents_orders_spec.rb +37 -31
- data/spec/rest/documents_uploads_spec.rb +53 -0
- data/spec/rest/screenings_spec.rb +235 -0
- data/spec/rest/signed_documents_downloads_spec.rb +4 -7
- data/spec/rest/verix/verix_documents_spec.rb +4 -4
- data/spec/spec_helper.rb +1 -1
- data/spec/support/documents_uploads_routes.rb +39 -0
- data/spec/support/fake_api.rb +457 -456
- data/spec/support/fixtures/documents/retrieve_order.json +97 -0
- data/spec/support/fixtures/screening.json +26 -0
- data/spec/support/fixtures/screening_invalid_update.json +5 -0
- data/spec/support/fixtures/screening_list.json +25 -0
- data/spec/support/fixtures/session_not_found.json +5 -0
- data/spec/support/screenings_routes.rb +73 -0
- metadata +111 -79
- data/.github/workflows/main.yaml +0 -38
data/lib/finapps/version.rb
CHANGED
data/spec/rest/api_request.rb
CHANGED
@@ -16,3 +16,11 @@ RSpec.shared_examples 'a successful request' do |_parameter|
|
|
16
16
|
expect(subject[ERROR_MESSAGES]).to be_empty
|
17
17
|
end
|
18
18
|
end
|
19
|
+
|
20
|
+
RSpec.shared_examples 'a request that raises an error' do |_parameter|
|
21
|
+
it do
|
22
|
+
expect { subject }.to raise_error(
|
23
|
+
FinAppsCore::MissingArgumentsError
|
24
|
+
)
|
25
|
+
end
|
26
|
+
end
|
@@ -17,7 +17,7 @@ RSpec.describe FinApps::REST::DocumentsOrdersNotifications do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
context 'when invalid id is provided' do
|
20
|
-
let(:create) { subject.create(:invalid_id) }
|
20
|
+
let(:create) { subject.create(:invalid_id, ['1234']) }
|
21
21
|
let(:results) { create[RESULTS] }
|
22
22
|
let(:error_messages) { create[ERROR_MESSAGES] }
|
23
23
|
|
@@ -30,7 +30,7 @@ RSpec.describe FinApps::REST::DocumentsOrdersNotifications do
|
|
30
30
|
end
|
31
31
|
|
32
32
|
context 'with valid id' do
|
33
|
-
let(:create) { subject.create(:valid_id) }
|
33
|
+
let(:create) { subject.create(:valid_id, ['1234']) }
|
34
34
|
let(:results) { create[RESULTS] }
|
35
35
|
let(:error_messages) { create[ERROR_MESSAGES] }
|
36
36
|
|
@@ -6,14 +6,6 @@ require 'rest/api_request'
|
|
6
6
|
RSpec.describe FinApps::REST::DocumentsOrders do
|
7
7
|
include SpecHelpers::Client
|
8
8
|
|
9
|
-
RSpec.shared_examples 'a request that raises an error' do |_parameter|
|
10
|
-
it do
|
11
|
-
expect { subject }.to raise_error(
|
12
|
-
FinAppsCore::MissingArgumentsError
|
13
|
-
)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
9
|
describe '#list' do
|
18
10
|
subject(:list) { described_class.new(client).list(params) }
|
19
11
|
|
@@ -70,7 +62,7 @@ RSpec.describe FinApps::REST::DocumentsOrders do
|
|
70
62
|
end
|
71
63
|
|
72
64
|
context 'with search term containing spaces' do
|
73
|
-
let(:params) { {
|
65
|
+
let(:params) { {searchTerm: 'Blue Jay', page: 2} }
|
74
66
|
|
75
67
|
it 'builds query and sends proper request' do
|
76
68
|
list
|
@@ -134,14 +126,28 @@ RSpec.describe FinApps::REST::DocumentsOrders do
|
|
134
126
|
let(:error_messages) { show[1] }
|
135
127
|
|
136
128
|
context 'with valid id' do
|
137
|
-
|
129
|
+
context 'when id is an identifier' do
|
130
|
+
let(:id) { :valid_order_id }
|
138
131
|
|
139
|
-
|
140
|
-
|
141
|
-
|
132
|
+
it_behaves_like 'an API request'
|
133
|
+
it_behaves_like 'a successful request'
|
134
|
+
it('has an order_id node in the response') do
|
135
|
+
expect(results).to have_key(:order_id)
|
136
|
+
end
|
137
|
+
end
|
142
138
|
|
143
|
-
|
144
|
-
|
139
|
+
context 'when id is a token' do
|
140
|
+
let(:id) { '0123456abc.0123456abc.0123456abc' }
|
141
|
+
|
142
|
+
it_behaves_like 'an API request'
|
143
|
+
it_behaves_like 'a successful request'
|
144
|
+
it('has an order node in the response') do
|
145
|
+
expect(results).to have_key(:order)
|
146
|
+
end
|
147
|
+
|
148
|
+
it('has a consumer node in the response') do
|
149
|
+
expect(results).to have_key(:consumer)
|
150
|
+
end
|
145
151
|
end
|
146
152
|
end
|
147
153
|
|
@@ -168,17 +174,17 @@ RSpec.describe FinApps::REST::DocumentsOrders do
|
|
168
174
|
context 'with valid params' do
|
169
175
|
let(:params) do
|
170
176
|
{
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
177
|
+
applicant: {
|
178
|
+
email: 'validemail@financialapps.com',
|
179
|
+
first_name: 'Emily',
|
180
|
+
last_name: 'Macs',
|
181
|
+
role: 'patient'
|
176
182
|
},
|
177
|
-
|
183
|
+
esign_documents: [
|
178
184
|
'temp-id'
|
179
185
|
],
|
180
|
-
|
181
|
-
|
186
|
+
reference_no: 'REFNO',
|
187
|
+
tag: 'new'
|
182
188
|
}
|
183
189
|
end
|
184
190
|
|
@@ -194,13 +200,13 @@ RSpec.describe FinApps::REST::DocumentsOrders do
|
|
194
200
|
context 'with invalid params' do
|
195
201
|
let(:params) do
|
196
202
|
{
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
203
|
+
applicant: {
|
204
|
+
email: 'validemail@financialapps.com',
|
205
|
+
first_name: 'Emily',
|
206
|
+
last_name: 'Macs',
|
207
|
+
role: 'patient'
|
202
208
|
},
|
203
|
-
|
209
|
+
reference_no: 'REFNO'
|
204
210
|
}
|
205
211
|
end
|
206
212
|
|
@@ -230,7 +236,7 @@ RSpec.describe FinApps::REST::DocumentsOrders do
|
|
230
236
|
let(:id) { :valid_order_id }
|
231
237
|
|
232
238
|
context 'with valid params' do
|
233
|
-
let(:params) { {
|
239
|
+
let(:params) { {tag: 'pending'} }
|
234
240
|
|
235
241
|
it_behaves_like 'an API request'
|
236
242
|
it_behaves_like 'a successful request'
|
@@ -238,7 +244,7 @@ RSpec.describe FinApps::REST::DocumentsOrders do
|
|
238
244
|
end
|
239
245
|
|
240
246
|
context 'with invalid params' do
|
241
|
-
let(:params) { {
|
247
|
+
let(:params) { {tag: 'invalid'} }
|
242
248
|
|
243
249
|
it_behaves_like 'an API request'
|
244
250
|
it('results is nil') { expect(results).to be_nil }
|
@@ -101,4 +101,57 @@ RSpec.describe FinApps::REST::DocumentsUploads do
|
|
101
101
|
end
|
102
102
|
end
|
103
103
|
end
|
104
|
+
|
105
|
+
describe '#destroy_by_consumer' do
|
106
|
+
subject(:destroy_by_consumer) do
|
107
|
+
described_class.new(client).destroy_by_consumer(consumer_id, document_id)
|
108
|
+
end
|
109
|
+
|
110
|
+
let(:results) { destroy_by_consumer[0] }
|
111
|
+
let(:error_messages) { destroy_by_consumer[1] }
|
112
|
+
|
113
|
+
context 'with valid params' do
|
114
|
+
let(:consumer_id) { :valid_consumer_id }
|
115
|
+
let(:document_id) { :valid_document_id }
|
116
|
+
|
117
|
+
it_behaves_like 'an API request'
|
118
|
+
it_behaves_like 'a successful request'
|
119
|
+
it('results is nil') { expect(results).to be_nil }
|
120
|
+
end
|
121
|
+
|
122
|
+
context 'with invalid consumer_id' do
|
123
|
+
let(:consumer_id) { :invalid_consumer_id }
|
124
|
+
let(:document_id) { :valid_document_id }
|
125
|
+
|
126
|
+
it_behaves_like 'an API request'
|
127
|
+
it('results is nil') { expect(results).to be_nil }
|
128
|
+
|
129
|
+
it('error messages array is populated') do
|
130
|
+
expect(error_messages.first.downcase).to eq('resource not found')
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
context 'with invalid document id' do
|
135
|
+
let(:consumer_id) { :valid_consumer_id }
|
136
|
+
let(:document_id) { :invalid_document_id }
|
137
|
+
|
138
|
+
it_behaves_like 'an API request'
|
139
|
+
it('results is nil') { expect(results).to be_nil }
|
140
|
+
|
141
|
+
it('error messages array is populated') do
|
142
|
+
expect(error_messages.first.downcase).to eq('resource not found')
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
context 'with missing id' do
|
147
|
+
let(:consumer_id) { nil }
|
148
|
+
let(:document_id) { nil }
|
149
|
+
|
150
|
+
it do
|
151
|
+
expect { destroy_by_consumer }.to raise_error(
|
152
|
+
FinAppsCore::MissingArgumentsError
|
153
|
+
)
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
104
157
|
end
|
@@ -0,0 +1,235 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helpers/client'
|
4
|
+
require 'rest/api_request'
|
5
|
+
|
6
|
+
RSpec.describe FinApps::REST::Screenings do
|
7
|
+
include SpecHelpers::Client
|
8
|
+
|
9
|
+
describe '#list' do
|
10
|
+
subject(:list) { described_class.new(client).list(params) }
|
11
|
+
|
12
|
+
let(:results) { list[0] }
|
13
|
+
let(:error_messages) { list[1] }
|
14
|
+
|
15
|
+
context 'with valid params' do
|
16
|
+
let(:params) do
|
17
|
+
{
|
18
|
+
page: 2,
|
19
|
+
sort: 'date_created',
|
20
|
+
requested: 25,
|
21
|
+
searchTerm: 'term'
|
22
|
+
}
|
23
|
+
end
|
24
|
+
|
25
|
+
context 'without searchTerm' do
|
26
|
+
let(:params) { {searchTerm: nil, page: 2} }
|
27
|
+
|
28
|
+
it_behaves_like 'an API request'
|
29
|
+
it_behaves_like 'a successful request'
|
30
|
+
it 'performs a get and returns the response' do
|
31
|
+
expect(results).to have_key(:records)
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'builds query and sends proper request' do
|
35
|
+
list
|
36
|
+
url = "#{versioned_api_path}/screenings?page=2"
|
37
|
+
expect(WebMock).to have_requested(:get, url)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
# rubocop:disable RSpec/ExampleLength
|
42
|
+
context 'with searchTerm' do
|
43
|
+
it_behaves_like 'an API request'
|
44
|
+
it_behaves_like 'a successful request'
|
45
|
+
it 'performs a get and returns the response' do
|
46
|
+
expect(results).to have_key(:records)
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'builds query and sends proper request' do
|
50
|
+
list
|
51
|
+
url =
|
52
|
+
"#{versioned_api_path}/screenings?filter=%7B%22$or%22:%5B%7B%22" \
|
53
|
+
'consumer.public_id%22:%22term%22%7D,%7B%22consumer.email%22:%22' \
|
54
|
+
'term%22%7D%5D%7D&page=2&requested=25&sort=date_created'
|
55
|
+
|
56
|
+
expect(WebMock).to have_requested(:get, url)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
# rubocop:enable RSpec/ExampleLength
|
60
|
+
end
|
61
|
+
|
62
|
+
context 'with invalid params' do
|
63
|
+
let(:params) { ['invalid array'] }
|
64
|
+
|
65
|
+
it { expect { list }.to raise_error(FinAppsCore::InvalidArgumentsError) }
|
66
|
+
end
|
67
|
+
|
68
|
+
context 'with missing params' do
|
69
|
+
let(:params) { nil }
|
70
|
+
|
71
|
+
it_behaves_like 'an API request'
|
72
|
+
it_behaves_like 'a successful request'
|
73
|
+
it('performs a get and returns the response') do
|
74
|
+
expect(results).to have_key(:records)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
describe '#show' do
|
80
|
+
subject(:show) { described_class.new(client).show(id) }
|
81
|
+
|
82
|
+
let(:results) { show[0] }
|
83
|
+
let(:error_messages) { show[1] }
|
84
|
+
|
85
|
+
context 'with valid id' do
|
86
|
+
let(:id) { :valid_id }
|
87
|
+
|
88
|
+
it_behaves_like 'an API request'
|
89
|
+
it_behaves_like 'a successful request'
|
90
|
+
it('performs a get and returns the response') do
|
91
|
+
expect(results).to have_key(:session)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
context 'with invalid id' do
|
96
|
+
let(:id) { :invalid_id }
|
97
|
+
|
98
|
+
it { expect(results).to be_nil }
|
99
|
+
it { expect(error_messages).not_to be_empty }
|
100
|
+
end
|
101
|
+
|
102
|
+
context 'when missing id' do
|
103
|
+
let(:id) { nil }
|
104
|
+
|
105
|
+
it_behaves_like 'a request that raises an error'
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
describe '#create' do
|
110
|
+
subject(:create) { described_class.new(client).create(params) }
|
111
|
+
|
112
|
+
let(:results) { create[0] }
|
113
|
+
let(:error_messages) { create[1] }
|
114
|
+
|
115
|
+
context 'with valid params' do
|
116
|
+
let(:params) do
|
117
|
+
{
|
118
|
+
email: 'validemail@financialapps.com',
|
119
|
+
first_name: 'Geo',
|
120
|
+
last_name: 'Metric',
|
121
|
+
public_id: '1234'
|
122
|
+
}
|
123
|
+
end
|
124
|
+
|
125
|
+
it_behaves_like 'an API request'
|
126
|
+
it_behaves_like 'a successful request'
|
127
|
+
it('results is a Hash') { expect(results).to be_a(Hash) }
|
128
|
+
|
129
|
+
it('performs a post and returns the response') do
|
130
|
+
expect(results).to have_key(:question)
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
context 'with invalid params' do
|
135
|
+
let(:params) { {params: 'invalid'} }
|
136
|
+
|
137
|
+
it { expect { create }.not_to raise_error }
|
138
|
+
it('results is nil') { expect(results).to be_nil }
|
139
|
+
|
140
|
+
it('error messages array is populated') do
|
141
|
+
expect(error_messages.first.downcase).to eq('invalid request body')
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
context 'with missing params' do
|
146
|
+
let(:params) { nil }
|
147
|
+
|
148
|
+
it_behaves_like 'a request that raises an error'
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
describe '#update' do
|
153
|
+
subject(:update) { described_class.new(client).update(id, params) }
|
154
|
+
|
155
|
+
let(:params) { {} }
|
156
|
+
let(:results) { update[0] }
|
157
|
+
let(:error_messages) { update[1] }
|
158
|
+
|
159
|
+
context 'with valid session id' do
|
160
|
+
let(:id) { :valid_id }
|
161
|
+
|
162
|
+
context 'with valid params' do
|
163
|
+
let(:params) { {question_id: '1234'} }
|
164
|
+
|
165
|
+
it_behaves_like 'an API request'
|
166
|
+
it_behaves_like 'a successful request'
|
167
|
+
it('returns the next question') do
|
168
|
+
expect(results).to have_key(:question)
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
context 'with invalid params' do
|
173
|
+
let(:params) { {question_id: 'invalid'} }
|
174
|
+
|
175
|
+
it_behaves_like 'an API request'
|
176
|
+
it('results is nil') { expect(results).to be_nil }
|
177
|
+
|
178
|
+
it('error messages array is populated') do
|
179
|
+
expect(error_messages.first.downcase).to eq('question with id (invalid) not found ')
|
180
|
+
end
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
context 'with invalid session id' do
|
185
|
+
let(:id) { :invalid_id }
|
186
|
+
let(:params) { {question_id: '1234'} }
|
187
|
+
|
188
|
+
it_behaves_like 'an API request'
|
189
|
+
it('results is nil') { expect(results).to be_nil }
|
190
|
+
|
191
|
+
it('error messages array is populated') do
|
192
|
+
expect(error_messages.first.downcase).to eq(
|
193
|
+
'resource not found'
|
194
|
+
)
|
195
|
+
end
|
196
|
+
end
|
197
|
+
end
|
198
|
+
|
199
|
+
describe '#destroy' do
|
200
|
+
subject(:destroy) { described_class.new(client).destroy(id) }
|
201
|
+
|
202
|
+
let(:results) { destroy[0] }
|
203
|
+
let(:error_messages) { destroy[1] }
|
204
|
+
|
205
|
+
context 'with valid session id' do
|
206
|
+
let(:id) { :valid_id }
|
207
|
+
|
208
|
+
it_behaves_like 'an API request'
|
209
|
+
it_behaves_like 'a successful request'
|
210
|
+
it('results is nil') { expect(results).to be_nil }
|
211
|
+
it('error_messages is empty') { expect(error_messages).to be_empty }
|
212
|
+
end
|
213
|
+
|
214
|
+
context 'when missing session id' do
|
215
|
+
let(:id) { nil }
|
216
|
+
|
217
|
+
it_behaves_like 'a request that raises an error'
|
218
|
+
end
|
219
|
+
|
220
|
+
context 'with invalid session id' do
|
221
|
+
let(:id) { :invalid_id }
|
222
|
+
|
223
|
+
it_behaves_like 'an API request'
|
224
|
+
it('results is nil') { expect(results).to be_nil }
|
225
|
+
|
226
|
+
it('error_messages is not empty') do
|
227
|
+
expect(error_messages).not_to be_empty
|
228
|
+
end
|
229
|
+
|
230
|
+
it('error messages array is populated') do
|
231
|
+
expect(error_messages.first.downcase).to eq('session not found')
|
232
|
+
end
|
233
|
+
end
|
234
|
+
end
|
235
|
+
end
|