finapps 2.3.3 → 2.3.5
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/.rubocop.yml +1 -1
- data/lib/finapps/rest/operators.rb +15 -0
- data/lib/finapps/rest/orders.rb +44 -0
- data/lib/finapps/utils/query_builder.rb +13 -5
- data/lib/finapps/version.rb +1 -1
- data/spec/rest/operators_spec.rb +25 -4
- data/spec/rest/orders_spec.rb +11 -3
- data/spec/utils/query_builder_spec.rb +15 -8
- metadata +23 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 466bc237a6a77b4f9021545c74a398c3665a18b3
|
4
|
+
data.tar.gz: 42e49b85f895de09e7892a59e0aad5320ffcd63c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9cd1afd63950ac89df8c4110494809b1816812c8a4191d410efc93fb9e0c8f0a562ca89b184118d00c8ecf0afe61a3ee41e5cc23861ae6295aa8467c5728640d
|
7
|
+
data.tar.gz: f37cadd33797e2c95e76ccfc628891e4560232ea304712b0ef26c393b410caab57b563dd6b81b8413d617c17c89c301ba735014c8881d004cab434f41b8e8adb
|
data/.rubocop.yml
CHANGED
@@ -51,6 +51,21 @@ module FinApps
|
|
51
51
|
def validates(params)
|
52
52
|
params.key?(:password) && params[:password] && params.key?(:password_confirm) && params[:password_confirm]
|
53
53
|
end
|
54
|
+
|
55
|
+
def build_filter(params)
|
56
|
+
filter = {}
|
57
|
+
filter.merge!(search_query(params[:searchTerm])) if params[:searchTerm]
|
58
|
+
filter.merge!(role_query(params[:role])) if params[:role]
|
59
|
+
filter
|
60
|
+
end
|
61
|
+
|
62
|
+
def search_query(term)
|
63
|
+
{"last_name": {"$regex": term, "$options": 'i'}}
|
64
|
+
end
|
65
|
+
|
66
|
+
def role_query(role)
|
67
|
+
role.is_a?(Array) ? {"role": {"$in": role.map(&:to_i)}} : {"role": role.to_i}
|
68
|
+
end
|
54
69
|
end
|
55
70
|
end
|
56
71
|
end
|
data/lib/finapps/rest/orders.rb
CHANGED
@@ -48,6 +48,50 @@ module FinApps
|
|
48
48
|
path = "#{end_point}/#{ERB::Util.url_encode(id)}/cancel"
|
49
49
|
update nil, nil, path
|
50
50
|
end
|
51
|
+
|
52
|
+
private
|
53
|
+
|
54
|
+
def build_filter(params)
|
55
|
+
filter = {}
|
56
|
+
filter.merge!(search_query(params[:searchTerm])) if params[:searchTerm]
|
57
|
+
filter.merge!(status_query(params[:status])) if params[:status]
|
58
|
+
filter.merge!(assignment_query(params[:assignment])) if params.key?(:assignment) # assignment can be nil
|
59
|
+
filter
|
60
|
+
end
|
61
|
+
|
62
|
+
def search_query(term)
|
63
|
+
{
|
64
|
+
"$or": [{
|
65
|
+
"public_id": {
|
66
|
+
"$regex": "^#{term}",
|
67
|
+
"$options": 'i'
|
68
|
+
}
|
69
|
+
}, {
|
70
|
+
"applicant.last_name": {
|
71
|
+
"$regex": term,
|
72
|
+
"$options": 'i'
|
73
|
+
}
|
74
|
+
}, {
|
75
|
+
"assignment.last_name": {
|
76
|
+
"$regex": term,
|
77
|
+
"$options": 'i'
|
78
|
+
}
|
79
|
+
}, {
|
80
|
+
"requestor.reference_no": {
|
81
|
+
"$regex": "^#{term}",
|
82
|
+
"$options": 'i'
|
83
|
+
}
|
84
|
+
}]
|
85
|
+
}
|
86
|
+
end
|
87
|
+
|
88
|
+
def status_query(status)
|
89
|
+
status.is_a?(Array) ? {"status": {"$in": status.map(&:to_i)}} : {"status": status.to_i}
|
90
|
+
end
|
91
|
+
|
92
|
+
def assignment_query(assignment)
|
93
|
+
{"assignment.operator_id": assignment}
|
94
|
+
end
|
51
95
|
end
|
52
96
|
end
|
53
97
|
end
|
@@ -4,11 +4,19 @@ module FinApps
|
|
4
4
|
module Utils
|
5
5
|
module QueryBuilder
|
6
6
|
def build_query_path(root_url, params)
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
"
|
7
|
+
filter_obj = build_filter(params)
|
8
|
+
page = "page=#{params[:page]}" if params[:page]
|
9
|
+
requested = "requested=#{params[:requested]}" if params[:requested]
|
10
|
+
sort = "sort=#{ERB::Util.url_encode(params[:sort])}" if params[:sort]
|
11
|
+
filter = "filter=#{ERB::Util.url_encode(filter_obj.to_json)}" if filter_obj && !filter_obj.empty?
|
12
|
+
query_join(root_url, [page, requested, sort, filter])
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def query_join(root_url, params_array)
|
18
|
+
query_string = params_array.compact.join('&')
|
19
|
+
!query_string.empty? ? [root_url, query_string].join('?') : nil
|
12
20
|
end
|
13
21
|
end
|
14
22
|
end
|
data/lib/finapps/version.rb
CHANGED
data/spec/rest/operators_spec.rb
CHANGED
@@ -7,16 +7,37 @@ RSpec.describe FinApps::REST::Operators, 'initialized with valid FinApps::Client
|
|
7
7
|
subject(:operators) { FinApps::REST::Operators.new(client) }
|
8
8
|
|
9
9
|
describe '#list' do
|
10
|
+
let(:list) { subject.list(params) }
|
11
|
+
let(:results) { list[0] }
|
12
|
+
let(:error_messages) { list[1] }
|
13
|
+
|
10
14
|
context 'when missing params' do
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
+
let(:params) { nil }
|
16
|
+
it { expect { list }.not_to raise_error }
|
17
|
+
it('performs a get and returns the response') { expect(results).to respond_to(:records) }
|
18
|
+
it('returns an array of records') { expect(results.records).to be_a(Array) }
|
19
|
+
it('returns no error messages') { expect(error_messages).to be_empty }
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'when invalid params are provided' do
|
23
|
+
let(:params) { ['invalid array'] }
|
24
|
+
|
25
|
+
it { expect { list }.to raise_error(FinAppsCore::InvalidArgumentsError) }
|
26
|
+
end
|
27
|
+
|
28
|
+
context 'when including valid params' do
|
29
|
+
let(:params) { {page: 2, sort: 'date_created', requested: 25, searchTerm: 'term', role: 2} }
|
15
30
|
|
16
31
|
it { expect { list }.not_to raise_error }
|
17
32
|
it('performs a get and returns the response') { expect(results).to respond_to(:records) }
|
18
33
|
it('returns an array of records') { expect(results.records).to be_a(Array) }
|
19
34
|
it('returns no error messages') { expect(error_messages).to be_empty }
|
35
|
+
it 'builds query and sends proper request' do
|
36
|
+
list
|
37
|
+
url = "#{FinAppsCore::REST::Defaults::DEFAULTS[:host]}/v2/operators?filter=%7B%22last_name%22:%7B%22$regex" \
|
38
|
+
'%22:%22term%22,%22$options%22:%22i%22%7D,%22role%22:2%7D&page=2&requested=25&sort=date_created'
|
39
|
+
expect(WebMock).to have_requested(:get, url)
|
40
|
+
end
|
20
41
|
end
|
21
42
|
end
|
22
43
|
|
data/spec/rest/orders_spec.rb
CHANGED
@@ -76,16 +76,24 @@ RSpec.describe FinApps::REST::Orders do
|
|
76
76
|
|
77
77
|
context 'when including valid params' do
|
78
78
|
subject { FinApps::REST::Orders.new(client).list(params) }
|
79
|
-
let(:params)
|
79
|
+
let(:params) do
|
80
|
+
{page: 2, sort: 'status', requested: 25, searchTerm: 'term', status: %w(1 7),
|
81
|
+
assignment: 'valid_operator'}
|
82
|
+
end
|
80
83
|
|
81
84
|
it { expect { subject }.not_to raise_error }
|
82
85
|
it('returns an array') { expect(subject).to be_a(Array) }
|
83
86
|
it('performs a get and returns the response') { expect(subject[RESULTS]).to respond_to(:orders) }
|
84
87
|
it('each order contains a consumer_id') { expect(subject[RESULTS].orders).to all(have_key('consumer_id')) }
|
85
88
|
it('returns no error messages') { expect(subject[ERROR_MESSAGES]).to be_empty }
|
86
|
-
it 'sends proper request' do
|
89
|
+
it 'builds query and sends proper request' do
|
87
90
|
subject
|
88
|
-
url = "#{FinAppsCore::REST::Defaults::DEFAULTS[:host]}/v2/orders?
|
91
|
+
url = "#{FinAppsCore::REST::Defaults::DEFAULTS[:host]}/v2/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:%7B%22$regex' \
|
93
|
+
'%22:%22term%22,%22$options%22:%22i%22%7D%7D,%7B%22assignment.last_name%22:%7B%22$regex%22:%22term%22,' \
|
94
|
+
'%22$options%22:%22i%22%7D%7D,%7B%22requestor.reference_no%22:%7B%22$regex%22:%22%5Eterm%22,%22$options' \
|
95
|
+
'%22:%22i%22%7D%7D%5D,%22status%22:%7B%22$in%22:%5B1,7%5D%7D,%22assignment.operator_id%22:%22' \
|
96
|
+
'valid_operator%22%7D&page=2&requested=25&sort=status'
|
89
97
|
expect(WebMock).to have_requested(:get, url)
|
90
98
|
end
|
91
99
|
end
|
@@ -2,25 +2,32 @@
|
|
2
2
|
|
3
3
|
class FakeClass
|
4
4
|
include FinApps::Utils::QueryBuilder
|
5
|
+
|
6
|
+
def build_filter(p); end
|
5
7
|
end
|
6
8
|
|
7
9
|
RSpec.describe FinApps::Utils::QueryBuilder do
|
10
|
+
subject { FakeClass.new }
|
11
|
+
|
8
12
|
describe '#build_query_path' do
|
9
|
-
subject { FakeClass.new }
|
10
13
|
let(:end_point) { 'orders' }
|
11
14
|
|
12
15
|
context 'with full params' do
|
13
|
-
let(:params) { {page: '1', requested: '20', sort: '-date',
|
14
|
-
it 'returns correct string' do
|
15
|
-
|
16
|
+
let(:params) { {page: '1', requested: '20', sort: '-date', random: 'random'} }
|
17
|
+
it 'calls #build_filter and returns correct string' do
|
18
|
+
allow(subject).to receive(:build_filter) { {role: 2} }
|
19
|
+
expect(subject).to receive(:build_filter).with(params)
|
20
|
+
correct_string = 'orders?page=1&requested=20&sort=-date&filter=%7B%22role%22%3A2%7D'
|
16
21
|
expect(subject.build_query_path(end_point, params)).to eq(correct_string)
|
17
22
|
end
|
18
23
|
end
|
19
24
|
|
20
|
-
context 'with
|
21
|
-
let(:params) { {
|
22
|
-
it 'returns
|
23
|
-
|
25
|
+
context 'with no params' do
|
26
|
+
let(:params) { {} }
|
27
|
+
it 'returns returns' do
|
28
|
+
allow(subject).to receive(:build_filter) { {} }
|
29
|
+
expect(subject).to receive(:build_filter).with(params)
|
30
|
+
expect(subject.build_query_path(end_point, params)).to be_nil
|
24
31
|
end
|
25
32
|
end
|
26
33
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: finapps
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.3.
|
4
|
+
version: 2.3.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Erich Quintero
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: finapps_core
|
@@ -315,34 +315,34 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
315
315
|
version: '0'
|
316
316
|
requirements: []
|
317
317
|
rubyforge_project:
|
318
|
-
rubygems_version: 2.6.
|
318
|
+
rubygems_version: 2.6.14
|
319
319
|
signing_key:
|
320
320
|
specification_version: 4
|
321
321
|
summary: FinApps REST API ruby client.
|
322
322
|
test_files:
|
323
|
-
- spec/
|
324
|
-
- spec/
|
325
|
-
- spec/
|
326
|
-
- spec/
|
327
|
-
- spec/rest/
|
328
|
-
- spec/rest/consumers_spec.rb
|
329
|
-
- spec/rest/orders_spec.rb
|
330
|
-
- spec/rest/order_tokens_spec.rb
|
331
|
-
- spec/rest/institutions_forms_spec.rb
|
332
|
-
- spec/rest/operators_spec.rb
|
333
|
-
- spec/rest/user_institutions_statuses_spec.rb
|
323
|
+
- spec/spec_helper.rb
|
324
|
+
- spec/spec_helpers/client.rb
|
325
|
+
- spec/utils/query_builder_spec.rb
|
326
|
+
- spec/support/fake_api.rb
|
327
|
+
- spec/rest/order_reports_spec.rb
|
334
328
|
- spec/rest/client_spec.rb
|
335
329
|
- spec/rest/user_institutions_spec.rb
|
336
|
-
- spec/rest/
|
337
|
-
- spec/rest/password_resets_spec.rb
|
338
|
-
- spec/rest/order_reports_spec.rb
|
339
|
-
- spec/rest/institutions_spec.rb
|
330
|
+
- spec/rest/consumers_spec.rb
|
340
331
|
- spec/rest/order_statuses_spec.rb
|
341
|
-
- spec/rest/order_refreshes_spec.rb
|
342
332
|
- spec/rest/order_notifications_spec.rb
|
333
|
+
- spec/rest/operators_password_resets_spec.rb
|
334
|
+
- spec/rest/institutions_forms_spec.rb
|
335
|
+
- spec/rest/operators_spec.rb
|
336
|
+
- spec/rest/version_spec.rb
|
337
|
+
- spec/rest/statements_spec.rb
|
343
338
|
- spec/rest/order_assignments_spec.rb
|
339
|
+
- spec/rest/order_refreshes_spec.rb
|
340
|
+
- spec/rest/user_institutions_statuses_spec.rb
|
341
|
+
- spec/rest/order_tokens_spec.rb
|
342
|
+
- spec/rest/products_spec.rb
|
344
343
|
- spec/rest/sessions_spec.rb
|
345
|
-
- spec/
|
346
|
-
- spec/
|
347
|
-
- spec/
|
348
|
-
- spec/
|
344
|
+
- spec/rest/password_resets_spec.rb
|
345
|
+
- spec/rest/consumer_institution_refreshes_spec.rb
|
346
|
+
- spec/rest/user_institutions_forms_spec.rb
|
347
|
+
- spec/rest/institutions_spec.rb
|
348
|
+
- spec/rest/orders_spec.rb
|