aba 0.1.0 → 1.0.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.
@@ -0,0 +1,67 @@
1
+ # encoding: UTF-8
2
+
3
+ require "spec_helper"
4
+
5
+ describe Aba::Return do
6
+ subject(:transaction) { Aba::Return.new(transaction_params) }
7
+
8
+ let(:transaction_attributes) { {amount: 50050, transaction_code: 53} }
9
+ let(:transaction_params) do
10
+ {
11
+ :trace_account_number => 23432342,
12
+ :transaction_code => transaction_attributes[:transaction_code],
13
+ :amount => transaction_attributes[:amount],
14
+ :account_name => "John Doe",
15
+ :trace_bsb => "345-453",
16
+ :return_code => 8,
17
+ :lodgement_reference => "R45343",
18
+ :bsb => "123-234",
19
+ :account_number => "4647642",
20
+ :name_of_remitter => "Remitter",
21
+ :original_processing_day => "07",
22
+ :original_user_id => "054321",
23
+ }
24
+ end
25
+
26
+ describe "#to_s" do
27
+ it "should create a transaction row" do
28
+ expect(subject.to_s).to include(
29
+ "2123-234 46476428530000050050John Doe R45343 345-453 23432342Remitter 07054321")
30
+ # | | || | | | | | | | |
31
+ # +-bsb | || +-amount +-account_name | | | | | +-original_user_id
32
+ # | |+-transaction_code | | | | +-original_processing_day
33
+ # | +-return_code | | | +-name_of_remitter
34
+ # +-account_number | | +-trace_account_number
35
+ # | +-trace_bsb
36
+ # +-lodgement_reference
37
+ end
38
+
39
+ context 'when supplied amount is negative' do
40
+ let(:transaction_attributes) { {amount: -50050, transaction_code: 53} }
41
+
42
+ it "should create a transaction row where the amount does not have a sign" do
43
+ expect(subject.to_s).to include(
44
+ "2123-234 46476428530000050050John Doe R45343 345-453 23432342Remitter 07054321")
45
+ # | | || | | | | | | | |
46
+ # +-bsb | || +-amount +-account_name | | | | | +-original_user_id
47
+ # | |+-transaction_code | | | | +-original_processing_day
48
+ # | +-return_code | | | +-name_of_remitter
49
+ # +-account_number | | +-trace_account_number
50
+ # | +-trace_bsb
51
+ # +-lodgement_reference
52
+ end
53
+ end
54
+ end
55
+
56
+ describe "#valid?" do
57
+ it "should be valid" do
58
+ expect(subject.valid?).to eq true
59
+ end
60
+
61
+ it "should not be valid" do
62
+ transaction_params.delete(:bsb)
63
+ expect(subject.valid?).to eq false
64
+ expect(subject.errors).to eq ["bsb format is incorrect"]
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,51 @@
1
+ # encoding: UTF-8
2
+
3
+ require "spec_helper"
4
+
5
+ describe Aba::Transaction do
6
+ subject(:transaction) { Aba::Transaction.new(transaction_params) }
7
+
8
+ let(:transaction_attributes) { {amount: 50050, transaction_code: 53} }
9
+
10
+ let(:transaction_params) do
11
+ {
12
+ :account_number => 23432342,
13
+ :transaction_code => transaction_attributes[:transaction_code],
14
+ :amount => transaction_attributes[:amount],
15
+ :account_name => "John Doe",
16
+ :bsb => "345-453",
17
+ :witholding_amount => 87,
18
+ :indicator => "W",
19
+ :lodgement_reference => "R45343",
20
+ :trace_bsb => "123-234",
21
+ :trace_account_number => "4647642",
22
+ :name_of_remitter => "Remitter",
23
+ }
24
+ end
25
+
26
+ describe "#to_s" do
27
+ it "should create a transaction row" do
28
+ expect(subject.to_s).to include("1345-453 23432342W530000050050John Doe R45343 123-234 4647642Remitter 00000087")
29
+ end
30
+
31
+ context 'when supplied amount is negative' do
32
+ let(:transaction_attributes) { {amount: -50050, transaction_code: 53} }
33
+
34
+ it "should create a transaction row where the amount does not have a sign" do
35
+ expect(subject.to_s).to include("1345-453 23432342W530000050050John Doe R45343 123-234 4647642Remitter 00000087")
36
+ end
37
+ end
38
+ end
39
+
40
+ describe "#valid?" do
41
+ it "should be valid" do
42
+ expect(subject.valid?).to eq true
43
+ end
44
+
45
+ it "should not be valid" do
46
+ transaction_params.delete(:bsb)
47
+ expect(subject.valid?).to eq false
48
+ expect(subject.errors).to eq ["bsb format is incorrect"]
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,211 @@
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 = described_class::INDICATORS.join('\', \'')
184
+ expect(subject.errors).to eq ["attr1 must be a one of '#{list}'"]
185
+
186
+ subject.attr1 = described_class::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 :transaction_code
193
+ validates_transaction_code :transaction_code
194
+ end
195
+
196
+ subject.transaction_code = "AA"
197
+ expect(subject.valid?).to eq false
198
+ expect(subject.errors).to eq ["transaction_code must be one of #{described_class::transaction_codes.join(', ')}"]
199
+
200
+ subject.transaction_code = "1"
201
+ expect(subject.valid?).to eq false
202
+ expect(subject.errors).to eq ["transaction_code must be one of #{described_class::transaction_codes.join(', ')}"]
203
+
204
+ subject.transaction_code = "13"
205
+ expect(subject.valid?).to eq true
206
+
207
+ subject.transaction_code = 50
208
+ expect(subject.valid?).to eq true
209
+ end
210
+ end
211
+ 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
@@ -2,7 +2,10 @@ require 'bundler/setup'
2
2
  Bundler.setup
