bankserv 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -91,7 +91,7 @@ module Bankserv
91
91
  transmission = Absa::H2h::Transmission::Document.build([document.to_hash])
92
92
  file_name = generate_input_file_name
93
93
  File.open("#{Bankserv::Engine.input_directory}/#{file_name}", 'w') { |f|
94
- f.puts transmission
94
+ f.write transmission
95
95
  }
96
96
  @logs[:input_files] << "Input Document File created. File name: #{file_name}"
97
97
  rescue Exception => e
@@ -139,27 +139,15 @@ module Bankserv
139
139
  end
140
140
 
141
141
  def first_action_date
142
- fad = Date.today
143
- transactions.map(&:data).each do |hash|
144
- first = Date.strptime(hash[:action_date], "%y%m%d")
145
- fad = first if first < fad
146
- end
147
- fad.strftime("%y%m%d")
142
+ transactions.min_by{|t| t.data[:action_date]}.data[:action_date]
148
143
  end
149
144
 
150
- def last_action_date
151
- lad = Date.today
152
- transactions.map(&:data).each do |hash|
153
- last = Date.strptime(hash[:action_date], "%y%m%d")
154
- lad = last if last < lad
155
- end
156
- lad = lad + 3.days
157
- lad.strftime("%y%m%d")
145
+ def last_action_date
146
+ transactions.max_by{|t| t.data[:action_date]}.data[:action_date]
158
147
  end
159
148
 
160
149
  def purge_date
161
- date = Date.strptime("#{self.last_action_date}", "%y%m%d") + 4.days
162
- date.strftime("%y%m%d")
150
+ last_action_date
163
151
  end
164
152
 
165
153
  def hash_total_of_homing_account_numbers
@@ -1,3 +1,3 @@
1
1
  module Bankserv
2
- VERSION = "0.2.2"
2
+ VERSION = "0.2.3"
3
3
  end
@@ -0,0 +1,8 @@
1
+ 000L2012041012345TESTTEST 000000100000
2
+ 001L0499991204101204111204111204110000010001TWO DAY
3
+ 001L5025025504530495834999900000125065562097363670100000301400120411440 TESTTEST 544 DOUGLAS ANDERSON 00000000000000000000 21
4
+ 001L5025025504530495834999900000263200509076546281200000315000120411440 TESTTEST 545 JEFFREY VAN ASWEGEN 00000000000000000000 21
5
+ 001L5025025504530495834999900000302000900070440213100000279300120411440 TESTTEST 546 PETER DE VILLIERS 00000000000000000000 21
6
+ 001L5225025504530495834999900000425025504530495834100000895700120411100000TESTTEST CONTRA19
7
+ 001L929999000001000004120411120411000003000001000001000000895700000000895700075774845998
8
+ 999L000000008
@@ -1,5 +1,5 @@
1
1
  000L2008080800986TESTTEST 000084600000
2
- 020L0499990808080808150808080808110000780846BATCH YY
2
+ 020L0499990808080808080808080808080000780846BATCH YY
3
3
  020L1063200504068123456999900007805002100081136250100001500000080808880 TESTTEST _2055185_PAY USER DEWEY ASSOCIATES 00000000000000000000 21
4
4
  020L1063200504068123456999900007963200504051717311100000542380080808880 TESTTEST _2055184_PAY USER SURE SLIM WELLNESS CLINIC SA 00000000000000000000 21
5
5
  020L1063200504068123456999900008063200509193079313100000224500080808880 TESTTEST _2055183_PAY USER RUGGA KIDS EAST RAND 00000000000000000000 21
@@ -162,5 +162,5 @@
162
162
  020L1063200504068123456999900023725204562032469836100000314250080808880 TESTTEST _2055026_PAY USER COMPACT ACCOUNTING 00000000000000000000 21
163
163
  020L1063200504068123456999900023816514501651343144100000086503080808880 TESTTEST _2055025_PAY USER BOSHOFF SMUTS ING 00000000000000000000 21
