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.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/.rspec +2 -0
- data/.travis.yml +37 -0
- data/CONTRIBUTING.md +38 -0
- data/Gemfile +2 -0
- data/LICENSE.txt +22 -0
- data/README.md +297 -0
- data/Rakefile +6 -0
- data/gemfiles/Gemfile-activemodel-3.1.x +5 -0
- data/gemfiles/Gemfile-activemodel-3.2.x +5 -0
- data/gemfiles/Gemfile-activemodel-4.0.x +5 -0
- data/gemfiles/Gemfile-activemodel-4.1.x +5 -0
- data/gemfiles/Gemfile-activemodel-4.2.x +5 -0
- data/gemfiles/Gemfile-activemodel-5.0.x +5 -0
- data/gemfiles/Gemfile-activemodel-5.1.x +5 -0
- data/gemfiles/Gemfile-activemodel-5.2.x +5 -0
- data/gemfiles/Gemfile-activemodel-6.0.x +5 -0
- data/lib/schema/pain.001.001.03.ch.02.xsd +1212 -0
- data/lib/schema/pain.001.001.03.xsd +921 -0
- data/lib/schema/pain.001.002.03.xsd +450 -0
- data/lib/schema/pain.001.003.03.xsd +474 -0
- data/lib/schema/pain.008.001.02.xsd +879 -0
- data/lib/schema/pain.008.002.02.xsd +597 -0
- data/lib/schema/pain.008.003.02.xsd +614 -0
- data/lib/sepa_king.rb +19 -0
- data/lib/sepa_king/account.rb +19 -0
- data/lib/sepa_king/account/creditor_account.rb +8 -0
- data/lib/sepa_king/account/creditor_address.rb +37 -0
- data/lib/sepa_king/account/debtor_account.rb +5 -0
- data/lib/sepa_king/account/debtor_address.rb +37 -0
- data/lib/sepa_king/converter.rb +51 -0
- data/lib/sepa_king/error.rb +4 -0
- data/lib/sepa_king/message.rb +169 -0
- data/lib/sepa_king/message/credit_transfer.rb +137 -0
- data/lib/sepa_king/message/direct_debit.rb +207 -0
- data/lib/sepa_king/transaction.rb +56 -0
- data/lib/sepa_king/transaction/credit_transfer_transaction.rb +31 -0
- data/lib/sepa_king/transaction/direct_debit_transaction.rb +56 -0
- data/lib/sepa_king/validator.rb +57 -0
- data/lib/sepa_king/version.rb +3 -0
- data/sepa_king.gemspec +33 -0
- data/spec/account_spec.rb +42 -0
- data/spec/converter_spec.rb +74 -0
- data/spec/credit_transfer_spec.rb +520 -0
- data/spec/credit_transfer_transaction_spec.rb +74 -0
- data/spec/creditor_account_spec.rb +23 -0
- data/spec/debtor_account_spec.rb +12 -0
- data/spec/debtor_address_spec.rb +12 -0
- data/spec/direct_debit_spec.rb +657 -0
- data/spec/direct_debit_transaction_spec.rb +69 -0
- data/spec/examples/pain.001.001.03.ch.02.xml +172 -0
- data/spec/examples/pain.001.001.03.xml +89 -0
- data/spec/examples/pain.001.002.03.xml +89 -0
- data/spec/examples/pain.001.003.03.xml +89 -0
- data/spec/examples/pain.008.002.02.xml +134 -0
- data/spec/examples/pain.008.003.02.xml +134 -0
- data/spec/message_spec.rb +128 -0
- data/spec/spec_helper.rb +33 -0
- data/spec/support/active_model.rb +30 -0
- data/spec/support/custom_matcher.rb +60 -0
- data/spec/support/factories.rb +24 -0
- data/spec/support/validations.rb +27 -0
- data/spec/transaction_spec.rb +134 -0
- data/spec/validation_spec.rb +25 -0
- data/spec/validator_spec.rb +99 -0
- 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
|