3
3
 
4
4
  require "aba"
5
+ require "pry"
5
6
 
6
7
  RSpec.configure do |config|
7
8
  config.order = :random
9
+ config.filter_run :focus
10
+ config.run_all_when_everything_filtered = true
8
11
  end
metadata CHANGED
@@ -1,43 +1,44 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aba
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.0.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: 2014-11-24 00:00:00.000000000 Z
12
+ date: 2020-07-13 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
- name: bundler
15
+ name: rake
15
16
  requirement: !ruby/object:Gem::Requirement
16
17
  requirements:
17
18
  - - "~>"
18
19
  - !ruby/object:Gem::Version
19
- version: '1.6'
20
+ version: '13.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: '1.6'
27
+ version: '13.0'
27
28
  - !ruby/object:Gem::Dependency
28
- name: rake
29
+ name: pry
29
30
  requirement: !ruby/object:Gem::Requirement
30
31
  requirements:
31
- - - ">="
32
+ - - "~>"
32
33
  - !ruby/object:Gem::Version
33
- version: '0'
34
+ version: '0.13'
34
35
  type: :development
35
36
  prerelease: false
36
37
  version_requirements: !ruby/object:Gem::Requirement
37
38
  requirements:
38
- - - ">="
39
+ - - "~>"
39
40
  - !ruby/object:Gem::Version
40
- version: '0'
41
+ version: '0.13'
41
42
  - !ruby/object:Gem::Dependency
42
43
  name: rspec
43
44
  requirement: !ruby/object:Gem::Requirement
@@ -55,25 +56,33 @@ dependencies:
55
56
  description: ABA (Australian Bankers Association) File Generator
56
57
  email:
57
58
  - andrey.bazhutkin@gmail.com
59
+ - trev@a07.com.au
58
60
  executables: []
59
61
  extensions: []
60
62
  extra_rdoc_files: []
61
63
  files:
62
64
  - ".gitignore"
63
65
  - ".rspec"
66
+ - ".travis.yml"
67
+ - CHANGELOG.md
64
68
  - Gemfile
65
69
  - LICENSE
66
70
  - README.md
67
71
  - Rakefile
68
72
  - aba.gemspec
69
73
  - lib/aba.rb
74
+ - lib/aba/batch.rb
75
+ - lib/aba/entry.rb
76
+ - lib/aba/return.rb
70
77
  - lib/aba/transaction.rb
71
78
  - lib/aba/validations.rb
72
79
  - lib/aba/version.rb
73
- - spec/aba_spec.rb
80
+ - spec/lib/aba/batch_spec.rb
81
+ - spec/lib/aba/return_spec.rb
82
+ - spec/lib/aba/transaction_spec.rb
83
+ - spec/lib/aba/validations_spec.rb
84
+ - spec/lib/aba_spec.rb
74
85
  - spec/spec_helper.rb
75
- - spec/transaction_spec.rb
76
- - spec/validations_spec.rb
77
86
  homepage: https://github.com/andrba/aba
78
87
  licenses:
79
88
  - MIT
@@ -86,20 +95,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
86
95
  requirements:
87
96
  - - ">="
88
97
  - !ruby/object:Gem::Version
89
- version: 1.9.2
98
+ version: 2.5.0
90
99
  required_rubygems_version: !ruby/object:Gem::Requirement
91
100
  requirements:
92
101
  - - ">="
93
102
  - !ruby/object:Gem::Version
94
103
  version: '0'
95
104
  requirements: []
96
- rubyforge_project:
97
- rubygems_version: 2.4.4
105
+ rubygems_version: 3.0.3
98
106
  signing_key:
99
107
  specification_version: 4
100
108
  summary: ABA File Generator
101
109
  test_files:
102
- - spec/aba_spec.rb
110
+ - spec/lib/aba/batch_spec.rb
111
+ - spec/lib/aba/return_spec.rb
112
+ - spec/lib/aba/transaction_spec.rb
113
+ - spec/lib/aba/validations_spec.rb
114
+ - spec/lib/aba_spec.rb
103
115
  - spec/spec_helper.rb
104
- - spec/transaction_spec.rb
105
- - spec/validations_spec.rb