aba 0.0.1 → 0.5.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 +5 -5
- data/.gitignore +1 -0
- data/.rspec +3 -1
- data/.travis.yml +6 -0
- data/README.md +109 -18
- data/aba.gemspec +7 -6
- data/lib/aba.rb +6 -114
- data/lib/aba/batch.rb +224 -0
- data/lib/aba/entry.rb +17 -0
- data/lib/aba/return.rb +72 -0
- data/lib/aba/transaction.rb +99 -35
- data/lib/aba/validations.rb +84 -14
- data/lib/aba/version.rb +1 -1
- data/spec/lib/aba/batch_spec.rb +101 -0
- data/spec/lib/aba/return_spec.rb +47 -0
- data/spec/{transaction_spec.rb → lib/aba/transaction_spec.rb} +6 -5
- data/spec/lib/aba/validations_spec.rb +215 -0
- data/spec/lib/aba_spec.rb +21 -0
- data/spec/spec_helper.rb +2 -0
- metadata +40 -17
- data/spec/aba_spec.rb +0 -40
- data/spec/validations_spec.rb +0 -47
@@ -0,0 +1,47 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require "spec_helper"
|
4
|
+
|
5
|
+
describe Aba::Return do
|
6
|
+
let(:transaction_params) { {
|
7
|
+
:trace_account_number => 23432342,
|
8
|
+
:transaction_code => 53,
|
9
|
+
:amount => 50050,
|
10
|
+
:account_name => "John Doe",
|
11
|
+
:trace_bsb => "345-453",
|
12
|
+
:return_code => 8,
|
13
|
+
:lodgement_reference => "R45343",
|
14
|
+
:bsb => "123-234",
|
15
|
+
:account_number => "4647642",
|
16
|
+
:name_of_remitter => "Remitter",
|
17
|
+
:original_processing_day => "07",
|
18
|
+
:original_user_id => "054321",
|
19
|
+
} }
|
20
|
+
subject(:transaction) { Aba::Return.new(transaction_params) }
|
21
|
+
|
22
|
+
describe "#to_s" do
|
23
|
+
it "should create a transaction row" do
|
24
|
+
expect(subject.to_s).to include(
|
25
|
+
"2123-234 46476428530000050050John Doe R45343 345-453 23432342Remitter 07054321")
|
26
|
+
# | | || | | | | | | | |
|
27
|
+
# +-bsb | || +-amount +-account_name | | | | | +-original_user_id
|
28
|
+
# | |+-transaction_code | | | | +-original_processing_day
|
29
|
+
# | +-return_code | | | +-name_of_remitter
|
30
|
+
# +-account_number | | +-trace_account_number
|
31
|
+
# | +-trace_bsb
|
32
|
+
# +-lodgement_reference
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "#valid?" do
|
37
|
+
it "should be valid" do
|
38
|
+
expect(subject.valid?).to eq true
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should not be valid" do
|
42
|
+
transaction_params.delete(:bsb)
|
43
|
+
expect(subject.valid?).to eq false
|
44
|
+
expect(subject.errors).to eq ["bsb format is incorrect"]
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
1
3
|
require "spec_helper"
|
2
4
|
|
3
5
|
describe Aba::Transaction do
|
@@ -6,13 +8,12 @@ describe Aba::Transaction do
|
|
6
8
|
:transaction_code => 53,
|
7
9
|
:amount => 50050,
|
8
10
|
:account_name => "John Doe",
|
9
|
-
:payment_id => "P30234",
|
10
11
|
:bsb => "345-453",
|
11
12
|
:witholding_amount => 87,
|
12
13
|
:indicator => "W",
|
13
14
|
:lodgement_reference => "R45343",
|
14
|
-
:trace_bsb => "123-234",
|
15
|
-
:trace_account_number => "4647642",
|
15
|
+
:trace_bsb => "123-234",
|
16
|
+
:trace_account_number => "4647642",
|
16
17
|
:name_of_remitter => "Remitter"
|
17
18
|
} }
|
18
19
|
subject(:transaction) { Aba::Transaction.new(transaction_params) }
|
@@ -31,7 +32,7 @@ describe Aba::Transaction do
|
|
31
32
|
it "should not be valid" do
|
32
33
|
transaction_params.delete(:bsb)
|
33
34
|
expect(subject.valid?).to eq false
|
34
|
-
expect(subject.errors).to eq ["bsb
|
35
|
+
expect(subject.errors).to eq ["bsb format is incorrect"]
|
35
36
|
end
|
36
37
|
end
|
37
|
-
end
|
38
|
+
end
|
@@ -0,0 +1,215 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require "spec_helper"
|
4
|
+
|
5
|
+
describe Aba::Validations do
|
6
|
+
let(:clean_room) do
|
7
|
+
Class.new(Object) do
|
8
|
+
include Aba::Validations
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
subject(:test_instance) { clean_room.new }
|
13
|
+
|
14
|
+
describe "#valid?" do
|
15
|
+
it "should validate presence of attrs" do
|
16
|
+
clean_room.instance_eval do
|
17
|
+
attr_accessor :attr1
|
18
|
+
validates_presence_of :attr1
|
19
|
+
end
|
20
|
+
|
21
|
+
expect(subject.valid?).to eq false
|
22
|
+
expect(subject.errors).to eq ["attr1 is empty"]
|
23
|
+
|
24
|
+
subject.attr1 = "hello!"
|
25
|
+
expect(subject.valid?).to eq true
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should validate bsb format" do
|
29
|
+
clean_room.instance_eval do
|
30
|
+
attr_accessor :attr1
|
31
|
+
validates_bsb :attr1
|
32
|
+
end
|
33
|
+
|
34
|
+
subject.attr1 = "234456"
|
35
|
+
expect(subject.valid?).to eq false
|
36
|
+
expect(subject.errors).to eq ["attr1 format is incorrect"]
|
37
|
+
|
38
|
+
subject.attr1 = "234-456"
|
39
|
+
expect(subject.valid?).to eq true
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should validate max length" do
|
43
|
+
clean_room.instance_eval do
|
44
|
+
attr_accessor :attr1
|
45
|
+
validates_max_length :attr1, 5
|
46
|
+
end
|
47
|
+
|
48
|
+
subject.attr1 = "234456642"
|
49
|
+
expect(subject.valid?).to eq false
|
50
|
+
expect(subject.errors).to eq ["attr1 length must not exceed 5 characters"]
|
51
|
+
|
52
|
+
subject.attr1 = "23445"
|
53
|
+
expect(subject.valid?).to eq true
|
54
|
+
|
55
|
+
subject.attr1 = "2344"
|
56
|
+
expect(subject.valid?).to eq true
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should validate length" do
|
60
|
+
clean_room.instance_eval do
|
61
|
+
attr_accessor :attr1
|
62
|
+
validates_length :attr1, 5
|
63
|
+
end
|
64
|
+
|
65
|
+
subject.attr1 = "234456642"
|
66
|
+
expect(subject.valid?).to eq false
|
67
|
+
expect(subject.errors).to eq ["attr1 length must be exactly 5 characters"]
|
68
|
+
|
69
|
+
subject.attr1 = "23445"
|
70
|
+
expect(subject.valid?).to eq true
|
71
|
+
|
72
|
+
subject.attr1 = "2344"
|
73
|
+
expect(subject.valid?).to eq false
|
74
|
+
expect(subject.errors).to eq ["attr1 length must be exactly 5 characters"]
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should validate signed integer" do
|
78
|
+
clean_room.instance_eval do
|
79
|
+
attr_accessor :attr1
|
80
|
+
validates_integer :attr1
|
81
|
+
end
|
82
|
+
|
83
|
+
subject.attr1 = "+1234A"
|
84
|
+
expect(subject.valid?).to eq false
|
85
|
+
expect(subject.errors).to eq ["attr1 must be a number"]
|
86
|
+
|
87
|
+
subject.attr1 = "+1234"
|
88
|
+
expect(subject.valid?).to eq true
|
89
|
+
|
90
|
+
subject.attr1 = "-1234"
|
91
|
+
expect(subject.valid?).to eq true
|
92
|
+
|
93
|
+
subject.attr1 = "1234"
|
94
|
+
expect(subject.valid?).to eq true
|
95
|
+
end
|
96
|
+
|
97
|
+
it "should validate unsigned integer" do
|
98
|
+
clean_room.instance_eval do
|
99
|
+
attr_accessor :attr1
|
100
|
+
validates_integer :attr1, false
|
101
|
+
end
|
102
|
+
|
103
|
+
subject.attr1 = "1234A"
|
104
|
+
expect(subject.valid?).to eq false
|
105
|
+
expect(subject.errors).to eq ["attr1 must be an unsigned number"]
|
106
|
+
|
107
|
+
subject.attr1 = "+1234"
|
108
|
+
expect(subject.valid?).to eq false
|
109
|
+
expect(subject.errors).to eq ["attr1 must be an unsigned number"]
|
110
|
+
|
111
|
+
subject.attr1 = "-1234"
|
112
|
+
expect(subject.valid?).to eq false
|
113
|
+
expect(subject.errors).to eq ["attr1 must be an unsigned number"]
|
114
|
+
|
115
|
+
subject.attr1 = "1234"
|
116
|
+
expect(subject.valid?).to eq true
|
117
|
+
|
118
|
+
subject.attr1 = 1234
|
119
|
+
expect(subject.valid?).to eq true
|
120
|
+
end
|
121
|
+
|
122
|
+
it "should validate account number" do
|
123
|
+
clean_room.instance_eval do
|
124
|
+
attr_accessor :attr1
|
125
|
+
validates_account_number :attr1
|
126
|
+
end
|
127
|
+
|
128
|
+
subject.attr1 = " "
|
129
|
+
expect(subject.valid?).to eq false
|
130
|
+
expect(subject.errors).to eq ["attr1 must be a valid account number"]
|
131
|
+
|
132
|
+
subject.attr1 = "000000"
|
133
|
+
expect(subject.valid?).to eq false
|
134
|
+
expect(subject.errors).to eq ["attr1 must be a valid account number"]
|
135
|
+
|
136
|
+
subject.attr1 = "00 0 0"
|
137
|
+
expect(subject.valid?).to eq false
|
138
|
+
expect(subject.errors).to eq ["attr1 must be a valid account number"]
|
139
|
+
|
140
|
+
subject.attr1 = "00 0A0"
|
141
|
+
expect(subject.valid?).to eq false
|
142
|
+
expect(subject.errors).to eq ["attr1 must be a valid account number"]
|
143
|
+
|
144
|
+
subject.attr1 = "00 111"
|
145
|
+
expect(subject.valid?).to eq true
|
146
|
+
|
147
|
+
subject.attr1 = "0a 111"
|
148
|
+
expect(subject.valid?).to eq true
|
149
|
+
|
150
|
+
subject.attr1 = "aaaaaa"
|
151
|
+
expect(subject.valid?).to eq true
|
152
|
+
|
153
|
+
subject.attr1 = "aa aaa"
|
154
|
+
expect(subject.valid?).to eq true
|
155
|
+
end
|
156
|
+
|
157
|
+
it "should validate becs" do
|
158
|
+
clean_room.instance_eval do
|
159
|
+
attr_accessor :attr1
|
160
|
+
validates_becs :attr1
|
161
|
+
end
|
162
|
+
|
163
|
+
subject.attr1 = "abc123 é"
|
164
|
+
expect(subject.valid?).to eq false
|
165
|
+
expect(subject.errors).to eq ["attr1 must not contain invalid characters"]
|
166
|
+
|
167
|
+
subject.attr1 = "abc123 ~"
|
168
|
+
expect(subject.valid?).to eq false
|
169
|
+
expect(subject.errors).to eq ["attr1 must not contain invalid characters"]
|
170
|
+
|
171
|
+
subject.attr1 = "abc123"
|
172
|
+
expect(subject.valid?).to eq true
|
173
|
+
end
|
174
|
+
|
175
|
+
it "should validate indicator" do
|
176
|
+
clean_room.instance_eval do
|
177
|
+
attr_accessor :attr1
|
178
|
+
validates_indicator :attr1
|
179
|
+
end
|
180
|
+
|
181
|
+
subject.attr1 = "$"
|
182
|
+
expect(subject.valid?).to eq false
|
183
|
+
list = Aba::Validations::INDICATORS.join('\', \'')
|
184
|
+
expect(subject.errors).to eq ["attr1 must be a one of '#{list}'"]
|
185
|
+
|
186
|
+
subject.attr1 = Aba::Validations::INDICATORS.sample
|
187
|
+
expect(subject.valid?).to eq true
|
188
|
+
end
|
189
|
+
|
190
|
+
it "should validate transaction code" do
|
191
|
+
clean_room.instance_eval do
|
192
|
+
attr_accessor :attr1
|
193
|
+
validates_transaction_code :attr1
|
194
|
+
end
|
195
|
+
|
196
|
+
subject.attr1 = "AA"
|
197
|
+
expect(subject.valid?).to eq false
|
198
|
+
expect(subject.errors).to eq ["attr1 must be a 2 digit number"]
|
199
|
+
|
200
|
+
subject.attr1 = "123"
|
201
|
+
expect(subject.valid?).to eq false
|
202
|
+
expect(subject.errors).to eq ["attr1 must be a 2 digit number"]
|
203
|
+
|
204
|
+
subject.attr1 = "1"
|
205
|
+
expect(subject.valid?).to eq false
|
206
|
+
expect(subject.errors).to eq ["attr1 must be a 2 digit number"]
|
207
|
+
|
208
|
+
subject.attr1 = "15"
|
209
|
+
expect(subject.valid?).to eq true
|
210
|
+
|
211
|
+
subject.attr1 = 15
|
212
|
+
expect(subject.valid?).to eq true
|
213
|
+
end
|
214
|
+
end
|
215
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require "spec_helper"
|
4
|
+
|
5
|
+
describe Aba do
|
6
|
+
describe ".batch" do
|
7
|
+
it "initialize instance of Aba::Batch with passed arguments" do
|
8
|
+
attributes = double.as_null_object
|
9
|
+
transactions = double.as_null_object
|
10
|
+
|
11
|
+
expect(Aba::Batch).to receive(:new).with(attributes, transactions)
|
12
|
+
described_class.batch(attributes, transactions)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "returns instance of Aba::Batch" do
|
16
|
+
obj = described_class.batch(double.as_null_object, double.as_null_object)
|
17
|
+
|
18
|
+
expect(obj).to be_a(Aba::Batch)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,29 +1,30 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aba
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrey Bazhutkin
|
8
|
+
- Trevor Wistaff
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2020-07-08 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: bundler
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
16
17
|
requirements:
|
17
|
-
- - "
|
18
|
+
- - ">="
|
18
19
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
20
|
+
version: '0'
|
20
21
|
type: :development
|
21
22
|
prerelease: false
|
22
23
|
version_requirements: !ruby/object:Gem::Requirement
|
23
24
|
requirements:
|
24
|
-
- - "
|
25
|
+
- - ">="
|
25
26
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
27
|
+
version: '0'
|
27
28
|
- !ruby/object:Gem::Dependency
|
28
29
|
name: rake
|
29
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -38,6 +39,20 @@ dependencies:
|
|
38
39
|
- - ">="
|
39
40
|
- !ruby/object:Gem::Version
|
40
41
|
version: '0'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: pry
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
49
|
+
type: :development
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
41
56
|
- !ruby/object:Gem::Dependency
|
42
57
|
name: rspec
|
43
58
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,28 +67,35 @@ dependencies:
|
|
52
67
|
- - "~>"
|
53
68
|
- !ruby/object:Gem::Version
|
54
69
|
version: '3.0'
|
55
|
-
description:
|
70
|
+
description: ABA (Australian Bankers Association) File Generator
|
56
71
|
email:
|
57
72
|
- andrey.bazhutkin@gmail.com
|
73
|
+
- trev@a07.com.au
|
58
74
|
executables: []
|
59
75
|
extensions: []
|
60
76
|
extra_rdoc_files: []
|
61
77
|
files:
|
62
78
|
- ".gitignore"
|
63
79
|
- ".rspec"
|
80
|
+
- ".travis.yml"
|
64
81
|
- Gemfile
|
65
82
|
- LICENSE
|
66
83
|
- README.md
|
67
84
|
- Rakefile
|
68
85
|
- aba.gemspec
|
69
86
|
- lib/aba.rb
|
87
|
+
- lib/aba/batch.rb
|
88
|
+
- lib/aba/entry.rb
|
89
|
+
- lib/aba/return.rb
|
70
90
|
- lib/aba/transaction.rb
|
71
91
|
- lib/aba/validations.rb
|
72
92
|
- lib/aba/version.rb
|
73
|
-
- spec/
|
93
|
+
- spec/lib/aba/batch_spec.rb
|
94
|
+
- spec/lib/aba/return_spec.rb
|
95
|
+
- spec/lib/aba/transaction_spec.rb
|
96
|
+
- spec/lib/aba/validations_spec.rb
|
97
|
+
- spec/lib/aba_spec.rb
|
74
98
|
- spec/spec_helper.rb
|
75
|
-
- spec/transaction_spec.rb
|
76
|
-
- spec/validations_spec.rb
|
77
99
|
homepage: https://github.com/andrba/aba
|
78
100
|
licenses:
|
79
101
|
- MIT
|
@@ -86,20 +108,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
86
108
|
requirements:
|
87
109
|
- - ">="
|
88
110
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
111
|
+
version: 2.5.0
|
90
112
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
91
113
|
requirements:
|
92
114
|
- - ">="
|
93
115
|
- !ruby/object:Gem::Version
|
94
116
|
version: '0'
|
95
117
|
requirements: []
|
96
|
-
|
97
|
-
rubygems_version: 2.4.4
|
118
|
+
rubygems_version: 3.0.3
|
98
119
|
signing_key:
|
99
120
|
specification_version: 4
|
100
|
-
summary:
|
121
|
+
summary: ABA File Generator
|
101
122
|
test_files:
|
102
|
-
- spec/
|
123
|
+
- spec/lib/aba/batch_spec.rb
|
124
|
+
- spec/lib/aba/return_spec.rb
|
125
|
+
- spec/lib/aba/transaction_spec.rb
|
126
|
+
- spec/lib/aba/validations_spec.rb
|
127
|
+
- spec/lib/aba_spec.rb
|
103
128
|
- spec/spec_helper.rb
|
104
|
-
- spec/transaction_spec.rb
|
105
|
-
- spec/validations_spec.rb
|