sepa_king_codeur 0.12.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +37 -0
  5. data/CONTRIBUTING.md +38 -0
  6. data/Gemfile +2 -0
  7. data/LICENSE.txt +22 -0
  8. data/README.md +297 -0
  9. data/Rakefile +6 -0
  10. data/gemfiles/Gemfile-activemodel-3.1.x +5 -0
  11. data/gemfiles/Gemfile-activemodel-3.2.x +5 -0
  12. data/gemfiles/Gemfile-activemodel-4.0.x +5 -0
  13. data/gemfiles/Gemfile-activemodel-4.1.x +5 -0
  14. data/gemfiles/Gemfile-activemodel-4.2.x +5 -0
  15. data/gemfiles/Gemfile-activemodel-5.0.x +5 -0
  16. data/gemfiles/Gemfile-activemodel-5.1.x +5 -0
  17. data/gemfiles/Gemfile-activemodel-5.2.x +5 -0
  18. data/gemfiles/Gemfile-activemodel-6.0.x +5 -0
  19. data/lib/schema/pain.001.001.03.ch.02.xsd +1212 -0
  20. data/lib/schema/pain.001.001.03.xsd +921 -0
  21. data/lib/schema/pain.001.002.03.xsd +450 -0
  22. data/lib/schema/pain.001.003.03.xsd +474 -0
  23. data/lib/schema/pain.008.001.02.xsd +879 -0
  24. data/lib/schema/pain.008.002.02.xsd +597 -0
  25. data/lib/schema/pain.008.003.02.xsd +614 -0
  26. data/lib/sepa_king.rb +19 -0
  27. data/lib/sepa_king/account.rb +19 -0
  28. data/lib/sepa_king/account/creditor_account.rb +8 -0
  29. data/lib/sepa_king/account/creditor_address.rb +37 -0
  30. data/lib/sepa_king/account/debtor_account.rb +5 -0
  31. data/lib/sepa_king/account/debtor_address.rb +37 -0
  32. data/lib/sepa_king/converter.rb +51 -0
  33. data/lib/sepa_king/error.rb +4 -0
  34. data/lib/sepa_king/message.rb +169 -0
  35. data/lib/sepa_king/message/credit_transfer.rb +137 -0
  36. data/lib/sepa_king/message/direct_debit.rb +207 -0
  37. data/lib/sepa_king/transaction.rb +56 -0
  38. data/lib/sepa_king/transaction/credit_transfer_transaction.rb +31 -0
  39. data/lib/sepa_king/transaction/direct_debit_transaction.rb +56 -0
  40. data/lib/sepa_king/validator.rb +57 -0
  41. data/lib/sepa_king/version.rb +3 -0
  42. data/sepa_king.gemspec +33 -0
  43. data/spec/account_spec.rb +42 -0
  44. data/spec/converter_spec.rb +74 -0
  45. data/spec/credit_transfer_spec.rb +520 -0
  46. data/spec/credit_transfer_transaction_spec.rb +74 -0
  47. data/spec/creditor_account_spec.rb +23 -0
  48. data/spec/debtor_account_spec.rb +12 -0
  49. data/spec/debtor_address_spec.rb +12 -0
  50. data/spec/direct_debit_spec.rb +657 -0
  51. data/spec/direct_debit_transaction_spec.rb +69 -0
  52. data/spec/examples/pain.001.001.03.ch.02.xml +172 -0
  53. data/spec/examples/pain.001.001.03.xml +89 -0
  54. data/spec/examples/pain.001.002.03.xml +89 -0
  55. data/spec/examples/pain.001.003.03.xml +89 -0
  56. data/spec/examples/pain.008.002.02.xml +134 -0
  57. data/spec/examples/pain.008.003.02.xml +134 -0
  58. data/spec/message_spec.rb +128 -0
  59. data/spec/spec_helper.rb +33 -0
  60. data/spec/support/active_model.rb +30 -0
  61. data/spec/support/custom_matcher.rb +60 -0
  62. data/spec/support/factories.rb +24 -0
  63. data/spec/support/validations.rb +27 -0
  64. data/spec/transaction_spec.rb +134 -0
  65. data/spec/validation_spec.rb +25 -0
  66. data/spec/validator_spec.rb +99 -0
  67. metadata +250 -0
