bai2 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,3 @@
1
+ module Bai2
2
+ VERSION = '1.0.0'
3
+ end
@@ -0,0 +1,3 @@
1
+ require 'minitest/autorun'
2
+ require 'minitest/reporters'
3
+ Minitest::Reporters.use!([Minitest::Reporters::ProgressReporter.new])
@@ -0,0 +1,8 @@
1
+ 01,121140399,9999999999,050608,1015,1,80,1,2/
2
+ 02,9999999999,121140399,1,050607,1015,,2/
3
+ 03,1234567890,,,,,/
4
+ 16,174,25001,Z,,50848,/
5
+ 88,SAMPLE CONTINUATION TEXT,/
6
+ 49,25001,4/
7
+ 98,25001,1,6/
8
+ 99,25001,1,8/
@@ -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/
@@ -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
@@ -0,0 +1,9 @@
1
+ require File.expand_path('../../autorun.rb', __FILE__)
2
+
3
+ require 'bai2'
4
+
5
+ class Bai2ParsingTest < Minitest::Test
6
+
7
+ # TODO: implement this, we might want to test the parsing internals, not just
8
+ # the result... in case of problems it might help debug
9
+ 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: