ibandit 0.11.28 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.rubocop.yml +2 -5
- data/.rubocop_todo.yml +70 -15
- data/.travis.yml +4 -4
- data/CHANGELOG.md +7 -0
- data/Gemfile +1 -3
- data/README.md +6 -6
- data/data/structures.yml +4 -4
- data/ibandit.gemspec +2 -2
- data/lib/ibandit.rb +6 -3
- data/lib/ibandit/check_digit.rb +2 -0
- data/lib/ibandit/constants.rb +3 -1
- data/lib/ibandit/errors.rb +2 -0
- data/lib/ibandit/german_details_converter.rb +4 -1
- data/lib/ibandit/iban.rb +8 -4
- data/lib/ibandit/iban_assembler.rb +2 -0
- data/lib/ibandit/iban_splitter.rb +8 -7
- data/lib/ibandit/local_details_cleaner.rb +38 -35
- data/lib/ibandit/pseudo_iban_assembler.rb +5 -1
- data/lib/ibandit/pseudo_iban_splitter.rb +7 -1
- data/lib/ibandit/sweden/bank_lookup.rb +2 -0
- data/lib/ibandit/sweden/local_details_converter.rb +6 -2
- data/lib/ibandit/sweden/validator.rb +2 -0
- data/lib/ibandit/version.rb +3 -1
- data/spec/ibandit/constants_spec.rb +2 -0
- data/spec/ibandit/german_details_converter_spec.rb +9 -3
- data/spec/ibandit/iban_assembler_spec.rb +92 -3
- data/spec/ibandit/iban_spec.rb +197 -17
- data/spec/ibandit/iban_splitter_spec.rb +6 -0
- data/spec/ibandit/local_details_cleaner_spec.rb +135 -5
- data/spec/ibandit/pseudo_iban_assembler_spec.rb +2 -0
- data/spec/ibandit/pseudo_iban_splitter_spec.rb +2 -0
- data/spec/ibandit/structure_spec.rb +5 -3
- data/spec/ibandit/sweden/local_details_converter_spec.rb +3 -0
- data/spec/ibandit/sweden/validator_spec.rb +35 -0
- data/spec/spec_helper.rb +2 -0
- metadata +5 -6
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "spec_helper"
|
2
4
|
|
3
5
|
describe Ibandit::IBANSplitter do
|
@@ -5,6 +7,7 @@ describe Ibandit::IBANSplitter do
|
|
5
7
|
|
6
8
|
context "with a valid IBAN" do
|
7
9
|
let(:iban_code) { "GB82WEST12345698765432" }
|
10
|
+
|
8
11
|
its([:country_code]) { is_expected.to eq("GB") }
|
9
12
|
its([:check_digits]) { is_expected.to eq("82") }
|
10
13
|
its([:bank_code]) { is_expected.to eq("WEST") }
|
@@ -14,6 +17,7 @@ describe Ibandit::IBANSplitter do
|
|
14
17
|
|
15
18
|
context "with nil" do
|
16
19
|
let(:iban_code) { nil }
|
20
|
+
|
17
21
|
its([:country_code]) { is_expected.to eq(nil) }
|
18
22
|
its([:check_digits]) { is_expected.to eq(nil) }
|
19
23
|
its([:bank_code]) { is_expected.to eq(nil) }
|
@@ -23,6 +27,7 @@ describe Ibandit::IBANSplitter do
|
|
23
27
|
|
24
28
|
context "with an empty string" do
|
25
29
|
let(:iban_code) { "" }
|
30
|
+
|
26
31
|
its([:country_code]) { is_expected.to eq(nil) }
|
27
32
|
its([:check_digits]) { is_expected.to eq(nil) }
|
28
33
|
its([:bank_code]) { is_expected.to eq(nil) }
|
@@ -32,6 +37,7 @@ describe Ibandit::IBANSplitter do
|
|
32
37
|
|
33
38
|
context "with an invalid length IBAN" do
|
34
39
|
let(:iban_code) { "MC9320052222100112233M445" }
|
40
|
+
|
35
41
|
its([:country_code]) { is_expected.to eq("MC") }
|
36
42
|
its([:check_digits]) { is_expected.to eq(nil) }
|
37
43
|
its([:bank_code]) { is_expected.to eq(nil) }
|
@@ -1,20 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "spec_helper"
|
2
4
|
|
3
5
|
describe Ibandit::LocalDetailsCleaner do
|
4
6
|
subject(:cleaned) { described_class.clean(local_details) }
|
7
|
+
|
5
8
|
let(:local_details) do
|
6
9
|
{
|
7
|
-
country_code:
|
8
|
-
bank_code:
|
9
|
-
branch_code:
|
10
|
+
country_code: country_code,
|
11
|
+
bank_code: bank_code,
|
12
|
+
branch_code: branch_code,
|
10
13
|
account_number: account_number,
|
11
14
|
}
|
12
15
|
end
|
13
16
|
|
14
17
|
let(:local_details_with_swift) do
|
15
18
|
local_details.merge(
|
16
|
-
swift_bank_code:
|
17
|
-
swift_branch_code:
|
19
|
+
swift_bank_code: bank_code,
|
20
|
+
swift_branch_code: branch_code,
|
18
21
|
swift_account_number: account_number,
|
19
22
|
)
|
20
23
|
end
|
@@ -30,6 +33,7 @@ describe Ibandit::LocalDetailsCleaner do
|
|
30
33
|
|
31
34
|
context "with an unsupported country code" do
|
32
35
|
let(:country_code) { "FU" }
|
36
|
+
|
33
37
|
it { is_expected.to eq(local_details_with_swift) }
|
34
38
|
end
|
35
39
|
|
@@ -42,36 +46,43 @@ describe Ibandit::LocalDetailsCleaner do
|
|
42
46
|
|
43
47
|
context "with an account number which needs zero-padding" do
|
44
48
|
let(:account_number) { "234573201" }
|
49
|
+
|
45
50
|
its([:account_number]) { is_expected.to eq("00234573201") }
|
46
51
|
end
|
47
52
|
|
48
53
|
context "with an account number under 4 digits" do
|
49
54
|
let(:account_number) { "123" }
|
55
|
+
|
50
56
|
its([:account_number]) { is_expected.to eq("123") }
|
51
57
|
end
|
52
58
|
|
53
59
|
context "with a long account number" do
|
54
60
|
let(:account_number) { "234573201999" }
|
61
|
+
|
55
62
|
it { is_expected.to eq(local_details_with_swift) }
|
56
63
|
end
|
57
64
|
|
58
65
|
context "without an account number" do
|
59
66
|
let(:account_number) { nil }
|
67
|
+
|
60
68
|
it { is_expected.to eq(local_details_with_swift) }
|
61
69
|
end
|
62
70
|
|
63
71
|
context "with a short bank code" do
|
64
72
|
let(:bank_code) { "1904" }
|
73
|
+
|
65
74
|
it { is_expected.to eq(local_details_with_swift) }
|
66
75
|
end
|
67
76
|
|
68
77
|
context "with a long bank code" do
|
69
78
|
let(:bank_code) { "190430" }
|
79
|
+
|
70
80
|
it { is_expected.to eq(local_details_with_swift) }
|
71
81
|
end
|
72
82
|
|
73
83
|
context "without a bank code" do
|
74
84
|
let(:bank_code) { nil }
|
85
|
+
|
75
86
|
it { is_expected.to eq(local_details_with_swift) }
|
76
87
|
end
|
77
88
|
end
|
@@ -107,12 +118,14 @@ describe Ibandit::LocalDetailsCleaner do
|
|
107
118
|
|
108
119
|
context "with dashes" do
|
109
120
|
let(:account_number) { "510-0075470-61" }
|
121
|
+
|
110
122
|
its([:bank_code]) { is_expected.to eq("510") }
|
111
123
|
its([:account_number]) { is_expected.to eq("510007547061") }
|
112
124
|
end
|
113
125
|
|
114
126
|
context "without an account number" do
|
115
127
|
let(:account_number) { nil }
|
128
|
+
|
116
129
|
it { is_expected.to eq(local_details_with_swift) }
|
117
130
|
end
|
118
131
|
end
|
@@ -127,16 +140,19 @@ describe Ibandit::LocalDetailsCleaner do
|
|
127
140
|
|
128
141
|
context "without an account number" do
|
129
142
|
let(:account_number) { nil }
|
143
|
+
|
130
144
|
it { is_expected.to eq(local_details_with_swift) }
|
131
145
|
end
|
132
146
|
|
133
147
|
context "without a branch code" do
|
134
148
|
let(:branch_code) { nil }
|
149
|
+
|
135
150
|
it { is_expected.to eq(local_details_with_swift) }
|
136
151
|
end
|
137
152
|
|
138
153
|
context "without a bank code" do
|
139
154
|
let(:bank_code) { nil }
|
155
|
+
|
140
156
|
it { is_expected.to eq(local_details_with_swift) }
|
141
157
|
end
|
142
158
|
end
|
@@ -163,33 +179,39 @@ describe Ibandit::LocalDetailsCleaner do
|
|
163
179
|
|
164
180
|
context "with a short account number" do
|
165
181
|
let(:account_number) { "1200527600" }
|
182
|
+
|
166
183
|
its([:account_number]) { is_expected.to eq("0000001200527600") }
|
167
184
|
end
|
168
185
|
|
169
186
|
context "with a too-short account number" do
|
170
187
|
let(:account_number) { "123456" }
|
188
|
+
|
171
189
|
its([:account_number]) { is_expected.to eq(account_number) }
|
172
190
|
end
|
173
191
|
|
174
192
|
context "with a long account number" do
|
175
193
|
let(:account_number) { "00000001200527600" }
|
194
|
+
|
176
195
|
it { is_expected.to eq(local_details_with_swift) }
|
177
196
|
end
|
178
197
|
|
179
198
|
context "without an account number" do
|
180
199
|
let(:account_number) { nil }
|
200
|
+
|
181
201
|
it { is_expected.to eq(local_details_with_swift) }
|
182
202
|
end
|
183
203
|
|
184
204
|
context "with the branch code in the bank code field" do
|
185
205
|
let(:bank_code) { "002 00128" }
|
186
206
|
let(:branch_code) { nil }
|
207
|
+
|
187
208
|
its([:bank_code]) { is_expected.to eq("002") }
|
188
209
|
its([:branch_code]) { is_expected.to eq("00128") }
|
189
210
|
end
|
190
211
|
|
191
212
|
context "without a bank code" do
|
192
213
|
let(:bank_code) { nil }
|
214
|
+
|
193
215
|
it { is_expected.to eq(local_details_with_swift) }
|
194
216
|
end
|
195
217
|
end
|
@@ -204,23 +226,27 @@ describe Ibandit::LocalDetailsCleaner do
|
|
204
226
|
context "with an account number prefix" do
|
205
227
|
let(:prefix) { "000019" }
|
206
228
|
let(:account_number) { "2000145399" }
|
229
|
+
|
207
230
|
before { local_details.merge!(account_number_prefix: prefix) }
|
208
231
|
|
209
232
|
its([:account_number]) { is_expected.to eq("0000192000145399") }
|
210
233
|
|
211
234
|
context "which needs zero-padding" do
|
212
235
|
let(:prefix) { "19" }
|
236
|
+
|
213
237
|
its([:account_number]) { is_expected.to eq("0000192000145399") }
|
214
238
|
end
|
215
239
|
end
|
216
240
|
|
217
241
|
context "without a bank code" do
|
218
242
|
let(:bank_code) { nil }
|
243
|
+
|
219
244
|
it { is_expected.to eq(local_details_with_swift) }
|
220
245
|
end
|
221
246
|
|
222
247
|
context "without an account number" do
|
223
248
|
let(:account_number) { nil }
|
249
|
+
|
224
250
|
it { is_expected.to eq(local_details_with_swift) }
|
225
251
|
end
|
226
252
|
end
|
@@ -234,22 +260,26 @@ describe Ibandit::LocalDetailsCleaner do
|
|
234
260
|
|
235
261
|
context "without a bank code" do
|
236
262
|
let(:bank_code) { nil }
|
263
|
+
|
237
264
|
it { is_expected.to eq(local_details_with_swift) }
|
238
265
|
end
|
239
266
|
|
240
267
|
context "without an account number" do
|
241
268
|
let(:account_number) { nil }
|
269
|
+
|
242
270
|
it { is_expected.to eq(local_details_with_swift) }
|
243
271
|
end
|
244
272
|
|
245
273
|
context "with an excessively short account number" do
|
246
274
|
let(:account_number) { "666" }
|
275
|
+
|
247
276
|
its([:account_number]) { is_expected.to eq(account_number) }
|
248
277
|
end
|
249
278
|
|
250
279
|
context "with a pseudo account number" do
|
251
280
|
let(:bank_code) { "37080040" }
|
252
281
|
let(:account_number) { "111" }
|
282
|
+
|
253
283
|
its([:bank_code]) { is_expected.to eq(bank_code) }
|
254
284
|
its([:account_number]) { is_expected.to eq("0215022000") }
|
255
285
|
end
|
@@ -257,6 +287,7 @@ describe Ibandit::LocalDetailsCleaner do
|
|
257
287
|
context "with unsupported account details" do
|
258
288
|
let(:account_number) { "7955791111" }
|
259
289
|
let(:bank_code) { "20000000" }
|
290
|
+
|
260
291
|
it { is_expected.to eq(local_details_with_swift) }
|
261
292
|
end
|
262
293
|
end
|
@@ -297,6 +328,7 @@ describe Ibandit::LocalDetailsCleaner do
|
|
297
328
|
|
298
329
|
context "without an account number" do
|
299
330
|
let(:account_number) { nil }
|
331
|
+
|
300
332
|
it { is_expected.to eq(local_details_with_swift) }
|
301
333
|
end
|
302
334
|
end
|
@@ -310,12 +342,14 @@ describe Ibandit::LocalDetailsCleaner do
|
|
310
342
|
|
311
343
|
context "with an account number that needs translating" do
|
312
344
|
let(:account_number) { "111020145685" }
|
345
|
+
|
313
346
|
its([:bank_code]) { is_expected.to eq("22") }
|
314
347
|
its([:account_number]) { is_expected.to eq("00111020145685") }
|
315
348
|
end
|
316
349
|
|
317
350
|
context "without an account number" do
|
318
351
|
let(:account_number) { nil }
|
352
|
+
|
319
353
|
it { is_expected.to eq(local_details_with_swift) }
|
320
354
|
end
|
321
355
|
end
|
@@ -340,11 +374,13 @@ describe Ibandit::LocalDetailsCleaner do
|
|
340
374
|
|
341
375
|
context "with spaces in the account number" do
|
342
376
|
let(:account_number) { "18 0000012345" }
|
377
|
+
|
343
378
|
its([:account_number]) { is_expected.to eq("180000012345") }
|
344
379
|
end
|
345
380
|
|
346
381
|
context "without an account number" do
|
347
382
|
let(:account_number) { nil }
|
383
|
+
|
348
384
|
it { is_expected.to eq(local_details_with_swift) }
|
349
385
|
end
|
350
386
|
end
|
@@ -358,6 +394,7 @@ describe Ibandit::LocalDetailsCleaner do
|
|
358
394
|
|
359
395
|
context "with a shorter account number" do
|
360
396
|
let(:account_number) { "785" }
|
397
|
+
|
361
398
|
its([:account_number]) { is_expected.to eq("00000785") }
|
362
399
|
end
|
363
400
|
|
@@ -371,11 +408,13 @@ describe Ibandit::LocalDetailsCleaner do
|
|
371
408
|
|
372
409
|
context "without an account number" do
|
373
410
|
let(:account_number) { nil }
|
411
|
+
|
374
412
|
it { is_expected.to eq(local_details_with_swift) }
|
375
413
|
end
|
376
414
|
|
377
415
|
context "without a bank code" do
|
378
416
|
let(:bank_code) { nil }
|
417
|
+
|
379
418
|
it { is_expected.to eq(local_details_with_swift) }
|
380
419
|
end
|
381
420
|
end
|
@@ -390,31 +429,37 @@ describe Ibandit::LocalDetailsCleaner do
|
|
390
429
|
|
391
430
|
context "with the RIB key spaced in the account number" do
|
392
431
|
let(:account_number) { "0500013M026 06" }
|
432
|
+
|
393
433
|
its([:account_number]) { is_expected.to eq("0500013M02606") }
|
394
434
|
end
|
395
435
|
|
396
436
|
context "with the RIB key hyphenated in the account number" do
|
397
437
|
let(:account_number) { "0500013M026-06" }
|
438
|
+
|
398
439
|
its([:account_number]) { is_expected.to eq("0500013M02606") }
|
399
440
|
end
|
400
441
|
|
401
442
|
context "with the RIB key missing" do
|
402
443
|
let(:account_number) { "0500013M026" }
|
444
|
+
|
403
445
|
it { is_expected.to eq(local_details_with_swift) }
|
404
446
|
end
|
405
447
|
|
406
448
|
context "without a bank code" do
|
407
449
|
let(:bank_code) { nil }
|
450
|
+
|
408
451
|
it { is_expected.to eq(local_details_with_swift) }
|
409
452
|
end
|
410
453
|
|
411
454
|
context "without a branch code" do
|
412
455
|
let(:branch_code) { nil }
|
456
|
+
|
413
457
|
it { is_expected.to eq(local_details_with_swift) }
|
414
458
|
end
|
415
459
|
|
416
460
|
context "without an account number" do
|
417
461
|
let(:account_number) { nil }
|
462
|
+
|
418
463
|
it { is_expected.to eq(local_details_with_swift) }
|
419
464
|
end
|
420
465
|
end
|
@@ -429,52 +474,62 @@ describe Ibandit::LocalDetailsCleaner do
|
|
429
474
|
|
430
475
|
context "with the sort code is hyphenated" do
|
431
476
|
let(:branch_code) { "20-00-00" }
|
477
|
+
|
432
478
|
its([:branch_code]) { is_expected.to eq("200000") }
|
433
479
|
its([:swift_branch_code]) { is_expected.to eq("200000") }
|
434
480
|
end
|
435
481
|
|
436
482
|
context "with the sort code spaced" do
|
437
483
|
let(:branch_code) { "20 00 00" }
|
484
|
+
|
438
485
|
its([:branch_code]) { is_expected.to eq("200000") }
|
439
486
|
end
|
440
487
|
|
441
488
|
context "with a short account number" do
|
442
489
|
let(:account_number) { "579135" }
|
490
|
+
|
443
491
|
its([:account_number]) { is_expected.to eq("00579135") }
|
444
492
|
its([:swift_account_number]) { is_expected.to eq("00579135") }
|
445
493
|
end
|
446
494
|
|
447
495
|
context "with a too-short account number" do
|
448
496
|
let(:account_number) { "5678" }
|
497
|
+
|
449
498
|
its([:account_number]) { is_expected.to eq(account_number) }
|
450
499
|
end
|
451
500
|
|
452
501
|
context "with the account number spaced" do
|
453
502
|
let(:account_number) { "5577 9911" }
|
503
|
+
|
454
504
|
its([:account_number]) { is_expected.to eq("55779911") }
|
455
505
|
end
|
456
506
|
|
457
507
|
context "with the account number hyphenated" do
|
458
508
|
let(:account_number) { "5577-9911" }
|
509
|
+
|
459
510
|
its([:account_number]) { is_expected.to eq("55779911") }
|
460
511
|
end
|
461
512
|
|
462
513
|
context "without a branch code" do
|
463
514
|
let(:branch_code) { nil }
|
515
|
+
|
464
516
|
it { is_expected.to eq(local_details_with_swift) }
|
465
517
|
end
|
466
518
|
|
467
519
|
context "without a bank code" do
|
468
520
|
let(:bank_code) { nil }
|
521
|
+
|
469
522
|
it { is_expected.to eq(local_details_with_swift) }
|
470
523
|
|
471
524
|
context "with a BIC finder set" do
|
472
525
|
let(:bic_finder) { double }
|
526
|
+
|
473
527
|
before do
|
474
528
|
allow(bic_finder).to receive(:call).with("GB", "200000").
|
475
529
|
and_return("BARCGB22XXX")
|
476
530
|
Ibandit.bic_finder = bic_finder
|
477
531
|
end
|
532
|
+
|
478
533
|
after { Ibandit.bic_finder = nil }
|
479
534
|
|
480
535
|
its([:bank_code]) { is_expected.to eq("BARC") }
|
@@ -485,11 +540,13 @@ describe Ibandit::LocalDetailsCleaner do
|
|
485
540
|
context "with a bank code and BIC finder set" do
|
486
541
|
let(:bank_code) { "OVERRIDE" }
|
487
542
|
let(:bic_finder) { double }
|
543
|
+
|
488
544
|
before do
|
489
545
|
allow(bic_finder).to receive(:call).with("GB", "200000").
|
490
546
|
and_return("BARCGB22XXX")
|
491
547
|
Ibandit.bic_finder = bic_finder
|
492
548
|
end
|
549
|
+
|
493
550
|
after { Ibandit.bic_finder = nil }
|
494
551
|
|
495
552
|
its([:bank_code]) { is_expected.to eq("OVERRIDE") }
|
@@ -506,16 +563,19 @@ describe Ibandit::LocalDetailsCleaner do
|
|
506
563
|
|
507
564
|
context "without an account number" do
|
508
565
|
let(:account_number) { nil }
|
566
|
+
|
509
567
|
it { is_expected.to eq(local_details_with_swift) }
|
510
568
|
end
|
511
569
|
|
512
570
|
context "without a bank code" do
|
513
571
|
let(:bank_code) { nil }
|
572
|
+
|
514
573
|
it { is_expected.to eq(local_details_with_swift) }
|
515
574
|
end
|
516
575
|
|
517
576
|
context "without a branch code" do
|
518
577
|
let(:branch_code) { nil }
|
578
|
+
|
519
579
|
it { is_expected.to eq(local_details_with_swift) }
|
520
580
|
end
|
521
581
|
end
|
@@ -537,12 +597,14 @@ describe Ibandit::LocalDetailsCleaner do
|
|
537
597
|
|
538
598
|
context "with a badly formatted account number" do
|
539
599
|
let(:account_number) { "1863000160" }
|
600
|
+
|
540
601
|
it { is_expected.to eq(local_details_with_swift) }
|
541
602
|
end
|
542
603
|
end
|
543
604
|
|
544
605
|
context "without an account number" do
|
545
606
|
let(:account_number) { nil }
|
607
|
+
|
546
608
|
it { is_expected.to eq(local_details_with_swift) }
|
547
609
|
end
|
548
610
|
end
|
@@ -577,18 +639,21 @@ describe Ibandit::LocalDetailsCleaner do
|
|
577
639
|
|
578
640
|
context "with an invalid length account number" do
|
579
641
|
let(:account_number) { "11773016-1111101" }
|
642
|
+
|
580
643
|
it { is_expected.to eq(local_details_with_swift) }
|
581
644
|
end
|
582
645
|
|
583
646
|
context "with a bank code, too" do
|
584
647
|
let(:account_number) { "11773016-11111018" }
|
585
648
|
let(:bank_code) { "117" }
|
649
|
+
|
586
650
|
it { is_expected.to eq(local_details_with_swift) }
|
587
651
|
end
|
588
652
|
end
|
589
653
|
|
590
654
|
context "without an account number" do
|
591
655
|
let(:account_number) { nil }
|
656
|
+
|
592
657
|
it { is_expected.to eq(local_details_with_swift) }
|
593
658
|
end
|
594
659
|
end
|
@@ -603,50 +668,60 @@ describe Ibandit::LocalDetailsCleaner do
|
|
603
668
|
|
604
669
|
context "with the sort code is hyphenated" do
|
605
670
|
let(:branch_code) { "93-11-52" }
|
671
|
+
|
606
672
|
its([:branch_code]) { is_expected.to eq("931152") }
|
607
673
|
end
|
608
674
|
|
609
675
|
context "with the sort code spaced" do
|
610
676
|
let(:branch_code) { "93 11 52" }
|
677
|
+
|
611
678
|
its([:branch_code]) { is_expected.to eq("931152") }
|
612
679
|
end
|
613
680
|
|
614
681
|
context "with a short account number" do
|
615
682
|
let(:account_number) { "579135" }
|
683
|
+
|
616
684
|
its([:account_number]) { is_expected.to eq("00579135") }
|
617
685
|
end
|
618
686
|
|
619
687
|
context "with a too-short account number" do
|
620
688
|
let(:account_number) { "5678" }
|
689
|
+
|
621
690
|
its([:account_number]) { is_expected.to eq(account_number) }
|
622
691
|
end
|
623
692
|
|
624
693
|
context "with the account number spaced" do
|
625
694
|
let(:account_number) { "5577 9911" }
|
695
|
+
|
626
696
|
its([:account_number]) { is_expected.to eq("55779911") }
|
627
697
|
end
|
628
698
|
|
629
699
|
context "with the account number hyphenated" do
|
630
700
|
let(:account_number) { "5577-9911" }
|
701
|
+
|
631
702
|
its([:account_number]) { is_expected.to eq("55779911") }
|
632
703
|
end
|
633
704
|
|
634
705
|
context "without a branch code" do
|
635
706
|
let(:branch_code) { nil }
|
707
|
+
|
636
708
|
it { is_expected.to eq(local_details_with_swift) }
|
637
709
|
end
|
638
710
|
|
639
711
|
context "without a bank code" do
|
640
712
|
let(:bank_code) { nil }
|
713
|
+
|
641
714
|
it { is_expected.to eq(local_details_with_swift) }
|
642
715
|
|
643
716
|
context "with a BIC finder set" do
|
644
717
|
let(:bic_finder) { double }
|
718
|
+
|
645
719
|
before do
|
646
720
|
allow(bic_finder).to receive(:call).with("IE", "931152").
|
647
721
|
and_return("AIBKIE22XXX")
|
648
722
|
Ibandit.bic_finder = bic_finder
|
649
723
|
end
|
724
|
+
|
650
725
|
after { Ibandit.bic_finder = nil }
|
651
726
|
|
652
727
|
its([:bank_code]) { is_expected.to eq("AIBK") }
|
@@ -656,11 +731,13 @@ describe Ibandit::LocalDetailsCleaner do
|
|
656
731
|
context "with a bank code and BIC finder set" do
|
657
732
|
let(:bank_code) { "OVERRIDE" }
|
658
733
|
let(:bic_finder) { double }
|
734
|
+
|
659
735
|
before do
|
660
736
|
allow(bic_finder).to receive(:call).with("IE", "931152").
|
661
737
|
and_return("AIBKIE22XXX")
|
662
738
|
Ibandit.bic_finder = bic_finder
|
663
739
|
end
|
740
|
+
|
664
741
|
after { Ibandit.bic_finder = nil }
|
665
742
|
|
666
743
|
its([:bank_code]) { is_expected.to eq("OVERRIDE") }
|
@@ -703,12 +780,14 @@ describe Ibandit::LocalDetailsCleaner do
|
|
703
780
|
|
704
781
|
context "without a hyphen" do
|
705
782
|
let(:account_number) { "26-2468-606972049" }
|
783
|
+
|
706
784
|
its([:account_number]) { is_expected.to eq("260024680606972049") }
|
707
785
|
end
|
708
786
|
end
|
709
787
|
|
710
788
|
context "without an account number" do
|
711
789
|
let(:account_number) { nil }
|
790
|
+
|
712
791
|
it { is_expected.to eq(local_details_with_swift) }
|
713
792
|
end
|
714
793
|
end
|
@@ -723,26 +802,31 @@ describe Ibandit::LocalDetailsCleaner do
|
|
723
802
|
|
724
803
|
context "with an explicit check digit" do
|
725
804
|
before { local_details.merge!(check_digit: "Y") }
|
805
|
+
|
726
806
|
it { is_expected.to eq(local_details_with_swift) }
|
727
807
|
end
|
728
808
|
|
729
809
|
context "with the account number not zero-padded" do
|
730
810
|
let(:account_number) { "123456" }
|
811
|
+
|
731
812
|
its([:account_number]) { is_expected.to eq("000000123456") }
|
732
813
|
end
|
733
814
|
|
734
815
|
context "without a bank code" do
|
735
816
|
let(:bank_code) { nil }
|
817
|
+
|
736
818
|
it { is_expected.to eq(local_details_with_swift) }
|
737
819
|
end
|
738
820
|
|
739
821
|
context "without a branch code" do
|
740
822
|
let(:branch_code) { nil }
|
823
|
+
|
741
824
|
it { is_expected.to eq(local_details_with_swift) }
|
742
825
|
end
|
743
826
|
|
744
827
|
context "without an account number" do
|
745
828
|
let(:account_number) { nil }
|
829
|
+
|
746
830
|
it { is_expected.to eq(local_details_with_swift) }
|
747
831
|
end
|
748
832
|
end
|
@@ -756,11 +840,13 @@ describe Ibandit::LocalDetailsCleaner do
|
|
756
840
|
|
757
841
|
context "without an account number" do
|
758
842
|
let(:account_number) { nil }
|
843
|
+
|
759
844
|
it { is_expected.to eq(local_details_with_swift) }
|
760
845
|
end
|
761
846
|
|
762
847
|
context "without a bank code" do
|
763
848
|
let(:bank_code) { nil }
|
849
|
+
|
764
850
|
it { is_expected.to eq(local_details_with_swift) }
|
765
851
|
end
|
766
852
|
end
|
@@ -774,11 +860,13 @@ describe Ibandit::LocalDetailsCleaner do
|
|
774
860
|
|
775
861
|
context "without an account number" do
|
776
862
|
let(:account_number) { nil }
|
863
|
+
|
777
864
|
it { is_expected.to eq(local_details_with_swift) }
|
778
865
|
end
|
779
866
|
|
780
867
|
context "without a bank code" do
|
781
868
|
let(:bank_code) { nil }
|
869
|
+
|
782
870
|
it { is_expected.to eq(local_details_with_swift) }
|
783
871
|
end
|
784
872
|
end
|
@@ -792,11 +880,13 @@ describe Ibandit::LocalDetailsCleaner do
|
|
792
880
|
|
793
881
|
context "without an account number" do
|
794
882
|
let(:account_number) { nil }
|
883
|
+
|
795
884
|
it { is_expected.to eq(local_details_with_swift) }
|
796
885
|
end
|
797
886
|
|
798
887
|
context "without a bank code" do
|
799
888
|
let(:bank_code) { nil }
|
889
|
+
|
800
890
|
it { is_expected.to eq(local_details_with_swift) }
|
801
891
|
end
|
802
892
|
end
|
@@ -811,31 +901,37 @@ describe Ibandit::LocalDetailsCleaner do
|
|
811
901
|
|
812
902
|
context "with the RIB key spaced in the account number" do
|
813
903
|
let(:account_number) { "0500013M026 06" }
|
904
|
+
|
814
905
|
its([:account_number]) { is_expected.to eq("0500013M02606") }
|
815
906
|
end
|
816
907
|
|
817
908
|
context "with the RIB key hyphenated in the account number" do
|
818
909
|
let(:account_number) { "0500013M026-06" }
|
910
|
+
|
819
911
|
its([:account_number]) { is_expected.to eq("0500013M02606") }
|
820
912
|
end
|
821
913
|
|
822
914
|
context "with the RIB key missing" do
|
823
915
|
let(:account_number) { "0500013M026" }
|
916
|
+
|
824
917
|
it { is_expected.to eq(local_details_with_swift) }
|
825
918
|
end
|
826
919
|
|
827
920
|
context "without a bank code" do
|
828
921
|
let(:bank_code) { nil }
|
922
|
+
|
829
923
|
it { is_expected.to eq(local_details_with_swift) }
|
830
924
|
end
|
831
925
|
|
832
926
|
context "without a branch code" do
|
833
927
|
let(:branch_code) { nil }
|
928
|
+
|
834
929
|
it { is_expected.to eq(local_details_with_swift) }
|
835
930
|
end
|
836
931
|
|
837
932
|
context "without an account number" do
|
838
933
|
let(:account_number) { nil }
|
934
|
+
|
839
935
|
it { is_expected.to eq(local_details_with_swift) }
|
840
936
|
end
|
841
937
|
end
|
@@ -850,30 +946,36 @@ describe Ibandit::LocalDetailsCleaner do
|
|
850
946
|
|
851
947
|
context "with the account number spaced" do
|
852
948
|
let(:account_number) { "9027 2930 51" }
|
949
|
+
|
853
950
|
its([:account_number]) { is_expected.to eq("000000009027293051") }
|
854
951
|
end
|
855
952
|
|
856
953
|
context "with the account number hyphenated" do
|
857
954
|
let(:account_number) { "9027-2930-51" }
|
955
|
+
|
858
956
|
its([:account_number]) { is_expected.to eq("000000009027293051") }
|
859
957
|
end
|
860
958
|
|
861
959
|
context "without a branch code" do
|
862
960
|
let(:branch_code) { nil }
|
961
|
+
|
863
962
|
it { is_expected.to eq(local_details_with_swift) }
|
864
963
|
end
|
865
964
|
|
866
965
|
context "without a bank code" do
|
867
966
|
let(:bank_code) { nil }
|
967
|
+
|
868
968
|
it { is_expected.to eq(local_details_with_swift) }
|
869
969
|
|
870
970
|
context "with a BIC finder set" do
|
871
971
|
let(:bic_finder) { double }
|
972
|
+
|
872
973
|
before do
|
873
974
|
allow(bic_finder).to receive(:call).with("MT", "44093").
|
874
975
|
and_return("MMEBMTMTXXX")
|
875
976
|
Ibandit.bic_finder = bic_finder
|
876
977
|
end
|
978
|
+
|
877
979
|
after { Ibandit.bic_finder = nil }
|
878
980
|
|
879
981
|
its([:bank_code]) { is_expected.to eq("MMEB") }
|
@@ -883,11 +985,13 @@ describe Ibandit::LocalDetailsCleaner do
|
|
883
985
|
context "with a bank code and BIC finder set" do
|
884
986
|
let(:bank_code) { "OVERRIDE" }
|
885
987
|
let(:bic_finder) { double }
|
988
|
+
|
886
989
|
before do
|
887
990
|
allow(bic_finder).to receive(:call).with("MT", "44093").
|
888
991
|
and_return("MMEBMTMTXXX")
|
889
992
|
Ibandit.bic_finder = bic_finder
|
890
993
|
end
|
994
|
+
|
891
995
|
after { Ibandit.bic_finder = nil }
|
892
996
|
|
893
997
|
its([:bank_code]) { is_expected.to eq("OVERRIDE") }
|
@@ -903,21 +1007,25 @@ describe Ibandit::LocalDetailsCleaner do
|
|
903
1007
|
|
904
1008
|
context "without a bank code" do
|
905
1009
|
let(:bank_code) { nil }
|
1010
|
+
|
906
1011
|
it { is_expected.to eq(local_details_with_swift) }
|
907
1012
|
end
|
908
1013
|
|
909
1014
|
context "without a branch code" do
|
910
1015
|
let(:branch_code) { nil }
|
1016
|
+
|
911
1017
|
it { is_expected.to eq(local_details_with_swift) }
|
912
1018
|
end
|
913
1019
|
|
914
1020
|
context "without an account number" do
|
915
1021
|
let(:account_number) { nil }
|
1022
|
+
|
916
1023
|
it { is_expected.to eq(local_details_with_swift) }
|
917
1024
|
end
|
918
1025
|
|
919
1026
|
context "with an account number that needs zero-padding" do
|
920
1027
|
let(:account_number) { "417164300" }
|
1028
|
+
|
921
1029
|
its([:account_number]) { is_expected.to eq("0417164300") }
|
922
1030
|
end
|
923
1031
|
end
|
@@ -940,6 +1048,7 @@ describe Ibandit::LocalDetailsCleaner do
|
|
940
1048
|
|
941
1049
|
context "without an account number" do
|
942
1050
|
let(:account_number) { nil }
|
1051
|
+
|
943
1052
|
it { is_expected.to eq(local_details_with_swift) }
|
944
1053
|
end
|
945
1054
|
end
|
@@ -971,12 +1080,14 @@ describe Ibandit::LocalDetailsCleaner do
|
|
971
1080
|
|
972
1081
|
context "when the account number is shorter than 6 chars" do
|
973
1082
|
let(:account_number) { "12345" }
|
1083
|
+
|
974
1084
|
its([:account_number]) { is_expected.to be_nil }
|
975
1085
|
end
|
976
1086
|
end
|
977
1087
|
|
978
1088
|
context "without an account number" do
|
979
1089
|
let(:account_number) { nil }
|
1090
|
+
|
980
1091
|
it { is_expected.to eq(local_details_with_swift) }
|
981
1092
|
end
|
982
1093
|
end
|
@@ -999,6 +1110,7 @@ describe Ibandit::LocalDetailsCleaner do
|
|
999
1110
|
|
1000
1111
|
context "without an account number" do
|
1001
1112
|
let(:account_number) { nil }
|
1113
|
+
|
1002
1114
|
it { is_expected.to eq(local_details_with_swift) }
|
1003
1115
|
end
|
1004
1116
|
end
|
@@ -1013,16 +1125,19 @@ describe Ibandit::LocalDetailsCleaner do
|
|
1013
1125
|
|
1014
1126
|
context "without a bank code" do
|
1015
1127
|
let(:bank_code) { nil }
|
1128
|
+
|
1016
1129
|
it { is_expected.to eq(local_details_with_swift) }
|
1017
1130
|
end
|
1018
1131
|
|
1019
1132
|
context "without a branch code" do
|
1020
1133
|
let(:branch_code) { nil }
|
1134
|
+
|
1021
1135
|
it { is_expected.to eq(local_details_with_swift) }
|
1022
1136
|
end
|
1023
1137
|
|
1024
1138
|
context "without an account number" do
|
1025
1139
|
let(:account_number) { nil }
|
1140
|
+
|
1026
1141
|
it { is_expected.to eq(local_details_with_swift) }
|
1027
1142
|
end
|
1028
1143
|
end
|
@@ -1036,11 +1151,13 @@ describe Ibandit::LocalDetailsCleaner do
|
|
1036
1151
|
|
1037
1152
|
context "without an account number" do
|
1038
1153
|
let(:account_number) { nil }
|
1154
|
+
|
1039
1155
|
it { is_expected.to eq(local_details_with_swift) }
|
1040
1156
|
end
|
1041
1157
|
|
1042
1158
|
context "without a bank code" do
|
1043
1159
|
let(:bank_code) { nil }
|
1160
|
+
|
1044
1161
|
it { is_expected.to eq(local_details_with_swift) }
|
1045
1162
|
end
|
1046
1163
|
end
|
@@ -1057,6 +1174,7 @@ describe Ibandit::LocalDetailsCleaner do
|
|
1057
1174
|
|
1058
1175
|
context "without an account number" do
|
1059
1176
|
let(:account_number) { nil }
|
1177
|
+
|
1060
1178
|
it { is_expected.to eq(local_details_with_swift) }
|
1061
1179
|
end
|
1062
1180
|
|
@@ -1080,16 +1198,19 @@ describe Ibandit::LocalDetailsCleaner do
|
|
1080
1198
|
|
1081
1199
|
context "with an account number which needs zero-padding" do
|
1082
1200
|
let(:account_number) { "123438" }
|
1201
|
+
|
1083
1202
|
its([:account_number]) { is_expected.to eq("0000123438") }
|
1084
1203
|
end
|
1085
1204
|
|
1086
1205
|
context "without a bank code" do
|
1087
1206
|
let(:bank_code) { nil }
|
1207
|
+
|
1088
1208
|
it { is_expected.to eq(local_details_with_swift) }
|
1089
1209
|
end
|
1090
1210
|
|
1091
1211
|
context "without an account number" do
|
1092
1212
|
let(:account_number) { nil }
|
1213
|
+
|
1093
1214
|
it { is_expected.to eq(local_details_with_swift) }
|
1094
1215
|
end
|
1095
1216
|
end
|
@@ -1104,23 +1225,27 @@ describe Ibandit::LocalDetailsCleaner do
|
|
1104
1225
|
context "with an account number prefix" do
|
1105
1226
|
let(:prefix) { "000019" }
|
1106
1227
|
let(:account_number) { "8742637541" }
|
1228
|
+
|
1107
1229
|
before { local_details.merge!(account_number_prefix: prefix) }
|
1108
1230
|
|
1109
1231
|
its([:account_number]) { is_expected.to eq("0000198742637541") }
|
1110
1232
|
|
1111
1233
|
context "which needs zero-padding" do
|
1112
1234
|
let(:prefix) { "19" }
|
1235
|
+
|
1113
1236
|
its([:account_number]) { is_expected.to eq("0000198742637541") }
|
1114
1237
|
end
|
1115
1238
|
end
|
1116
1239
|
|
1117
1240
|
context "without a bank code" do
|
1118
1241
|
let(:bank_code) { nil }
|
1242
|
+
|
1119
1243
|
it { is_expected.to eq(local_details_with_swift) }
|
1120
1244
|
end
|
1121
1245
|
|
1122
1246
|
context "without an account number" do
|
1123
1247
|
let(:account_number) { nil }
|
1248
|
+
|
1124
1249
|
it { is_expected.to eq(local_details_with_swift) }
|
1125
1250
|
end
|
1126
1251
|
end
|
@@ -1135,26 +1260,31 @@ describe Ibandit::LocalDetailsCleaner do
|
|
1135
1260
|
|
1136
1261
|
context "with an explicit check digit" do
|
1137
1262
|
before { local_details.merge!(check_digit: "Y") }
|
1263
|
+
|
1138
1264
|
it { is_expected.to eq(local_details_with_swift) }
|
1139
1265
|
end
|
1140
1266
|
|
1141
1267
|
context "with the account number not zero-padded" do
|
1142
1268
|
let(:account_number) { "123456" }
|
1269
|
+
|
1143
1270
|
its([:account_number]) { is_expected.to eq("000000123456") }
|
1144
1271
|
end
|
1145
1272
|
|
1146
1273
|
context "without a bank code" do
|
1147
1274
|
let(:bank_code) { nil }
|
1275
|
+
|
1148
1276
|
it { is_expected.to eq(local_details_with_swift) }
|
1149
1277
|
end
|
1150
1278
|
|
1151
1279
|
context "without a branch code" do
|
1152
1280
|
let(:branch_code) { nil }
|
1281
|
+
|
1153
1282
|
it { is_expected.to eq(local_details_with_swift) }
|
1154
1283
|
end
|
1155
1284
|
|
1156
1285
|
context "without an account number" do
|
1157
1286
|
let(:account_number) { nil }
|
1287
|
+
|
1158
1288
|
it { is_expected.to eq(local_details_with_swift) }
|
1159
1289
|
end
|
1160
1290
|
end
|