164
164
  020L1263200504068123456999900023963200504068123456100127221665080808100000TESTTEST CONTRA_0000846_PMT
165
- 020L929999000078000239080808080811000001000161000001000127221665000127221665028905810181
165
+ 020L929999000078000239080808080808000001000161000001000127221665000127221665028905810181
166
166
  999L000000166
@@ -1,5 +1,5 @@
1
1
  000T2004052400010LDC USER 10 AFRICA (PTY) 000062100000
2
- 001T0495340405240405310405240405270000010037CORPSSV
2
+ 001T0495340405240405250405240405250000010037CORPSSV
3
3
  001T5063200504053538939953400000163200501019611899100000001000040524440000ALIMITTST SPP 1040524 01 HENNIE DU TOIT 00000000000000000000 21
4
4
  001T5063200504053538939953400000263200501019801892100000002000040524440000ALIMITTST SPP 1040524 02 TYRONE DREYDEN 00000000000000000000 21
5
5
  001T5063200504053538939953400000363200501021131896100000003000040524440000ALIMITTST SPP 1040524 03 KEITH MEIKLEJOHN 00000000000000000000 21
@@ -16,5 +16,5 @@
16
16
  001T5063200501004651894953400001463200501019591898100000060000040525440000ALIMITTST SPP 2040525 06 PETER HAUPT 00000000000000000000 21
17
17
  001T5063200501004651894953400001563200501020861726100000070000040525440000ALIMITTST SPP 2040525 07 HADLEY RAW 00000000000000000000 21
18
18
  001T5263200501004651894953400001663200501004651894100004280000040525100000ALIMITTST CONTRA2040525 08
19
- 001T929534000001000016040524040527000014000002000002000020308000000020308000036311034141
19
+ 001T929534000001000016040524040525000014000002000002000020308000000020308000036311034141
20
20
  999T000000020
@@ -17,6 +17,7 @@ describe Bankserv::Engine do
17
17
 
18
18
  FileUtils.rm_rf(Dir.pwd + "/spec/examples/host2host/archives", secure: true)
19
19
  File.delete(Dir.pwd + "/spec/tmp/harry.txt")
20
+ File.delete(Dir.pwd + "/spec/tmp/sally.txt")
20
21
  end
21
22
 
22
23
  context "Prepare engine" do
@@ -134,7 +135,7 @@ describe Bankserv::Engine do
134
135
 
135
136
  end
136
137
 
137
- context "processing ahv requests" do
138
+ context "integration testing" do
138
139
 
139
140
  before(:each) do
140
141
  Timecop.travel(Time.local(2012, 4, 10, 10, 5, 0))
@@ -143,20 +144,38 @@ describe Bankserv::Engine do
143
144
  create(:configuration, client_code: "12345", client_name: "TESTTEST", user_code: "9999", user_generation_number: 1, client_abbreviated_name: "TESTTEST", department_code: "506")
144
145
  Bankserv::EngineConfiguration.create!(interval_in_minutes: 15, input_directory: @tmpdir, output_directory: @tmpdir, archive_directory: @tmpdir)
145
146
  end
146
-
147
- it "should create a valid input document" do
147
+
148
+ it "should process ahv requests" do
148
149
  Bankserv::AccountHolderVerification.should_receive(:generate_reference_number).exactly(8).times.and_return("AHV67","AHV68","AHV69","AHV70","AHV71","AHV72","AHV73","AHV74")
149
150
  create_ahv_requests_scenario
150
151
  e = Bankserv::Engine.new
151
152
  e.should_receive(:generate_input_file_name).and_return("harry.txt")
152
153
  e.process!
153
-
154
+
154
155
  expected_string = File.open("./spec/examples/INPUT.120410144410.txt", "rb").read
155
156
  got_string = File.open(@tmpdir + '/harry.txt', "rb").read
156
-
157
+
157
158
  got_string.should == expected_string
158
159
  end
160
+
161
+ it "should process debit requests" do
162
+ create_debit_requests_scenario
163
+
164
+ e = Bankserv::Engine.new
165
+ e.should_receive(:generate_input_file_name).and_return("sally.txt")
166
+ e.process!
167
+ puts e.inspect
159
168
 
