bankserv 0.2.4 → 0.2.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.
- data/lib/bankserv/engine.rb +8 -4
- data/lib/bankserv/service.rb +17 -1
- data/lib/bankserv/transmission/input_document.rb +15 -2
- data/lib/bankserv/version.rb +1 -1
- data/lib/generators/active_record/templates/migration.rb +2 -14
- data/spec/internal/db/schema.rb +1 -0
- data/spec/lib/bankserv/engine/engine_spec.rb +26 -24
- metadata +13 -13
data/lib/bankserv/engine.rb
CHANGED
@@ -67,9 +67,9 @@ module Bankserv
|
|
67
67
|
end
|
68
68
|
|
69
69
|
def process_input_files
|
70
|
-
|
70
|
+
input_services.each do |bankserv_service|
|
71
71
|
begin
|
72
|
-
next if self.expecting_reply_file?
|
72
|
+
next if self.expecting_reply_file?(bankserv_service)
|
73
73
|
|
74
74
|
if document = Bankserv::InputDocument.generate!(bankserv_service)
|
75
75
|
@logs[:input_files] << "Input Document created with id: #{document.id}" if document
|
@@ -85,6 +85,10 @@ module Bankserv
|
|
85
85
|
end
|
86
86
|
end
|
87
87
|
|
88
|
+
def input_services
|
89
|
+
Bankserv::Service.active.select(&:can_transmit?)
|
90
|
+
end
|
91
|
+
|
88
92
|
def write_file!(document)
|
89
93
|
begin
|
90
94
|
transmission = Absa::H2h::Transmission::Document.build([document.to_hash])
|
@@ -113,8 +117,8 @@ module Bankserv
|
|
113
117
|
FileUtils.mv(file, "#{Bankserv::Engine.archive_directory}/#{year}/#{month}/")
|
114
118
|
end
|
115
119
|
|
116
|
-
def expecting_reply_file?
|
117
|
-
Bankserv::Document.where(type: 'input', reply_status: nil, processed: true).count > 0
|
120
|
+
def expecting_reply_file?(bankserv_service)
|
121
|
+
Bankserv::Document.where(type: 'input', reply_status: nil, processed: true, client_code: bankserv_service.client_code).count > 0
|
118
122
|
end
|
119
123
|
|
120
124
|
def finish!
|
data/lib/bankserv/service.rb
CHANGED
@@ -50,6 +50,10 @@ module Bankserv
|
|
50
50
|
def is_test_env?
|
51
51
|
config[:transmission_status] == "T"
|
52
52
|
end
|
53
|
+
|
54
|
+
def can_transmit?
|
55
|
+
false
|
56
|
+
end
|
53
57
|
|
54
58
|
end
|
55
59
|
|
@@ -59,6 +63,10 @@ module Bankserv
|
|
59
63
|
params.merge!(test: true) if is_test_env?
|
60
64
|
Request.create!(params)
|
61
65
|
end
|
66
|
+
|
67
|
+
def can_transmit?
|
68
|
+
true
|
69
|
+
end
|
62
70
|
end
|
63
71
|
|
64
72
|
class CreditService < Service
|
@@ -66,7 +74,11 @@ module Bankserv
|
|
66
74
|
params.merge!(type: 'credit', service_id: id)
|
67
75
|
params.merge!(test: true) if is_test_env?
|
68
76
|
Request.create!(params)
|
69
|
-
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def can_transmit?
|
80
|
+
true
|
81
|
+
end
|
70
82
|
end
|
71
83
|
|
72
84
|
class AHVService < Service
|
@@ -74,6 +86,10 @@ module Bankserv
|
|
74
86
|
params.merge!(type: 'ahv', service_id: id)
|
75
87
|
params.merge!(test: true) if is_test_env?
|
76
88
|
Request.create!(params)
|
89
|
+
end
|
90
|
+
|
91
|
+
def can_transmit?
|
92
|
+
true
|
77
93
|
end
|
78
94
|
end
|
79
95
|
|
@@ -9,7 +9,13 @@ class Bankserv::InputDocument < Bankserv::Document
|
|
9
9
|
|
10
10
|
raise "Expected a document set" unless options[:type] == "document"
|
11
11
|
|
12
|
-
document = new(
|
12
|
+
document = new(
|
13
|
+
type: 'input',
|
14
|
+
transmission_number: options[:data][0][:data][:transmission_no],
|
15
|
+
transmission_status: options[:data][0][:data][:rec_status],
|
16
|
+
client_code: options[:data][0][:data][:client_code]
|
17
|
+
)
|
18
|
+
|
13
19
|
document.set = Bankserv::Set.from_hash(options)
|
14
20
|
document.set.document = document # whaaaaaa?
|
15
21
|
document.save!
|
@@ -49,7 +55,14 @@ class Bankserv::InputDocument < Bankserv::Document
|
|
49
55
|
raise "Transmission status not specified" if transmission_status.nil?
|
50
56
|
options[:transmission_no] ||= bankserv_service.config[:transmission_number]
|
51
57
|
|
52
|
-
document = new(
|
58
|
+
document = new(
|
59
|
+
transmission_status: transmission_status,
|
60
|
+
rec_status: options[:rec_status],
|
61
|
+
type: 'input',
|
62
|
+
transmission_number: options[:transmission_no],
|
63
|
+
client_code: bankserv_service.client_code
|
64
|
+
)
|
65
|
+
|
53
66
|
document.set = Bankserv::Transmission::UserSet::Document.generate(options.merge(rec_status: document.rec_status))
|
54
67
|
document.set.document = document # whaaaaaa?
|
55
68
|
|
data/lib/bankserv/version.rb
CHANGED
@@ -22,23 +22,10 @@ class CreateBankservTables < ActiveRecord::Migration
|
|
22
22
|
t.string :client_code
|
23
23
|
t.text :config
|
24
24
|
t.timestamps
|
25
|
-
#
|
26
|
-
# t.boolean :active, :default => false
|
27
|
-
# t.string :client_code
|
28
|
-
# t.string :client_name
|
29
|
-
# t.string :client_abbreviated_name
|
30
|
-
# t.string :user_code
|
31
|
-
# t.string :department_code
|
32
|
-
# t.integer :transmission_number
|
33
|
-
# t.integer :user_generation_number
|
34
|
-
# t.string :internal_branch_code
|
35
|
-
# t.boolean :live_env, :default => false
|
36
|
-
# t.timestamps
|
37
|
-
# t.integer :eft_sequence_number
|
38
|
-
# t.datetime :eft_sequence_number_updated_at #refactor later
|
39
25
|
end
|
40
26
|
|
41
27
|
create_table :bankserv_requests do |t|
|
28
|
+
t.integer :service_id
|
42
29
|
t.string :type
|
43
30
|
t.text :data
|
44
31
|
t.boolean :processed, :default => false
|
@@ -98,6 +85,7 @@ class CreateBankservTables < ActiveRecord::Migration
|
|
98
85
|
end
|
99
86
|
|
100
87
|
create_table :bankserv_documents do |t|
|
88
|
+
t.string :client_code
|
101
89
|
t.string :type
|
102
90
|
t.references :set
|
103
91
|
t.boolean :processed, :default => false
|
data/spec/internal/db/schema.rb
CHANGED
@@ -40,10 +40,23 @@ describe Bankserv::Engine do
|
|
40
40
|
|
41
41
|
end
|
42
42
|
|
43
|
+
it "should retrieve services which can transmit input documents" do
|
44
|
+
debit_service = Bankserv::DebitService.register(client_code: '10', client_name: "RCTEST", client_abbreviated_name: 'RCTEST', user_code: "9534", transmission_status: "L", transmission_number: "1")
|
45
|
+
credit_service = Bankserv::CreditService.register(client_code: '12345', client_name: "RCTEST", client_abbreviated_name: 'RCTEST', user_code: "9534", transmission_status: "L", transmission_number: "1")
|
46
|
+
ahv_service = Bankserv::AHVService.register(client_code: '12345', internal_branch_code: '632005', department_code: "506", client_name: "TESTTEST", client_abbreviated_name: 'TESTTEST', generation_number: 1, transmission_status: "L", transmission_number: "1")
|
47
|
+
statement_service = Bankserv::StatementService.register(client_code: '12346', client_name: "TESTTEST", client_abbreviated_name: 'TESTTEST', user_code: "9999", generation_number: 1, transmission_status: "L", transmission_number: "1")
|
48
|
+
|
49
|
+
input_services = Bankserv::Engine.new.input_services
|
50
|
+
input_services.include?(debit_service).should be_true
|
51
|
+
input_services.include?(credit_service).should be_true
|
52
|
+
input_services.include?(ahv_service).should be_true
|
53
|
+
input_services.include?(statement_service).should be_false
|
54
|
+
end
|
55
|
+
|
43
56
|
context "Testing individual methods of engine" do
|
44
57
|
|
45
58
|
before(:all) do
|
46
|
-
Bankserv::DebitService.register(client_code: '
|
59
|
+
@debit_service = Bankserv::DebitService.register(client_code: '10', client_name: "RCTEST", client_abbreviated_name: 'RCTEST', user_code: "9534", transmission_status: "L", transmission_number: "1")
|
47
60
|
t = Time.local(2012, 1, 23, 10, 5, 0)
|
48
61
|
Timecop.travel(t)
|
49
62
|
file_contents = File.open("./spec/examples/eft_input_with_2_sets.txt", "rb").read
|
@@ -67,7 +80,7 @@ describe Bankserv::Engine do
|
|
67
80
|
end
|
68
81
|
|
69
82
|
it "should be expecting a reply file" do
|
70
|
-
@engine.expecting_reply_file
|
83
|
+
@engine.expecting_reply_file?(@debit_service).should be_true
|
71
84
|
end
|
72
85
|
|
73
86
|
it "should be able to return a list of reply files" do
|
@@ -81,7 +94,7 @@ describe Bankserv::Engine do
|
|
81
94
|
it "should be able to process reply files" do
|
82
95
|
@engine.process_reply_files
|
83
96
|
Bankserv::Document.first.reply_status.should == "ACCEPTED"
|
84
|
-
@engine.expecting_reply_file
|
97
|
+
@engine.expecting_reply_file?(@debit_service).should be_false
|
85
98
|
end
|
86
99
|
|
87
100
|
it "should be able to process output files" do
|
@@ -123,7 +136,7 @@ describe Bankserv::Engine do
|
|
123
136
|
@engine.process_input_files
|
124
137
|
@document = Bankserv::Document.last
|
125
138
|
@document.processed.should be_true
|
126
|
-
@engine.expecting_reply_file
|
139
|
+
@engine.expecting_reply_file?(@service).should be_true
|
127
140
|
end
|
128
141
|
|
129
142
|
it "should write a file to the input directory" do
|
@@ -142,44 +155,33 @@ describe Bankserv::Engine do
|
|
142
155
|
@debit_service = Bankserv::DebitService.register(client_code: '12346', client_name: "TESTTEST", client_abbreviated_name: 'TESTTEST', user_code: "9999", generation_number: 1, transmission_status: "L", transmission_number: "1")
|
143
156
|
@credit_service = Bankserv::CreditService.register(client_code: '12347', client_name: "TESTTEST", client_abbreviated_name: 'TESTTEST', user_code: "9999", generation_number: 1, transmission_status: "L", transmission_number: "1")
|
144
157
|
Bankserv::EngineConfiguration.create!(interval_in_minutes: 15, input_directory: @tmpdir, output_directory: @tmpdir, archive_directory: @tmpdir)
|
145
|
-
|
146
|
-
|
147
|
-
it "should process ahv requests" do
|
158
|
+
|
159
|
+
# test that engine can process different service types at once (generate 3 files with one run)
|
148
160
|
Bankserv::AccountHolderVerification.should_receive(:generate_reference_number).exactly(8).times.and_return("AHV67","AHV68","AHV69","AHV70","AHV71","AHV72","AHV73","AHV74")
|
149
161
|
create_ahv_requests_scenario(@ahv_service)
|
162
|
+
create_debit_requests_scenario(@debit_service)
|
163
|
+
create_credit_requests_scenario(@credit_service)
|
164
|
+
|
150
165
|
e = Bankserv::Engine.new
|
151
|
-
e.should_receive(:generate_input_file_name).and_return("harry.txt")
|
166
|
+
e.should_receive(:generate_input_file_name).and_return("harry.txt", "sally.txt", "molly.txt")
|
152
167
|
e.process!
|
153
|
-
|
168
|
+
end
|
169
|
+
|
170
|
+
it "should process ahv requests" do
|
154
171
|
expected_string = File.open("./spec/examples/INPUT.120410144410.txt", "rb").read
|
155
172
|
got_string = File.open(@tmpdir + '/harry.txt', "rb").read
|
156
|
-
|
157
173
|
got_string.should == expected_string
|
158
174
|
end
|
159
175
|
|
160
176
|
it "should process debit requests" do
|
161
|
-
create_debit_requests_scenario(@debit_service)
|
162
|
-
|
163
|
-
e = Bankserv::Engine.new
|
164
|
-
e.should_receive(:generate_input_file_name).and_return("sally.txt")
|
165
|
-
e.process!
|
166
|
-
|
167
177
|
expected_string = File.open("./spec/examples/INPUT.120411110604.txt", "rb").read
|
168
178
|
got_string = File.open(@tmpdir + '/sally.txt', "rb").read
|
169
|
-
|
170
179
|
got_string.should == expected_string
|
171
180
|
end
|
172
181
|
|
173
182
|
it "should process credit requests" do
|
174
|
-
create_credit_requests_scenario(@credit_service)
|
175
|
-
|
176
|
-
e = Bankserv::Engine.new
|
177
|
-
e.should_receive(:generate_input_file_name).and_return("molly.txt")
|
178
|
-
e.process!
|
179
|
-
|
180
183
|
expected_string = File.open("./spec/examples/INPUT.120411124123.txt", "rb").read
|
181
184
|
got_string = File.open(@tmpdir + '/molly.txt', "rb").read
|
182
|
-
|
183
185
|
got_string.should == expected_string
|
184
186
|
end
|
185
187
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bankserv
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -14,7 +14,7 @@ date: 2012-04-16 00:00:00.000000000Z
|
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
17
|
-
requirement: &
|
17
|
+
requirement: &70306756830520 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: '0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *70306756830520
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: activerecord
|
28
|
-
requirement: &
|
28
|
+
requirement: &70306756829960 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ~>
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: '3.0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *70306756829960
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: i18n
|
39
|
-
requirement: &
|
39
|
+
requirement: &70306756829340 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ! '>='
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: '0'
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *70306756829340
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: absa-h2h
|
50
|
-
requirement: &
|
50
|
+
requirement: &70306756828780 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ~>
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
version: 0.1.1
|
56
56
|
type: :runtime
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *70306756828780
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: absa-esd
|
61
|
-
requirement: &
|
61
|
+
requirement: &70306756828140 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ~>
|
@@ -66,10 +66,10 @@ dependencies:
|
|
66
66
|
version: 0.0.2
|
67
67
|
type: :runtime
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *70306756828140
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: combustion
|
72
|
-
requirement: &
|
72
|
+
requirement: &70306756827560 !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
75
|
- - ~>
|
@@ -77,7 +77,7 @@ dependencies:
|
|
77
77
|
version: 0.3.1
|
78
78
|
type: :development
|
79
79
|
prerelease: false
|
80
|
-
version_requirements: *
|
80
|
+
version_requirements: *70306756827560
|
81
81
|
description: ! "This engine allows users to inject requests into a queue to be processed.
|
82
82
|
\n \n The queue handles bank account validations, credit payments,
|
83
83
|
debit orders\n and collecting bank statements. "
|