ibandit 0.11.13 → 0.11.14
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +27 -1
- data/data/structures.yml +11 -0
- data/lib/ibandit/constants.rb +2 -1
- data/lib/ibandit/iban.rb +15 -3
- data/lib/ibandit/local_details_cleaner.rb +41 -1
- data/lib/ibandit/pseudo_iban_splitter.rb +1 -2
- data/lib/ibandit/version.rb +1 -1
- data/spec/ibandit/iban_spec.rb +127 -0
- data/spec/ibandit/local_details_cleaner_spec.rb +32 -0
- data/spec/ibandit/pseudo_iban_assembler_spec.rb +51 -0
- data/spec/ibandit/pseudo_iban_splitter_spec.rb +9 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3060e96d5d67d57e9759c68bfd68b4174b65291c
|
4
|
+
data.tar.gz: 259f05d4b483b3fc7d96fa22c9904301063ad8fc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b9c623c432caaefd6aa60fbbf63f3c75380e7723f71164b21d3d6279b71a7416b96b7812932673b24cf09d849d3dfc2106792527e12f47836f4c14f294fbc305
|
7
|
+
data.tar.gz: 6244f013565d3f83c28f8d4d244a80b1fc89d8cd533607f02ac919331e1bba02ea79e5f3576274fc990bc34ee078d2cfcca53a3d973f0158ab76ae04ebc7f776
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -46,6 +46,7 @@ For example:
|
|
46
46
|
| Malta | :white_check_mark: | :white_check_mark: | |
|
47
47
|
| Netherlands | :white_check_mark: | :white_check_mark: | |
|
48
48
|
| Norway | :white_check_mark: | :white_check_mark: | |
|
49
|
+
| New Zealand | | | :white_check_mark: |
|
49
50
|
| Poland | :white_check_mark: | :white_check_mark: | |
|
50
51
|
| Portugal | :white_check_mark: | :white_check_mark: | |
|
51
52
|
| Romania | :white_check_mark: | :white_check_mark: | |
|
@@ -516,6 +517,31 @@ iban.country_code # => "AU"
|
|
516
517
|
iban.branch_code # => "123456"
|
517
518
|
iban.account_number # => "123456789"
|
518
519
|
iban.iban # => nil
|
520
|
+
|
521
|
+
# New Zealand
|
522
|
+
iban = Ibandit::IBAN.new(
|
523
|
+
country_code: 'NZ',
|
524
|
+
bank_code: '01',
|
525
|
+
branch_code: '5659',
|
526
|
+
account_number: '3333333-44' # 7 digit account number and 2/3-digit account suffix
|
527
|
+
)
|
528
|
+
iban.pseudo_iban # => "NZZZ0156593333333044"
|
529
|
+
iban.iban # => nil
|
530
|
+
|
531
|
+
iban = Ibandit::IBAN.new(
|
532
|
+
country_code: 'NZ',
|
533
|
+
account_number: '01-5659-3333333-44'
|
534
|
+
)
|
535
|
+
iban.pseudo_iban # => "NZZZ0156593333333044"
|
536
|
+
iban.bank_code # => "01"
|
537
|
+
iban.branch_code # => "5659"
|
538
|
+
iban.account_number # => "3333333044"
|
539
|
+
|
540
|
+
iban = Ibandit::IBAN.new('NZZZ0156593333333044')
|
541
|
+
iban.country_code # => "NZ"
|
542
|
+
iban.bank_code # => "01"
|
543
|
+
iban.branch_code # => "5659"
|
544
|
+
iban.account_number # => "3333333044"
|
519
545
|
```
|
520
546
|
|
521
547
|
## Other libraries
|
@@ -528,4 +554,4 @@ details.
|
|
528
554
|
|
529
555
|
---
|
530
556
|
|
531
|
-
GoCardless ♥ open source. If you do too, come [join us](https://gocardless.com/about/jobs/software-engineer).
|
557
|
+
GoCardless ♥ open source. If you do too, come [join us](https://gocardless.com/about/jobs/software-engineer).
|
data/data/structures.yml
CHANGED
@@ -647,6 +647,17 @@ NL:
|
|
647
647
|
:account_number_format: "\\d{6}\\d{1}"
|
648
648
|
:local_check_digit_position: 15
|
649
649
|
:local_check_digit_length: 1
|
650
|
+
NZ:
|
651
|
+
:bank_code_length: 2
|
652
|
+
:branch_code_length: 4
|
653
|
+
:account_number_length: 10
|
654
|
+
:bank_code_format: "\\d{2}"
|
655
|
+
:branch_code_format: "\\d{4}"
|
656
|
+
:account_number_format: "\\d{7}\\d{3}"
|
657
|
+
:pseudo_iban_bank_code_length: 2
|
658
|
+
:pseudo_iban_branch_code_length: 4
|
659
|
+
:pseudo_iban_account_number_length: 10
|
660
|
+
:national_id_length: 6
|
650
661
|
PK:
|
651
662
|
:bank_code_position: 5
|
652
663
|
:bank_code_length: 4
|
data/lib/ibandit/constants.rb
CHANGED
@@ -4,7 +4,7 @@ module Ibandit
|
|
4
4
|
HR HU IE IS IT LT LU LV MC MT NL NO PL
|
5
5
|
PT RO SE SI SK SM].freeze
|
6
6
|
|
7
|
-
PSEUDO_IBAN_COUNTRY_CODES = %w[AU SE].freeze
|
7
|
+
PSEUDO_IBAN_COUNTRY_CODES = %w[AU SE NZ].freeze
|
8
8
|
DECONSTRUCTABLE_IBAN_COUNTRY_CODES =
|
9
9
|
CONSTRUCTABLE_IBAN_COUNTRY_CODES - PSEUDO_IBAN_COUNTRY_CODES
|
10
10
|
|
@@ -13,6 +13,7 @@ module Ibandit
|
|
13
13
|
PSEUDO_IBAN_PADDING_CHARACTER_FOR = {
|
14
14
|
"SE" => "X", # Using X for backwards compatibility
|
15
15
|
"AU" => "_", # Using _ because AU account numbers are alphanumeric
|
16
|
+
"NZ" => "_",
|
16
17
|
}.freeze
|
17
18
|
|
18
19
|
SUPPORTED_COUNTRY_CODES = (
|
data/lib/ibandit/iban.rb
CHANGED
@@ -3,8 +3,8 @@ require "yaml"
|
|
3
3
|
module Ibandit
|
4
4
|
class IBAN
|
5
5
|
attr_reader :errors, :iban, :country_code, :check_digits, :bank_code,
|
6
|
-
:branch_code, :
|
7
|
-
:
|
6
|
+
:branch_code, :swift_bank_code, :swift_branch_code,
|
7
|
+
:swift_account_number, :source
|
8
8
|
|
9
9
|
def initialize(argument)
|
10
10
|
if argument.is_a?(String)
|
@@ -52,6 +52,18 @@ module Ibandit
|
|
52
52
|
national_id.slice(0, structure[:national_id_length])
|
53
53
|
end
|
54
54
|
|
55
|
+
def account_number
|
56
|
+
return @account_number unless country_code == "NZ"
|
57
|
+
|
58
|
+
@account_number[0..6]
|
59
|
+
end
|
60
|
+
|
61
|
+
def account_number_suffix
|
62
|
+
return nil unless country_code == "NZ"
|
63
|
+
|
64
|
+
@account_number[7..-1]
|
65
|
+
end
|
66
|
+
|
55
67
|
def local_check_digits
|
56
68
|
return unless decomposable? && structure[:local_check_digit_position]
|
57
69
|
|
@@ -70,7 +82,7 @@ module Ibandit
|
|
70
82
|
country_code: country_code,
|
71
83
|
bank_code: bank_code,
|
72
84
|
branch_code: branch_code,
|
73
|
-
account_number: account_number,
|
85
|
+
account_number: @account_number,
|
74
86
|
).assemble
|
75
87
|
end
|
76
88
|
|
@@ -34,7 +34,8 @@ module Ibandit
|
|
34
34
|
case country_code
|
35
35
|
when "AT", "CY", "DE", "FI", "LT", "LU", "LV", "NL", "RO", "SI", "SK"
|
36
36
|
%i[bank_code account_number]
|
37
|
-
when "BE", "CZ", "DK", "EE", "ES", "HR",
|
37
|
+
when "BE", "CZ", "DK", "EE", "ES", "HR",
|
38
|
+
"HU", "IS", "NO", "PL", "SE", "NZ"
|
38
39
|
%i[account_number]
|
39
40
|
when "GB", "IE", "MT"
|
40
41
|
if Ibandit.bic_finder.nil? then %i[bank_code branch_code account_number]
|
@@ -434,6 +435,45 @@ module Ibandit
|
|
434
435
|
}
|
435
436
|
end
|
436
437
|
|
438
|
+
def self.clean_nz_details(local_details)
|
439
|
+
# This method supports being passed the component parts of the NZ account
|
440
|
+
# number, or a single 15/16 digit string (BBbbbb-AAAAAAA-0SS) in the
|
441
|
+
# account number field.
|
442
|
+
#
|
443
|
+
# When given a 15/16 digit string, the component parts (i.e bank_code,
|
444
|
+
# branch_code and account_number) are extracted, with the 7-digit account
|
445
|
+
# number body and 2/3-digit account number suffix making up the actual
|
446
|
+
# account_number field.
|
447
|
+
if local_details[:bank_code] && local_details[:branch_code]
|
448
|
+
bank_code = local_details[:bank_code]
|
449
|
+
branch_code = local_details[:branch_code]
|
450
|
+
account_number = local_details[:account_number].tr("-", "")
|
451
|
+
else
|
452
|
+
cleaned_account_number = local_details[:account_number].tr("-", "")
|
453
|
+
bank_code = cleaned_account_number.slice(0, 2)
|
454
|
+
branch_code = cleaned_account_number.slice(2, 4)
|
455
|
+
account_number = cleaned_account_number[6..-1]
|
456
|
+
end
|
457
|
+
|
458
|
+
if account_number.length == 9
|
459
|
+
# > Some banks (such as BNZ) include three digits of the suffix in their
|
460
|
+
# > presentation of the account number to the end customer. Other banks
|
461
|
+
# > only show the last two digits of the suffix to the end customer.
|
462
|
+
# > Technically, all banks have three digit suffixes, it's just that the
|
463
|
+
# > first digit of the suffix is always 0 so it's usually ignored.
|
464
|
+
# > [https://en.wikipedia.org/wiki/New_Zealand_bank_account_number]
|
465
|
+
#
|
466
|
+
# Here, we insert the zero in cases where it is ignored.
|
467
|
+
account_number = account_number[0..6] + "0" + account_number[7..8]
|
468
|
+
end
|
469
|
+
|
470
|
+
{
|
471
|
+
bank_code: bank_code,
|
472
|
+
branch_code: branch_code,
|
473
|
+
account_number: account_number,
|
474
|
+
}
|
475
|
+
end
|
476
|
+
|
437
477
|
def self.clean_pl_details(local_details)
|
438
478
|
# This method supports being passed the component IBAN parts, as defined
|
439
479
|
# by SWIFT, or a single 26 digit string.
|
@@ -31,8 +31,7 @@ module Ibandit
|
|
31
31
|
|
32
32
|
def branch_code
|
33
33
|
return unless country_code_valid?
|
34
|
-
pseudo_iban_part(branch_code_start_index,
|
35
|
-
:pseudo_iban_branch_code_length)
|
34
|
+
pseudo_iban_part(branch_code_start_index, :pseudo_iban_branch_code_length)
|
36
35
|
end
|
37
36
|
|
38
37
|
def account_number
|
data/lib/ibandit/version.rb
CHANGED
data/spec/ibandit/iban_spec.rb
CHANGED
@@ -54,6 +54,7 @@ describe Ibandit::IBAN do
|
|
54
54
|
its(:bank_code) { is_expected.to eq("WEST") }
|
55
55
|
its(:branch_code) { is_expected.to eq("123456") }
|
56
56
|
its(:account_number) { is_expected.to eq("98765432") }
|
57
|
+
its(:account_number_suffix) { is_expected.to eq(nil) }
|
57
58
|
its(:swift_bank_code) { is_expected.to eq("WEST") }
|
58
59
|
its(:swift_branch_code) { is_expected.to eq("123456") }
|
59
60
|
its(:swift_account_number) { is_expected.to eq("98765432") }
|
@@ -68,6 +69,7 @@ describe Ibandit::IBAN do
|
|
68
69
|
its(:bank_code) { is_expected.to be_nil }
|
69
70
|
its(:branch_code) { is_expected.to be_nil }
|
70
71
|
its(:account_number) { is_expected.to be_nil }
|
72
|
+
its(:account_number_suffix) { is_expected.to be_nil }
|
71
73
|
its(:swift_national_id) { is_expected.to be_nil }
|
72
74
|
its(:bban) { is_expected.to be_nil }
|
73
75
|
its(:local_check_digits) { is_expected.to be_nil }
|
@@ -81,6 +83,7 @@ describe Ibandit::IBAN do
|
|
81
83
|
its(:bank_code) { is_expected.to be_nil }
|
82
84
|
its(:branch_code) { is_expected.to be_nil }
|
83
85
|
its(:account_number) { is_expected.to be_nil }
|
86
|
+
its(:account_number_suffix) { is_expected.to be_nil }
|
84
87
|
its(:swift_bank_code) { is_expected.to eq("800") }
|
85
88
|
its(:swift_branch_code) { is_expected.to be_nil }
|
86
89
|
its(:swift_account_number) { is_expected.to eq("00000075071211203") }
|
@@ -94,6 +97,7 @@ describe Ibandit::IBAN do
|
|
94
97
|
its(:bank_code) { is_expected.to eq("19100") }
|
95
98
|
its(:branch_code) { is_expected.to be_nil }
|
96
99
|
its(:account_number) { is_expected.to eq("0000123438") }
|
100
|
+
its(:account_number_suffix) { is_expected.to be_nil }
|
97
101
|
its(:swift_bank_code) { is_expected.to eq("19100") }
|
98
102
|
its(:swift_branch_code) { is_expected.to be_nil }
|
99
103
|
its(:swift_account_number) { is_expected.to eq("0000123438") }
|
@@ -353,6 +357,119 @@ describe Ibandit::IBAN do
|
|
353
357
|
branch_code: "is invalid")
|
354
358
|
end
|
355
359
|
end
|
360
|
+
|
361
|
+
context "when the IBAN was created with local details for New Zealand" do
|
362
|
+
let(:arg) do
|
363
|
+
{
|
364
|
+
country_code: "NZ",
|
365
|
+
bank_code: "11",
|
366
|
+
branch_code: "2222",
|
367
|
+
account_number: account_number,
|
368
|
+
}
|
369
|
+
end
|
370
|
+
context "with a 3 digit account number suffix" do
|
371
|
+
let(:account_number) { "3333333-944" }
|
372
|
+
|
373
|
+
its(:country_code) { is_expected.to eq("NZ") }
|
374
|
+
its(:bank_code) { is_expected.to eq("11") }
|
375
|
+
its(:branch_code) { is_expected.to eq("2222") }
|
376
|
+
its(:account_number) { is_expected.to eq("3333333") }
|
377
|
+
its(:account_number_suffix) { is_expected.to eq("944") }
|
378
|
+
its(:swift_bank_code) { is_expected.to eq("11") }
|
379
|
+
its(:swift_branch_code) { is_expected.to eq("2222") }
|
380
|
+
its(:swift_account_number) { is_expected.to eq("3333333944") }
|
381
|
+
its(:swift_national_id) { is_expected.to eq("112222") }
|
382
|
+
its(:iban) { is_expected.to be_nil }
|
383
|
+
its(:pseudo_iban) { is_expected.to eq("NZZZ1122223333333944") }
|
384
|
+
its(:valid?) { is_expected.to eq(true) }
|
385
|
+
its(:to_s) { is_expected.to eq("") }
|
386
|
+
end
|
387
|
+
context "with a 2 digit account number suffix" do
|
388
|
+
let(:account_number) { "3333333-44" }
|
389
|
+
|
390
|
+
its(:country_code) { is_expected.to eq("NZ") }
|
391
|
+
its(:bank_code) { is_expected.to eq("11") }
|
392
|
+
its(:branch_code) { is_expected.to eq("2222") }
|
393
|
+
its(:account_number) { is_expected.to eq("3333333") }
|
394
|
+
its(:account_number_suffix) { is_expected.to eq("044") }
|
395
|
+
its(:swift_bank_code) { is_expected.to eq("11") }
|
396
|
+
its(:swift_branch_code) { is_expected.to eq("2222") }
|
397
|
+
its(:swift_account_number) { is_expected.to eq("3333333044") }
|
398
|
+
its(:swift_national_id) { is_expected.to eq("112222") }
|
399
|
+
its(:iban) { is_expected.to be_nil }
|
400
|
+
its(:pseudo_iban) { is_expected.to eq("NZZZ1122223333333044") }
|
401
|
+
its(:valid?) { is_expected.to eq(true) }
|
402
|
+
its(:to_s) { is_expected.to eq("") }
|
403
|
+
end
|
404
|
+
context "with bank and branch code embedded in account_number field" do
|
405
|
+
let(:arg) do
|
406
|
+
{
|
407
|
+
country_code: "NZ",
|
408
|
+
account_number: "11-2222-3333333-44",
|
409
|
+
}
|
410
|
+
end
|
411
|
+
|
412
|
+
its(:country_code) { is_expected.to eq("NZ") }
|
413
|
+
its(:bank_code) { is_expected.to eq("11") }
|
414
|
+
its(:branch_code) { is_expected.to eq("2222") }
|
415
|
+
its(:account_number) { is_expected.to eq("3333333") }
|
416
|
+
its(:account_number_suffix) { is_expected.to eq("044") }
|
417
|
+
its(:swift_bank_code) { is_expected.to eq("11") }
|
418
|
+
its(:swift_branch_code) { is_expected.to eq("2222") }
|
419
|
+
its(:swift_account_number) { is_expected.to eq("3333333044") }
|
420
|
+
its(:swift_national_id) { is_expected.to eq("112222") }
|
421
|
+
its(:iban) { is_expected.to be_nil }
|
422
|
+
its(:pseudo_iban) { is_expected.to eq("NZZZ1122223333333044") }
|
423
|
+
its(:valid?) { is_expected.to eq(true) }
|
424
|
+
its(:to_s) { is_expected.to eq("") }
|
425
|
+
end
|
426
|
+
context "with a bank code embedded in account_number field" do
|
427
|
+
let(:arg) do
|
428
|
+
{
|
429
|
+
country_code: "NZ",
|
430
|
+
account_number: "11-3333333-44",
|
431
|
+
branch_code: "2222",
|
432
|
+
}
|
433
|
+
end
|
434
|
+
|
435
|
+
it "is invalid and has the correct errors" do
|
436
|
+
expect(subject.valid?).to eq(false)
|
437
|
+
expect(subject.errors).to eq(
|
438
|
+
account_number: "is the wrong length (should be 10 characters)",
|
439
|
+
)
|
440
|
+
end
|
441
|
+
end
|
442
|
+
end
|
443
|
+
|
444
|
+
context "when the IBAN was created from a New Zealand pseudo-IBAN" do
|
445
|
+
let(:arg) { "NZZZ1122223333333044" }
|
446
|
+
|
447
|
+
its(:country_code) { is_expected.to eq("NZ") }
|
448
|
+
its(:bank_code) { is_expected.to eq("11") }
|
449
|
+
its(:branch_code) { is_expected.to eq("2222") }
|
450
|
+
its(:account_number) { is_expected.to eq("3333333") }
|
451
|
+
its(:account_number_suffix) { is_expected.to eq("044") }
|
452
|
+
its(:swift_bank_code) { is_expected.to eq("11") }
|
453
|
+
its(:swift_branch_code) { is_expected.to eq("2222") }
|
454
|
+
its(:swift_account_number) { is_expected.to eq("3333333044") }
|
455
|
+
its(:swift_national_id) { is_expected.to eq("112222") }
|
456
|
+
its(:iban) { is_expected.to be_nil }
|
457
|
+
its(:pseudo_iban) { is_expected.to eq("NZZZ1122223333333044") }
|
458
|
+
its(:valid?) { is_expected.to eq(true) }
|
459
|
+
its(:to_s) { is_expected.to eq("") }
|
460
|
+
end
|
461
|
+
|
462
|
+
context "when the input is an invalid New Zealand pseudo-IBAN" do
|
463
|
+
let(:arg) { "NZZZ11222233333330444" }
|
464
|
+
|
465
|
+
its(:iban) { is_expected.to be_nil }
|
466
|
+
its(:pseudo_iban) { is_expected.to eq(arg) }
|
467
|
+
it "is invalid and has the correct errors" do
|
468
|
+
expect(subject.valid?).to eq(false)
|
469
|
+
expect(subject.errors).
|
470
|
+
to eq(account_number: "is the wrong length (should be 10 characters)")
|
471
|
+
end
|
472
|
+
end
|
356
473
|
end
|
357
474
|
|
358
475
|
describe "#to_s" do
|
@@ -2277,6 +2394,16 @@ describe Ibandit::IBAN do
|
|
2277
2394
|
it { is_expected.to_not be_valid }
|
2278
2395
|
end
|
2279
2396
|
|
2397
|
+
context "for a valid New Zealand pseudo-IBAN" do
|
2398
|
+
let(:iban_code) { "NZZZ5566667777777088" }
|
2399
|
+
it { is_expected.to be_valid }
|
2400
|
+
end
|
2401
|
+
|
2402
|
+
context "for an invalid New Zealand pseudo-IBAN" do
|
2403
|
+
let(:iban_code) { "NZZZ55666677777770888" }
|
2404
|
+
it { is_expected.to_not be_valid }
|
2405
|
+
end
|
2406
|
+
|
2280
2407
|
context "for a valid Pakistani IBAN" do
|
2281
2408
|
let(:iban_code) { "PK36 SCBL 0000 0011 2345 6702" }
|
2282
2409
|
it { is_expected.to be_valid }
|
@@ -932,6 +932,38 @@ describe Ibandit::LocalDetailsCleaner do
|
|
932
932
|
end
|
933
933
|
end
|
934
934
|
|
935
|
+
context "New Zealand" do
|
936
|
+
let(:country_code) { "NZ" }
|
937
|
+
let(:bank_code) { "11" }
|
938
|
+
let(:branch_code) { "2222" }
|
939
|
+
let(:account_number) { "3333333044" }
|
940
|
+
|
941
|
+
it { is_expected.to eq(local_details_with_swift) }
|
942
|
+
|
943
|
+
context "with bank and branch codes in the account number" do
|
944
|
+
let(:bank_code) { nil }
|
945
|
+
let(:branch_code) { nil }
|
946
|
+
let(:account_number) { "11-2222-3333333-044" }
|
947
|
+
|
948
|
+
its([:bank_code]) { is_expected.to eq("11") }
|
949
|
+
its([:branch_code]) { is_expected.to eq("2222") }
|
950
|
+
its([:account_number]) { is_expected.to eq("3333333044") }
|
951
|
+
|
952
|
+
context "with a 2-digit account number suffix" do
|
953
|
+
let(:account_number) { "11-2222-3333333-44" }
|
954
|
+
|
955
|
+
its([:bank_code]) { is_expected.to eq("11") }
|
956
|
+
its([:branch_code]) { is_expected.to eq("2222") }
|
957
|
+
its([:account_number]) { is_expected.to eq("3333333044") }
|
958
|
+
end
|
959
|
+
end
|
960
|
+
|
961
|
+
context "without an account number" do
|
962
|
+
let(:account_number) { nil }
|
963
|
+
it { is_expected.to eq(local_details_with_swift) }
|
964
|
+
end
|
965
|
+
end
|
966
|
+
|
935
967
|
context "Poland" do
|
936
968
|
let(:country_code) { "PL" }
|
937
969
|
let(:bank_code) { "10201026" }
|
@@ -87,6 +87,57 @@ describe Ibandit::PseudoIBANAssembler do
|
|
87
87
|
end
|
88
88
|
end
|
89
89
|
|
90
|
+
context "for New Zealand" do
|
91
|
+
context "with valid parameters" do
|
92
|
+
let(:local_details) do
|
93
|
+
{
|
94
|
+
country_code: "NZ",
|
95
|
+
bank_code: "11",
|
96
|
+
branch_code: "2222",
|
97
|
+
account_number: "3333333044",
|
98
|
+
}
|
99
|
+
end
|
100
|
+
|
101
|
+
it { is_expected.to eq("NZZZ1122223333333044") }
|
102
|
+
end
|
103
|
+
|
104
|
+
context "without a bank_code" do
|
105
|
+
let(:local_details) do
|
106
|
+
{
|
107
|
+
country_code: "NZ",
|
108
|
+
branch_code: "5569",
|
109
|
+
account_number: "1234567",
|
110
|
+
}
|
111
|
+
end
|
112
|
+
|
113
|
+
it { is_expected.to be_nil }
|
114
|
+
end
|
115
|
+
|
116
|
+
context "without a branch code" do
|
117
|
+
let(:local_details) do
|
118
|
+
{
|
119
|
+
country_code: "NZ",
|
120
|
+
bank_code: "01",
|
121
|
+
account_number: "1234567",
|
122
|
+
}
|
123
|
+
end
|
124
|
+
|
125
|
+
it { is_expected.to be_nil }
|
126
|
+
end
|
127
|
+
|
128
|
+
context "without an account number" do
|
129
|
+
let(:local_details) do
|
130
|
+
{
|
131
|
+
country_code: "NZ",
|
132
|
+
bank_code: "01",
|
133
|
+
branch_code: "5569",
|
134
|
+
}
|
135
|
+
end
|
136
|
+
|
137
|
+
it { is_expected.to be_nil }
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
90
141
|
context "for a country that does not have pseudo-IBANs" do
|
91
142
|
let(:local_details) do
|
92
143
|
{
|
@@ -15,6 +15,15 @@ describe Ibandit::PseudoIBANSplitter do
|
|
15
15
|
its([:account_number]) { is_expected.to eq("0105723") }
|
16
16
|
end
|
17
17
|
|
18
|
+
context "for a New Zealand pseudo-IBAN" do
|
19
|
+
let(:pseudo_iban) { "NZZZ0156997777777030" }
|
20
|
+
|
21
|
+
its([:country_code]) { is_expected.to eq("NZ") }
|
22
|
+
its([:bank_code]) { is_expected.to eq("01") }
|
23
|
+
its([:branch_code]) { is_expected.to eq("5699") }
|
24
|
+
its([:account_number]) { is_expected.to eq("7777777030") }
|
25
|
+
end
|
26
|
+
|
18
27
|
context "for an australian pseudo-IBAN" do
|
19
28
|
let(:pseudo_iban) { "AUZZ123456123456789" }
|
20
29
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ibandit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.11.
|
4
|
+
version: 0.11.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GoCardless
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-07-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -206,7 +206,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
206
206
|
version: '0'
|
207
207
|
requirements: []
|
208
208
|
rubyforge_project:
|
209
|
-
rubygems_version: 2.6.
|
209
|
+
rubygems_version: 2.6.13
|
210
210
|
signing_key:
|
211
211
|
specification_version: 4
|
212
212
|
summary: Convert national banking details into IBANs, and vice-versa.
|