169
+ expected_string = File.open("./spec/examples/INPUT.120411110604.txt", "rb").read
170
+ got_string = File.open(@tmpdir + '/sally.txt', "rb").read
171
+
172
+ got_string.should == expected_string
173
+ end
174
+
175
+ it "should process credit requests" do
176
+ pending
177
+ end
178
+
160
179
  end
161
180
 
162
181
  end
@@ -43,17 +43,15 @@ describe Bankserv::Transmission::UserSet::Credit do
43
43
  end
44
44
 
45
45
  it "should create a batch with a header when the job begins" do
46
- purge = (Date.today + 7.days).strftime("%y%m%d")
47
-
48
46
  @batch.header.data.should == {
49
47
  rec_id: "020",
50
48
  rec_status: "T",
51
49
  bankserv_record_identifier: "04",
52
50
  bankserv_user_code: "9534",
53
51
  bankserv_creation_date: Time.now.strftime("%y%m%d"),
54
- bankserv_purge_date: purge,
52
+ bankserv_purge_date: Time.now.strftime("%y%m%d"),
55
53
  first_action_date: Time.now.strftime("%y%m%d"),
56
- last_action_date: (Date.today + 3.days).strftime("%y%m%d"),
54
+ last_action_date: Time.now.strftime("%y%m%d"),
57
55
  first_sequence_number: "1",
58
56
  user_generation_number: "37",
59
57
  type_of_service: "SAMEDAY",
@@ -75,7 +73,7 @@ describe Bankserv::Transmission::UserSet::Credit do
75
73
  first_sequence_number: "1",
76
74
  last_sequence_number: "8",
77
75
  first_action_date: Time.now.strftime("%y%m%d"),
78
- last_action_date: (Date.today + 3.days).strftime("%y%m%d"),
76
+ last_action_date: Time.now.strftime("%y%m%d"),
79
77
  no_debit_records: "2",
80
78
  no_credit_records: "6",
81
79
  no_contra_records: "2",
@@ -44,17 +44,15 @@ describe Bankserv::Transmission::UserSet::Debit do
44
44
  batch = Bankserv::Transmission::UserSet::Debit.generate(rec_status: "T")
45
45
  batch.save
46
46
 
47
- purge = (Date.today + 7.days).strftime("%y%m%d")
48
-
49
47
  batch.header.data.should == {
50
48
  rec_id: "001",
51
49
  rec_status: "T",
52
50
  bankserv_record_identifier: "04",
53
51
  bankserv_user_code: "9534",
54
52
  bankserv_creation_date: Time.now.strftime("%y%m%d"),
55
- bankserv_purge_date: purge,
53
+ bankserv_purge_date: Time.now.strftime("%y%m%d"),
56
54
  first_action_date: Time.now.strftime("%y%m%d"),
57
- last_action_date: (Date.today + 3.days).strftime("%y%m%d"),
55
+ last_action_date: Time.now.strftime("%y%m%d"),
58
56
  first_sequence_number: "1",
59
57
  user_generation_number: "37",
60
58
  type_of_service: "SAMEDAY",
@@ -89,7 +87,7 @@ describe Bankserv::Transmission::UserSet::Debit do
89
87
  first_sequence_number: "1",
90
88
  last_sequence_number: "8",
91
89
  first_action_date: Time.now.strftime("%y%m%d"),
92
- last_action_date: (Date.today + 3.days).strftime("%y%m%d"),
90
+ last_action_date: Time.now.strftime("%y%m%d"),
93
91
  no_debit_records: "6",
94
92
  no_credit_records: "2",
95
93
  no_contra_records: "2",
@@ -202,5 +202,24 @@ module Helpers
202
202
  info = {:data=>{:user_ref=>625, :bank_account=>{:account_number=>"070440213", :id_number=>"1116501771108", :initials=>"PDV", :account_name=>"Peter De Villiers", :branch_code=>"20009", :account_type=>"current"}}}
203
203
  Bankserv::AccountHolderVerification.request(info)
204
204
  end
205
+
206
+ def create_debit_requests_scenario
207
+ info = {
208
+ :type=>"debit",
209
+ :data=>{
210
+ :type_of_service=>"TWO DAY",
211
+ :batches=>[{
212
+ :debit=>[
213
+ {:account_number=>"62097363670", :id_number=>"6967756569139", :initials=>"DA", :account_name=>"Douglas Anderson", :branch_code=>"250655", :account_type=>"current", :amount=>301400, :user_ref=>544, :action_date=>Date.parse('Wed, 11 Apr 2012')},
214
+ {:account_number=>"9076546281", :id_number=>"2711783115132", :initials=>"JvA", :account_name=>"Jeffrey van Aswegen", :branch_code=>"632005", :account_type=>"savings", :amount=>315000, :user_ref=>545, :action_date=>Date.parse('Wed, 11 Apr 2012')},
215
+ {:account_number=>"070440213", :id_number=>"6175553360681", :initials=>"PDV", :account_name=>"Peter De Villiers", :branch_code=>"20009", :account_type=>"current", :amount=>279300, :user_ref=>546, :action_date=>Date.parse('Wed, 11 Apr 2012')}
216
+ ],
217
+ :credit=>{:account_number=>"4530495834", :id_number=>"8008456465340", :initials=>"RC", :account_name=>"RC Transactional", :branch_code=>"250255", :account_type=>"savings", :amount=>895700, :user_ref=>19, :action_date=>Date.parse('Wed, 11 Apr 2012')}
218
+ }]
219
+ }
220
+ }
221
+
222
+ Bankserv::Debit.request(info)
223
+ end
205
224
  end
206
225
 
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.2
4
+ version: 0.2.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-04-10 00:00:00.000000000Z
13
+ date: 2012-04-11 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
17
- requirement: &70116524139980 !ruby/object:Gem::Requirement
17
+ requirement: &70140537134240 !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: *70116524139980
25
+ version_requirements: *70140537134240
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: activerecord
28
- requirement: &70116524139400 !ruby/object:Gem::Requirement
28
+ requirement: &70140537133740 !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: *70116524139400
36
+ version_requirements: *70140537133740
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: i18n
39
- requirement: &70116524138840 !ruby/object:Gem::Requirement
39
+ requirement: &70140537133320 !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: *70116524138840
47
+ version_requirements: *70140537133320
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: absa-h2h
50
- requirement: &70116524138220 !ruby/object:Gem::Requirement
50
+ requirement: &70140537132780 !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: *70116524138220
58
+ version_requirements: *70140537132780
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: absa-esd
61
- requirement: &70116524137520 !ruby/object:Gem::Requirement
61
+ requirement: &70140537132280 !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: *70116524137520
69
+ version_requirements: *70140537132280
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: combustion
72
- requirement: &70116524136940 !ruby/object:Gem::Requirement
72
+ requirement: &70140537131820 !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: *70116524136940
80
+ version_requirements: *70140537131820
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. "
@@ -129,6 +129,7 @@ files:
129
129
  - lib/generators/active_record/bankserv_generator.rb
130
130
  - lib/generators/active_record/templates/migration.rb
131
131
  - spec/examples/INPUT.120410144410.txt
132
+ - spec/examples/INPUT.120411110604.txt
132
133
  - spec/examples/ahv_input_file.txt
133
134
  - spec/examples/ahv_output_file.txt
134
135
  - spec/examples/credit_eft_input.txt
@@ -190,6 +191,7 @@ specification_version: 3
190
191
  summary: A rails 3 engine wrapped around the Absa Host 2 Host gem.
191
192
  test_files:
192
193
  - spec/examples/INPUT.120410144410.txt
194
+ - spec/examples/INPUT.120411110604.txt
193
195
  - spec/examples/ahv_input_file.txt
194
196
  - spec/examples/ahv_output_file.txt
195
197
  - spec/examples/credit_eft_input.txt