ibandit 0.11.13 → 0.11.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/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.
|