sepa_king_codeur 0.12.1

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.
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