mt940_parser 1.2.0 → 1.3.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 +4 -4
- data/.travis.yml +2 -1
- data/Gemfile +3 -2
- data/VERSION.yml +1 -1
- data/lib/mt940.rb +1 -0
- data/mt940_parser.gemspec +11 -9
- data/test/fixtures/currency_in_25.yml +6 -5
- data/test/fixtures/empty_86.yml +6 -5
- data/test/fixtures/empty_entry_date.yml +8 -7
- data/test/fixtures/empty_line.yml +3 -2
- data/test/fixtures/missing_crlf_at_end.yml +6 -5
- data/test/fixtures/sepa_mt9401.yml +1482 -936
- data/test/fixtures/with_binary_character.yml +2 -1
- data/test/helper.rb +6 -1
- data/test/test_customer_statement_message.rb +15 -17
- data/test/test_mt940.rb +1 -3
- metadata +33 -21
- data/.ruby-version +0 -1
- data/Gemfile.lock +0 -64
data/test/helper.rb
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
require 'rubygems'
|
2
|
+
require 'yaml'
|
2
3
|
require 'test/unit'
|
4
|
+
begin
|
5
|
+
require 'byebug'
|
6
|
+
rescue LoadError
|
7
|
+
end
|
3
8
|
|
4
9
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
5
10
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
6
11
|
require 'mt940'
|
7
|
-
require 'mt940/customer_statement_message'
|
12
|
+
require 'mt940/customer_statement_message'
|
@@ -1,73 +1,71 @@
|
|
1
1
|
require_relative 'helper'
|
2
|
-
require 'yaml'
|
3
|
-
YAML::ENGINE.yamler = 'psych'
|
4
2
|
|
5
3
|
|
6
4
|
# $DEBUG = true
|
7
5
|
class TestCustomerStatementMessage < Test::Unit::TestCase
|
8
|
-
|
6
|
+
|
9
7
|
def setup
|
10
8
|
file = File.dirname(__FILE__) + "/fixtures/sepa_snippet.txt"
|
11
9
|
messages = MT940::CustomerStatementMessage.parse_file(file)
|
12
10
|
@message = messages.first
|
13
11
|
@message_2 = messages.last
|
14
12
|
end
|
15
|
-
|
13
|
+
|
16
14
|
def test_it_should_know_the_bank_code
|
17
15
|
assert_equal "50880050", @message.bank_code
|
18
16
|
end
|
19
|
-
|
17
|
+
|
20
18
|
def test_it_should_know_the_account_number
|
21
19
|
assert_equal "0194787400888", @message.account_number
|
22
20
|
end
|
23
|
-
|
21
|
+
|
24
22
|
def test_it_should_have_statement_lines
|
25
23
|
assert @message.statement_lines.respond_to?(:each)
|
26
24
|
assert_equal 4, @message.statement_lines.size
|
27
25
|
end
|
28
|
-
|
26
|
+
|
29
27
|
def test_statement_lines_should_have_amount_info_credit
|
30
28
|
line = @message.statement_lines.first
|
31
29
|
assert_equal 5099005, line.amount
|
32
30
|
assert_equal :credit, line.funds_code
|
33
31
|
end
|
34
|
-
|
32
|
+
|
35
33
|
def test_statement_lines_should_have_amount_info_debit
|
36
34
|
line = @message_2.statement_lines.first
|
37
35
|
assert_equal 8, line.amount
|
38
36
|
assert_equal :debit, line.funds_code
|
39
37
|
end
|
40
|
-
|
38
|
+
|
41
39
|
def test_statement_lines_should_have_account_holder
|
42
40
|
line = @message.statement_lines.first
|
43
41
|
assert_equal "KARL\n KAUFMANN", line.account_holder
|
44
42
|
end
|
45
|
-
|
43
|
+
|
46
44
|
def test_statement_lines_info_should_have_bank_code
|
47
45
|
line = @message.statement_lines.first
|
48
46
|
assert_equal "DRESDEFF508", line.bank_code
|
49
47
|
end
|
50
|
-
|
48
|
+
|
51
49
|
def test_statement_lines_info_should_have_account_number
|
52
50
|
line = @message.statement_lines.first
|
53
51
|
assert_equal "DE14508800500194785000", line.account_number
|
54
52
|
end
|
55
|
-
|
53
|
+
|
56
54
|
def test_statement_lines_should_have_details
|
57
55
|
line = @message.statement_lines.first
|
58
56
|
assert_equal "EREF+EndToEndId TFNR 22 004\n 00001\nSVWZ+Verw CTSc-01 BC-PPP TF\nNr 22 004", line.details
|
59
57
|
end
|
60
|
-
|
58
|
+
|
61
59
|
def test_statement_lines_should_have_an_entry_date
|
62
60
|
line = @message.statement_lines.first
|
63
61
|
assert_equal Date.parse("2007-09-04"), line.entry_date
|
64
62
|
end
|
65
|
-
|
63
|
+
|
66
64
|
def test_statement_lines_should_have_a_value_date
|
67
65
|
line = @message.statement_lines.first
|
68
66
|
assert_equal Date.parse("2007-09-07"), line.value_date
|
69
67
|
end
|
70
|
-
|
68
|
+
|
71
69
|
def test_parsing_the_file_should_return_two_message_objects
|
72
70
|
file = File.dirname(__FILE__) + "/fixtures/sepa_snippet.txt"
|
73
71
|
messages = MT940::CustomerStatementMessage.parse_file(file)
|
@@ -75,12 +73,12 @@ class TestCustomerStatementMessage < Test::Unit::TestCase
|
|
75
73
|
assert_equal "0194787400888", messages[0].account_number
|
76
74
|
assert_equal "0194791600888", messages[1].account_number
|
77
75
|
end
|
78
|
-
|
76
|
+
|
79
77
|
def test_parsing_a_file_with_broken_structure_should_raise_an_exception
|
80
78
|
file = File.dirname(__FILE__) + "/fixtures/sepa_snippet_broken.txt"
|
81
79
|
assert_raise(StandardError) { MT940::CustomerStatementMessage.parse_file(file) }
|
82
80
|
end
|
83
|
-
|
81
|
+
|
84
82
|
def test_should_raise_method_missing_when_asking_statement_lines_for_unknown_stuff
|
85
83
|
file = File.dirname(__FILE__) + "/fixtures/sepa_snippet.txt"
|
86
84
|
message = MT940::CustomerStatementMessage.parse_file(file).first
|
data/test/test_mt940.rb
CHANGED
@@ -1,7 +1,4 @@
|
|
1
1
|
require_relative 'helper'
|
2
|
-
require 'yaml'
|
3
|
-
YAML::ENGINE.yamler = 'psych'
|
4
|
-
|
5
2
|
|
6
3
|
# $DEBUG = true
|
7
4
|
class TestMt940 < Test::Unit::TestCase
|
@@ -9,6 +6,7 @@ class TestMt940 < Test::Unit::TestCase
|
|
9
6
|
def test_it_should_parse_fixture_files_correctly
|
10
7
|
Dir[File.dirname(__FILE__) + "/fixtures/*.txt"].reject { |f| f =~ /sepa_snippet/ }.each do |file|
|
11
8
|
data = MT940.parse(IO.read(file))
|
9
|
+
|
12
10
|
generated_structure_file = file.gsub(/.txt$/, ".yml")
|
13
11
|
|
14
12
|
assert_equal YAML::load_file(generated_structure_file).to_yaml, data.to_yaml
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mt940_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thies C. Arntzen
|
@@ -9,48 +9,62 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-04-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
15
|
+
name: bundler
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- -
|
18
|
+
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version:
|
20
|
+
version: '0'
|
21
21
|
type: :development
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- -
|
25
|
+
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version:
|
27
|
+
version: '0'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
|
-
name:
|
29
|
+
name: jeweler
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- -
|
32
|
+
- - ">="
|
33
33
|
- !ruby/object:Gem::Version
|
34
34
|
version: '0'
|
35
35
|
type: :development
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- -
|
39
|
+
- - ">="
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '0'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
|
-
name:
|
43
|
+
name: test-unit
|
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'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: byebug
|
44
58
|
requirement: !ruby/object:Gem::Requirement
|
45
59
|
requirements:
|
46
|
-
- -
|
60
|
+
- - ">="
|
47
61
|
- !ruby/object:Gem::Version
|
48
62
|
version: '0'
|
49
63
|
type: :development
|
50
64
|
prerelease: false
|
51
65
|
version_requirements: !ruby/object:Gem::Requirement
|
52
66
|
requirements:
|
53
|
-
- -
|
67
|
+
- - ">="
|
54
68
|
- !ruby/object:Gem::Version
|
55
69
|
version: '0'
|
56
70
|
description:
|
@@ -61,12 +75,10 @@ extra_rdoc_files:
|
|
61
75
|
- LICENSE
|
62
76
|
- README.rdoc
|
63
77
|
files:
|
64
|
-
- .document
|
65
|
-
- .
|
66
|
-
- .
|
67
|
-
- .travis.yml
|
78
|
+
- ".document"
|
79
|
+
- ".specification"
|
80
|
+
- ".travis.yml"
|
68
81
|
- Gemfile
|
69
|
-
- Gemfile.lock
|
70
82
|
- LICENSE
|
71
83
|
- README.rdoc
|
72
84
|
- Rakefile
|
@@ -111,17 +123,17 @@ require_paths:
|
|
111
123
|
- lib
|
112
124
|
required_ruby_version: !ruby/object:Gem::Requirement
|
113
125
|
requirements:
|
114
|
-
- -
|
126
|
+
- - ">="
|
115
127
|
- !ruby/object:Gem::Version
|
116
128
|
version: '0'
|
117
129
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
130
|
requirements:
|
119
|
-
- -
|
131
|
+
- - ">="
|
120
132
|
- !ruby/object:Gem::Version
|
121
133
|
version: '0'
|
122
134
|
requirements: []
|
123
135
|
rubyforge_project:
|
124
|
-
rubygems_version: 2.
|
136
|
+
rubygems_version: 2.4.6
|
125
137
|
signing_key:
|
126
138
|
specification_version: 4
|
127
139
|
summary: MT940 parses account statements in the SWIFT MT940 format.
|
data/.ruby-version
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
2.0.0-p594
|
data/Gemfile.lock
DELETED
@@ -1,64 +0,0 @@
|
|
1
|
-
GEM
|
2
|
-
remote: http://rubygems.org/
|
3
|
-
specs:
|
4
|
-
addressable (2.3.5)
|
5
|
-
builder (3.2.2)
|
6
|
-
descendants_tracker (0.0.3)
|
7
|
-
diff-lcs (1.1.3)
|
8
|
-
faraday (0.9.0)
|
9
|
-
multipart-post (>= 1.2, < 3)
|
10
|
-
git (1.2.6)
|
11
|
-
github_api (0.11.2)
|
12
|
-
addressable (~> 2.3)
|
13
|
-
descendants_tracker (~> 0.0.1)
|
14
|
-
faraday (~> 0.8, < 0.10)
|
15
|
-
hashie (>= 1.2)
|
16
|
-
multi_json (>= 1.7.5, < 2.0)
|
17
|
-
nokogiri (~> 1.6.0)
|
18
|
-
oauth2
|
19
|
-
hashie (2.0.5)
|
20
|
-
highline (1.6.20)
|
21
|
-
jeweler (2.0.1)
|
22
|
-
builder
|
23
|
-
bundler (>= 1.0)
|
24
|
-
git (>= 1.2.5)
|
25
|
-
github_api
|
26
|
-
highline (>= 1.6.15)
|
27
|
-
nokogiri (>= 1.5.10)
|
28
|
-
rake
|
29
|
-
rdoc
|
30
|
-
json (1.8.1)
|
31
|
-
jwt (0.1.11)
|
32
|
-
multi_json (>= 1.5)
|
33
|
-
mini_portile (0.5.2)
|
34
|
-
multi_json (1.8.4)
|
35
|
-
multi_xml (0.5.5)
|
36
|
-
multipart-post (2.0.0)
|
37
|
-
nokogiri (1.6.1)
|
38
|
-
mini_portile (~> 0.5.0)
|
39
|
-
oauth2 (0.9.3)
|
40
|
-
faraday (>= 0.8, < 0.10)
|
41
|
-
jwt (~> 0.1.8)
|
42
|
-
multi_json (~> 1.3)
|
43
|
-
multi_xml (~> 0.5)
|
44
|
-
rack (~> 1.2)
|
45
|
-
rack (1.5.2)
|
46
|
-
rake (10.1.1)
|
47
|
-
rdoc (4.1.1)
|
48
|
-
json (~> 1.4)
|
49
|
-
rspec (2.3.0)
|
50
|
-
rspec-core (~> 2.3.0)
|
51
|
-
rspec-expectations (~> 2.3.0)
|
52
|
-
rspec-mocks (~> 2.3.0)
|
53
|
-
rspec-core (2.3.1)
|
54
|
-
rspec-expectations (2.3.0)
|
55
|
-
diff-lcs (~> 1.1.2)
|
56
|
-
rspec-mocks (2.3.0)
|
57
|
-
|
58
|
-
PLATFORMS
|
59
|
-
ruby
|
60
|
-
|
61
|
-
DEPENDENCIES
|
62
|
-
bundler
|
63
|
-
jeweler
|
64
|
-
rspec (~> 2.3.0)
|