bai2 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.
- checksums.yaml +7 -0
- data/.gitignore +14 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +102 -0
- data/Rakefile +7 -0
- data/bai2.gemspec +25 -0
- data/lib/bai2.rb +198 -0
- data/lib/bai2/attr-reader-from-ivar-hash.rb +31 -0
- data/lib/bai2/integrity.rb +128 -0
- data/lib/bai2/parser.rb +142 -0
- data/lib/bai2/record.rb +260 -0
- data/lib/bai2/type-code-data.rb +473 -0
- data/lib/bai2/version.rb +3 -0
- data/test/autorun.rb +3 -0
- data/test/data/daily.bai2 +8 -0
- data/test/data/eod.bai2 +17 -0
- data/test/tests/bai2.rb +59 -0
- data/test/tests/parsing.rb +9 -0
- metadata +124 -0
data/lib/bai2/version.rb
ADDED
data/test/autorun.rb
ADDED
data/test/data/eod.bai2
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
01,121140399,3333333333,100831,1720,000001,80,1,2/
|
2
|
+
02,3333333333,121140399,1,100831,1720,USD,4/
|
3
|
+
03,3333333333,USD,,,,/
|
4
|
+
16,195,8325982,,,,FED NO: 20100831L1B77D1CDSDSDJSIO15608310954FT01
|
5
|
+
88,SENDER BNK:=ETRADE BANK
|
6
|
+
88,SENDER ID:=056073573
|
7
|
+
88,ORG:=OPTIONS LINK WIRE CLEARING
|
8
|
+
88,ORG ADDRESS:=1995 SE. 57TH ST. NY, NY 10022
|
9
|
+
88,BNF ID:=3300333333
|
10
|
+
88,BNF NAME:=YOUR NAME HERE INC
|
11
|
+
88,BNF ADDRESS:=185 B ST SAN FRAN, CA 94011
|
12
|
+
88,REC FI:=SIL VLY BK SCLA
|
13
|
+
88,REC ID:=121140399
|
14
|
+
88,OBI:=INVOICE 123456
|
15
|
+
49,8325982,13/
|
16
|
+
98,8325982,1,15/
|
17
|
+
99,8325982,1,17/
|
data/test/tests/bai2.rb
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
require File.expand_path('../../autorun.rb', __FILE__)
|
2
|
+
|
3
|
+
require 'bai2'
|
4
|
+
|
5
|
+
class Bai2Test < Minitest::Test
|
6
|
+
|
7
|
+
def setup
|
8
|
+
@daily = Bai2::BaiFile.parse(File.expand_path('../../data/daily.bai2', __FILE__))
|
9
|
+
@eod = Bai2::BaiFile.parse(File.expand_path('../../data/eod.bai2', __FILE__))
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_parsing
|
13
|
+
assert_kind_of(Bai2::BaiFile, @daily)
|
14
|
+
assert_kind_of(Bai2::BaiFile, @eod)
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_groups
|
18
|
+
[@daily, @eod].each do |file|
|
19
|
+
assert_kind_of(Array, file.groups)
|
20
|
+
assert_equal(1, file.groups.count)
|
21
|
+
group = file.groups.first
|
22
|
+
assert_kind_of(Bai2::BaiFile::Group, group)
|
23
|
+
assert_equal('121140399', group.originator)
|
24
|
+
end
|
25
|
+
assert_equal('9999999999', @daily.groups[0].destination)
|
26
|
+
assert_equal('3333333333', @eod.groups[0].destination)
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_accounts
|
30
|
+
[@daily, @eod].each do |file|
|
31
|
+
accounts = @daily.groups.first.accounts
|
32
|
+
assert_kind_of(Array, accounts)
|
33
|
+
assert_equal(1, accounts.count)
|
34
|
+
assert_kind_of(Bai2::BaiFile::Account, accounts.first)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_transactions
|
39
|
+
all_txs = [@daily, @eod].flat_map(&:groups).flat_map(&:accounts).flat_map(&:transactions)
|
40
|
+
assert_equal(2, all_txs.count)
|
41
|
+
all_txs.each do |tx|
|
42
|
+
assert_kind_of(Bai2::BaiFile::Transaction, tx)
|
43
|
+
end
|
44
|
+
first, second = all_txs
|
45
|
+
assert_equal(first.type, {
|
46
|
+
code: 174,
|
47
|
+
transaction: :credit,
|
48
|
+
scope: :detail,
|
49
|
+
description: 'Other Deposit'
|
50
|
+
})
|
51
|
+
assert_equal(second.type, {
|
52
|
+
code: 195,
|
53
|
+
transaction: :credit,
|
54
|
+
scope: :detail,
|
55
|
+
description: 'Incoming Money Transfer'
|
56
|
+
})
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
metadata
ADDED
@@ -0,0 +1,124 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: bai2
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Kenneth Ballenegger
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-03-20 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.7'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.7'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '5.5'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '5.5'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: minitest-reporters
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.0'
|
69
|
+
description: Parse BAI2 files.
|
70
|
+
email:
|
71
|
+
- kenneth@ballenegger.com
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- ".gitignore"
|
77
|
+
- Gemfile
|
78
|
+
- LICENSE.txt
|
79
|
+
- README.md
|
80
|
+
- Rakefile
|
81
|
+
- bai2.gemspec
|
82
|
+
- lib/bai2.rb
|
83
|
+
- lib/bai2/attr-reader-from-ivar-hash.rb
|
84
|
+
- lib/bai2/integrity.rb
|
85
|
+
- lib/bai2/parser.rb
|
86
|
+
- lib/bai2/record.rb
|
87
|
+
- lib/bai2/type-code-data.rb
|
88
|
+
- lib/bai2/version.rb
|
89
|
+
- test/autorun.rb
|
90
|
+
- test/data/daily.bai2
|
91
|
+
- test/data/eod.bai2
|
92
|
+
- test/tests/bai2.rb
|
93
|
+
- test/tests/parsing.rb
|
94
|
+
homepage: https://github.com/venturehacks/bai2
|
95
|
+
licenses:
|
96
|
+
- MIT
|
97
|
+
metadata: {}
|
98
|
+
post_install_message:
|
99
|
+
rdoc_options: []
|
100
|
+
require_paths:
|
101
|
+
- lib
|
102
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
103
|
+
requirements:
|
104
|
+
- - ">="
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: '0'
|
107
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - ">="
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
112
|
+
requirements: []
|
113
|
+
rubyforge_project:
|
114
|
+
rubygems_version: 2.2.2
|
115
|
+
signing_key:
|
116
|
+
specification_version: 4
|
117
|
+
summary: Parse BAI2 files.
|
118
|
+
test_files:
|
119
|
+
- test/autorun.rb
|
120
|
+
- test/data/daily.bai2
|
121
|
+
- test/data/eod.bai2
|
122
|
+
- test/tests/bai2.rb
|
123
|
+
- test/tests/parsing.rb
|
124
|
+
has_rdoc:
|