@@ -0,0 +1,60 @@
1
+ require 'rspec/expectations'
2
+ require 'nokogiri'
3
+
4
+ RSpec::Matchers.define :validate_against do |xsd|
5
+ match do |actual|
6
+ @schema = Nokogiri::XML::Schema(File.read("lib/schema/#{xsd}"))
7
+ @doc = Nokogiri::XML(actual)
8
+
9
+ expect(@schema).to be_valid(@doc)
10
+ end
11
+
12
+ failure_message do |actual|
13
+ # Return the validation errors as string
14
+ @schema.validate(@doc).join("\n")
15
+ end
16
+ end
17
+
18
+ RSpec::Matchers.define :have_xml do |xpath, text|
19
+ match do |actual|
20
+ doc = Nokogiri::XML(actual)
21
+ doc.remove_namespaces! # so we can use shorter xpath's without any namespace
22
+
23
+ nodes = doc.xpath(xpath)
24
+ expect(nodes).not_to be_empty
25
+ if text
26
+ nodes.each do |node|
27
+ if text.is_a?(Regexp)
28
+ expect(node.content).to match(text)
29
+ else
30
+ expect(node.content).to eq(text)
31
+ end
32
+ end
33
+ end
34
+ true
35
+ end
36
+ end
37
+
38
+ RSpec::Matchers.define :accept do |*values, options|
39
+ attributes = Array(options[:for])
40
+
41
+ attributes.each do |attribute|
42
+ match do |actual|
43
+ values.all? { |value|
44
+ expect(
45
+ actual.new(attribute => value).errors_on(attribute).size
46
+ ).to eq 0
47
+ }
48
+ end
49
+ end
50
+
51
+ attributes.each do |attribute|
52
+ match_when_negated do |actual|
53
+ values.all? { |value|
54
+ expect(
55
+ actual.new(attribute => value).errors_on(attribute).size
56
+ ).to be >= 1
57
+ }
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,24 @@
1
+ # encoding: utf-8
2
+
3
+ def credit_transfer_transaction(attributes={})
4
+ { name: 'Telekomiker AG',
5
+ bic: 'PBNKDEFF370',
6
+ iban: 'DE37112589611964645802',
7
+ amount: 102.50,
8
+ reference: 'XYZ-1234/123',
9
+ remittance_information: 'Rechnung vom 22.08.2013'
10
+ }.merge(attributes)
11
+ end
12
+
13
+ def direct_debt_transaction(attributes={})
14
+ { name: 'Müller & Schmidt oHG',
15
+ bic: 'GENODEF1JEV',
16
+ iban: 'DE68210501700012345678',
17
+ amount: 750.00,
18
+ reference: 'XYZ/2013-08-ABO/6789',
19
+ remittance_information: 'Vielen Dank für Ihren Einkauf!',
20
+ mandate_id: 'K-08-2010-42123',
21
+ mandate_date_of_signature: Date.new(2010,7,25),
22
+ requested_date: Date.today + 1
23
+ }.merge(attributes)
24
+ end
@@ -0,0 +1,27 @@
1
+ # Borrowed from rspec-rails
2
+ # https://github.com/rspec/rspec-rails/blob/master/lib/rspec/rails/extensions/active_record/base.rb
3
+
4
+ module ::ActiveModel::Validations
5
+ # Extension to enhance `to have` on AR Model instances. Calls
6
+ # model.valid? in order to prepare the object's errors object. Accepts
7
+ # a :context option to specify the validation context.
8
+ #
9
+ # You can also use this to specify the content of the error messages.
10
+ #
11
+ # @example
12
+ #
13
+ # expect(model).to have(:no).errors_on(:attribute)
14
+ # expect(model).to have(1).error_on(:attribute)
15
+ # expect(model).to have(n).errors_on(:attribute)
16
+ # expect(model).to have(n).errors_on(:attribute, context: :create)
17
+ #
18
+ # expect(model.errors_on(:attribute)).to include("can't be blank")
19
+ def errors_on(attribute, options = {})
20
+ valid_args = [options[:context]].compact
21
+ self.valid?(*valid_args)
22
+
23
+ [self.errors[attribute]].flatten.compact
24
+ end
25
+
26
+ alias :error_on :errors_on
27
+ end
@@ -0,0 +1,134 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe SEPA::Transaction do
5
+ describe :new do
6
+ it 'should have default for reference' do
7
+ expect(SEPA::Transaction.new.reference).to eq('NOTPROVIDED')
8
+ end
9
+
10
+ it 'should have default for requested_date' do
11
+ expect(SEPA::Transaction.new.requested_date).to eq(Date.new(1999, 1, 1))
12
+ end
13
+
14
+ it 'should have default for batch_booking' do
15
+ expect(SEPA::Transaction.new.batch_booking).to eq(true)
16
+ end
17
+ end
18
+
19
+ context 'Name' do
20
+ it 'should accept valid value' do
21
+ expect(SEPA::Transaction).to accept('Manfred Mustermann III.', 'Zahlemann & Söhne GbR', 'X' * 70, for: :name)
22
+ end
23
+
24
+ it 'should not accept invalid value' do
25
+ expect(SEPA::Transaction).not_to accept(nil, '', 'X' * 71, for: :name)
26
+ end
27
+ end
28
+
29
+ context 'Adress' do
30
+ context 'with address_line' do
31
+ it 'should accept valid value' do
32
+ expect(SEPA::Transaction).to accept(SEPA::DebtorAddress.new(
33
+ country_code: "CH",
34
+ address_line1: "Musterstrasse 123",
35
+ address_line2: "1234 Musterstadt"
36
+ ), for: :debtor_address)
37
+ end
38
+
39
+ it 'should accept valid value' do
40
+ expect(SEPA::Transaction).to accept(SEPA::CreditorAddress.new(
41
+ country_code: "CH",
42
+ address_line1: "Musterstrasse 123",
43
+ address_line2: "1234 Musterstadt"
44
+ ), for: :creditor_address)
45
+ end
46
+ end
47
+
48
+ context 'with individual address fields' do
49
+ it 'should accept valid value' do
50
+ expect(SEPA::Transaction).to accept(SEPA::DebtorAddress.new(
51
+ country_code: "CH",
52
+ street_name: 'Mustergasse',
53
+ building_number: '123',
54
+ post_code: '1234',
55
+ town_name: 'Musterstadt'
56
+ ), for: :debtor_address)
57
+ end
58
+
59
+ it 'should accept valid value' do
60
+ expect(SEPA::Transaction).to accept(SEPA::CreditorAddress.new(
61
+ country_code: "CH",
62
+ street_name: 'Mustergasse',
63
+ building_number: '123',
64
+ post_code: '1234',
65
+ town_name: 'Musterstadt'
66
+ ), for: :creditor_address)
67
+ end
68
+ end
69
+
70
+ it 'should not accept invalid value' do
71
+ expect(SEPA::Transaction).not_to accept('', {} , for: :name)
72
+ end
73
+ end
74
+
75
+ context 'IBAN' do
76
+ it 'should accept valid value' do
77
+ expect(SEPA::Transaction).to accept('DE21500500009876543210', 'PL61109010140000071219812874', for: :iban)
78
+ end
79
+
80
+ it 'should not accept invalid value' do
81
+ expect(SEPA::Transaction).not_to accept(nil, '', 'invalid', for: :iban)
82
+ end
83
+ end
84
+
85
+ context 'BIC' do
86
+ it 'should accept valid value' do
87
+ expect(SEPA::Transaction).to accept('DEUTDEFF', 'DEUTDEFF500', 'SPUEDE2UXXX', for: :bic)
88
+ end
89
+
90
+ it 'should not accept invalid value' do
91
+ expect(SEPA::Transaction).not_to accept('', 'invalid', for: :bic)
92
+ end
93
+ end
94
+
95
+ context 'Amount' do
96
+ it 'should accept valid value' do
97
+ expect(SEPA::Transaction).to accept(0.01, 1, 100, 100.00, 99.99, 1234567890.12, BigDecimal('10'), '42', '42.51', '42.512', 1.23456, for: :amount)
98
+ end
99
+
100
+ it 'should not accept invalid value' do
101
+ expect(SEPA::Transaction).not_to accept(nil, 0, -3, 'xz', for: :amount)
102
+ end
103
+ end
104
+
105
+ context 'Reference' do
106
+ it 'should accept valid value' do
107
+ expect(SEPA::Transaction).to accept(nil, 'ABC-1234/78.0', 'X' * 35, for: :reference)
108
+ end
109
+
110
+ it 'should not accept invalid value' do
111
+ expect(SEPA::Transaction).not_to accept('', 'X' * 36, for: :reference)
112
+ end
113
+ end
114
+
115
+ context 'Remittance information' do
116
+ it 'should allow valid value' do
117
+ expect(SEPA::Transaction).to accept(nil, 'Bonus', 'X' * 140, for: :remittance_information)
118
+ end
119
+
120
+ it 'should not allow invalid value' do
121
+ expect(SEPA::Transaction).not_to accept('', 'X' * 141, for: :remittance_information)
122
+ end
123
+ end
124
+
125
+ context 'Currency' do
126
+ it 'should allow valid values' do
127
+ expect(SEPA::Transaction).to accept('EUR', 'CHF', 'SEK', for: :currency)
128
+ end
129
+
130
+ it 'should not allow invalid values' do
131
+ expect(SEPA::Transaction).not_to accept('', 'EURO', 'ABCDEF', for: :currency)
132
+ end
133
+ end
134
+ end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Credit Transfer Initiation' do
4
+ it "should validate example file" do
5
+ expect(File.read('spec/examples/pain.001.002.03.xml')).to validate_against('pain.001.002.03.xsd')
6
+ expect(File.read('spec/examples/pain.001.003.03.xml')).to validate_against('pain.001.003.03.xsd')
7
+ end
8
+
9
+ it 'should not validate dummy string' do
10
+ expect('foo').not_to validate_against('pain.001.002.03.xsd')
11
+ expect('foo').not_to validate_against('pain.001.003.03.xsd')
12
+ end
13
+ end
14
+
15
+ describe 'Direct Debit Initiation' do
16
+ it 'should validate example file' do
17
+ expect(File.read('spec/examples/pain.008.002.02.xml')).to validate_against('pain.008.002.02.xsd')
18
+ expect(File.read('spec/examples/pain.008.003.02.xml')).to validate_against('pain.008.003.02.xsd')
19
+ end
20
+
21
+ it 'should not validate dummy string' do
22
+ expect('foo').not_to validate_against('pain.008.002.02.xsd')
23
+ expect('foo').not_to validate_against('pain.008.003.02.xsd')
24
+ end
25
+ end
@@ -0,0 +1,99 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe SEPA::IBANValidator do
5
+ class Validatable
6
+ include ActiveModel::Model
7
+ attr_accessor :iban, :iban_the_terrible
8
+ validates_with SEPA::IBANValidator, message: "%{value} seems wrong"
9
+ validates_with SEPA::IBANValidator, field_name: :iban_the_terrible
10
+ end
11
+
12
+ it 'should accept valid IBAN' do
13
+ expect(Validatable).to accept('DE21500500009876543210', 'DE87200500001234567890', for: [:iban, :iban_the_terrible])
14
+ end
15
+
16
+ it 'should not accept an invalid IBAN' do
17
+ expect(Validatable).not_to accept('', 'xxx', # Oviously no IBAN
18
+ 'DE22500500009876543210', # wrong checksum
19
+ 'DE2150050000987654321', # too short
20
+ 'de87200500001234567890', # downcase characters
21
+ 'DE87 2005 0000 1234 5678 90', # spaces included
22
+ for: [:iban, :iban_the_terrible])
23
+ end
24
+
25
+ it "should customize error message" do
26
+ v = Validatable.new(:iban => 'xxx')
27
+ v.valid?
28
+ expect(v.errors[:iban]).to eq(['xxx seems wrong'])
29
+ end
30
+ end
31
+
32
+ describe SEPA::BICValidator do
33
+ class Validatable
34
+ include ActiveModel::Model
35
+ attr_accessor :bic, :custom_bic
36
+ validates_with SEPA::BICValidator, message: "%{value} seems wrong"
37
+ validates_with SEPA::BICValidator, field_name: :custom_bic
38
+ end
39
+
40
+ it 'should accept valid BICs' do
41
+ expect(Validatable).to accept('DEUTDEDBDUE', 'DUSSDEDDXXX', for: [:bic, :custom_bic])
42
+ end
43
+
44
+ it 'should not accept an invalid BIC' do
45
+ expect(Validatable).not_to accept('', 'GENODE61HR', 'DEUTDEDBDUEDEUTDEDBDUE', for: [:bic, :custom_bic])
46
+ end
47
+
48
+ it "should customize error message" do
49
+ v = Validatable.new(:bic => 'xxx')
50
+ v.valid?
51
+ expect(v.errors[:bic]).to eq(['xxx seems wrong'])
52
+ end
53
+ end
54
+
55
+ describe SEPA::CreditorIdentifierValidator do
56
+ class Validatable
57
+ include ActiveModel::Model
58
+ attr_accessor :creditor_identifier, :crid
59
+ validates_with SEPA::CreditorIdentifierValidator, message: "%{value} seems wrong"
60
+ validates_with SEPA::CreditorIdentifierValidator, field_name: :crid
61
+ end
62
+
63
+ it 'should accept valid creditor_identifier' do
64
+ expect(Validatable).to accept('DE98ZZZ09999999999', 'AT12ZZZ00000000001', 'FR12ZZZ123456', 'NL97ZZZ123456780001', for: [:creditor_identifier, :crid])
65
+ end
66
+
67
+ it 'should not accept an invalid creditor_identifier' do
68
+ expect(Validatable).not_to accept('', 'xxx', 'DE98ZZZ099999999990', for: [:creditor_identifier, :crid])
69
+ end
70
+
71
+ it "should customize error message" do
72
+ v = Validatable.new(:creditor_identifier => 'xxx')
73
+ v.valid?
74
+ expect(v.errors[:creditor_identifier]).to eq(['xxx seems wrong'])
75
+ end
76
+ end
77
+
78
+ describe SEPA::MandateIdentifierValidator do
79
+ class Validatable
80
+ include ActiveModel::Model
81
+ attr_accessor :mandate_id, :mid
82
+ validates_with SEPA::MandateIdentifierValidator, message: "%{value} seems wrong"
83
+ validates_with SEPA::MandateIdentifierValidator, field_name: :mid
84
+ end
85
+
86
+ it 'should accept valid mandate_identifier' do
87
+ expect(Validatable).to accept('XYZ-123', "+?/-:().,'", 'X' * 35, for: [:mandate_id, :mid])
88
+ end
89
+
90
+ it 'should not accept an invalid mandate_identifier' do
91
+ expect(Validatable).not_to accept(nil, '', 'X' * 36, 'ABC 123', '#/*', 'Ümläüt', for: [:mandate_id, :mid])
92
+ end
93
+
94
+ it "should customize error message" do
95
+ v = Validatable.new(:mandate_id => 'ABC 123')
96
+ v.valid?
97
+ expect(v.errors[:mandate_id]).to eq(['ABC 123 seems wrong'])
98
+ end
99
+ end
metadata ADDED
@@ -0,0 +1,250 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sepa_king_codeur
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.12.1
5
+ platform: ruby
6
+ authors:
7
+ - Georg Leciejewski
8
+ - Georg Ledermann
9
+ - Codeur
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2021-07-08 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: activemodel
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - ">="
20
+ - !ruby/object:Gem::Version
21
+ version: '3.1'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ version: '3.1'
29
+ - !ruby/object:Gem::Dependency
30
+ name: iban-tools
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ - !ruby/object:Gem::Dependency
44
+ name: nokogiri
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ - !ruby/object:Gem::Dependency
58
+ name: bundler
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ - !ruby/object:Gem::Dependency
72
+ name: coveralls
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ - !ruby/object:Gem::Dependency
86
+ name: rake
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ type: :development
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ - !ruby/object:Gem::Dependency
100
+ name: rspec
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ type: :development
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ - !ruby/object:Gem::Dependency
114
+ name: simplecov
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ type: :development
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ description: Implemention of pain.001.002.03 and pain.008.002.02 (ISO 20022)
128
+ email:
129
+ - gl@salesking.eu
130
+ - mail@georg-ledermann.de
131
+ - dev@codeur.com
132
+ executables: []
133
+ extensions: []
134
+ extra_rdoc_files: []
135
+ files:
136
+ - ".gitignore"
137
+ - ".rspec"
138
+ - ".travis.yml"
139
+ - CONTRIBUTING.md
140
+ - Gemfile
141
+ - LICENSE.txt
142
+ - README.md
143
+ - Rakefile
144
+ - gemfiles/Gemfile-activemodel-3.1.x
145
+ - gemfiles/Gemfile-activemodel-3.2.x
146
+ - gemfiles/Gemfile-activemodel-4.0.x
147
+ - gemfiles/Gemfile-activemodel-4.1.x
148
+ - gemfiles/Gemfile-activemodel-4.2.x
149
+ - gemfiles/Gemfile-activemodel-5.0.x
150
+ - gemfiles/Gemfile-activemodel-5.1.x
151
+ - gemfiles/Gemfile-activemodel-5.2.x
152
+ - gemfiles/Gemfile-activemodel-6.0.x
153
+ - lib/schema/pain.001.001.03.ch.02.xsd
154
+ - lib/schema/pain.001.001.03.xsd
155
+ - lib/schema/pain.001.002.03.xsd
156
+ - lib/schema/pain.001.003.03.xsd
157
+ - lib/schema/pain.008.001.02.xsd
158
+ - lib/schema/pain.008.002.02.xsd
159
+ - lib/schema/pain.008.003.02.xsd
160
+ - lib/sepa_king.rb
161
+ - lib/sepa_king/account.rb
162
+ - lib/sepa_king/account/creditor_account.rb
163
+ - lib/sepa_king/account/creditor_address.rb
164
+ - lib/sepa_king/account/debtor_account.rb
165
+ - lib/sepa_king/account/debtor_address.rb
166
+ - lib/sepa_king/converter.rb
167
+ - lib/sepa_king/error.rb
168
+ - lib/sepa_king/message.rb
169
+ - lib/sepa_king/message/credit_transfer.rb
170
+ - lib/sepa_king/message/direct_debit.rb
171
+ - lib/sepa_king/transaction.rb
172
+ - lib/sepa_king/transaction/credit_transfer_transaction.rb
173
+ - lib/sepa_king/transaction/direct_debit_transaction.rb
174
+ - lib/sepa_king/validator.rb
175
+ - lib/sepa_king/version.rb
176
+ - sepa_king.gemspec
177
+ - spec/account_spec.rb
178
+ - spec/converter_spec.rb
179
+ - spec/credit_transfer_spec.rb
180
+ - spec/credit_transfer_transaction_spec.rb
181
+ - spec/creditor_account_spec.rb
182
+ - spec/debtor_account_spec.rb
183
+ - spec/debtor_address_spec.rb
184
+ - spec/direct_debit_spec.rb
185
+ - spec/direct_debit_transaction_spec.rb
186
+ - spec/examples/pain.001.001.03.ch.02.xml
187
+ - spec/examples/pain.001.001.03.xml
188
+ - spec/examples/pain.001.002.03.xml
189
+ - spec/examples/pain.001.003.03.xml
190
+ - spec/examples/pain.008.002.02.xml
191
+ - spec/examples/pain.008.003.02.xml
192
+ - spec/message_spec.rb
193
+ - spec/spec_helper.rb
194
+ - spec/support/active_model.rb
195
+ - spec/support/custom_matcher.rb
196
+ - spec/support/factories.rb
197
+ - spec/support/validations.rb
198
+ - spec/transaction_spec.rb
199
+ - spec/validation_spec.rb
200
+ - spec/validator_spec.rb
201
+ homepage: http://github.com/codeur/sepa_king
202
+ licenses:
203
+ - MIT
204
+ metadata:
205
+ homepage_uri: http://github.com/codeur/sepa_king
206
+ source_code_uri: https://github.com/codeur/sepa_king
207
+ post_install_message:
208
+ rdoc_options: []
209
+ require_paths:
210
+ - lib
211
+ required_ruby_version: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: '2.2'
216
+ required_rubygems_version: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - ">="
219
+ - !ruby/object:Gem::Version
220
+ version: '0'
221
+ requirements: []
222
+ rubygems_version: 3.2.7
223
+ signing_key:
224
+ specification_version: 4
225
+ summary: Ruby gem for creating SEPA XML files
226
+ test_files:
227
+ - spec/account_spec.rb
228
+ - spec/converter_spec.rb
229
+ - spec/credit_transfer_spec.rb
230
+ - spec/credit_transfer_transaction_spec.rb
231
+ - spec/creditor_account_spec.rb
232
+ - spec/debtor_account_spec.rb
233
+ - spec/debtor_address_spec.rb
234
+ - spec/direct_debit_spec.rb
235
+ - spec/direct_debit_transaction_spec.rb
236
+ - spec/examples/pain.001.001.03.ch.02.xml
237
+ - spec/examples/pain.001.001.03.xml
238
+ - spec/examples/pain.001.002.03.xml
239
+ - spec/examples/pain.001.003.03.xml
240
+ - spec/examples/pain.008.002.02.xml
241
+ - spec/examples/pain.008.003.02.xml
242
+ - spec/message_spec.rb
243
+ - spec/spec_helper.rb
244
+ - spec/support/active_model.rb
245
+ - spec/support/custom_matcher.rb
246
+ - spec/support/factories.rb
247
+ - spec/support/validations.rb
248
+ - spec/transaction_spec.rb
249
+ - spec/validation_spec.rb
250
+ - spec/validator_spec.rb