ibandit 1.12.0 → 1.20.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -10,6 +10,22 @@ describe Ibandit::IBAN do
10
10
 
11
11
  its(:iban) { is_expected.to eq(iban_code) }
12
12
 
13
+ context "with locales" do
14
+ all_keys = YAML.safe_load(
15
+ File.read("config/locales/en.yml"),
16
+ )["en"]["ibandit"].keys
17
+
18
+ Ibandit::Constants::SUPPORTED_LOCALES.each do |locale|
19
+ context "for #{locale}", locale: locale do
20
+ all_keys.each do |error_key|
21
+ it "has a translation for #{error_key}" do
22
+ expect { Ibandit.translate(error_key) }.to_not raise_error
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+
13
29
  context "with a poorly formatted IBAN" do
14
30
  let(:iban_code) { " gb82 WeSt 1234 5698 7654 32\n" }
15
31
 
@@ -396,8 +412,8 @@ describe Ibandit::IBAN do
396
412
 
397
413
  it "is invalid and has the correct errors" do
398
414
  expect(subject.valid?).to eq(false)
399
- expect(subject.errors).to eq(account_number: "is invalid",
400
- branch_code: "is invalid")
415
+ expect(subject.errors).to eq(account_number: "format is invalid",
416
+ branch_code: "format is invalid")
401
417
  end
402
418
  end
403
419
 
@@ -406,10 +422,55 @@ describe Ibandit::IBAN do
406
422
  {
407
423
  country_code: "CA",
408
424
  bank_code: bank_code,
409
- branch_code: "00063",
425
+ branch_code: branch_code,
410
426
  account_number: account_number,
411
427
  }
412
428
  end
429
+ let(:branch_code) { "00063" }
430
+
431
+ context "and a 5 digit branch code" do
432
+ let(:account_number) { "0123456" }
433
+ let(:bank_code) { "036" }
434
+ let(:branch_code) { "00063" }
435
+
436
+ its(:country_code) { is_expected.to eq("CA") }
437
+ its(:bank_code) { is_expected.to eq("0036") }
438
+ its(:branch_code) { is_expected.to eq("00063") }
439
+ its(:account_number) { is_expected.to eq("0123456") }
440
+ its(:swift_bank_code) { is_expected.to eq("0036") }
441
+ its(:swift_branch_code) { is_expected.to eq("00063") }
442
+ its(:swift_account_number) { is_expected.to eq("0123456") }
443
+ its(:swift_national_id) { is_expected.to eq("003600063") }
444
+ its(:pseudo_iban) { is_expected.to eq("CAZZ003600063_____0123456") }
445
+
446
+ its(:iban) { is_expected.to be_nil }
447
+ its(:valid?) { is_expected.to eq(true) }
448
+ its(:to_s) { is_expected.to eq("") }
449
+ end
450
+
451
+ context "for an all zero transit number" do
452
+ let(:account_number) { "0123456" }
453
+ let(:bank_code) { "036" }
454
+ let(:branch_code) { "00000" }
455
+
456
+ it "is invalid and has the correct errors" do
457
+ expect(subject.valid?).to eq(false)
458
+ expect(subject.errors).
459
+ to eq(branch_code: "format is invalid")
460
+ end
461
+ end
462
+
463
+ context "and a 4 digit branch code" do
464
+ let(:account_number) { "0123456" }
465
+ let(:bank_code) { "036" }
466
+ let(:branch_code) { "0063" }
467
+
468
+ it "is invalid and has the correct errors" do
469
+ expect(subject.valid?).to eq(false)
470
+ expect(subject.errors).
471
+ to eq(branch_code: "is the wrong length (should be 5 characters)")
472
+ end
473
+ end
413
474
 
414
475
  context "and a 3 digit bank code" do
415
476
  let(:account_number) { "0123456" }
@@ -475,6 +536,17 @@ describe Ibandit::IBAN do
475
536
  its(:valid?) { is_expected.to be false }
476
537
  end
477
538
 
539
+ context "and account number has only zeroes in it" do
540
+ let(:account_number) { "0000000" }
541
+ let(:bank_code) { "0036" }
542
+
543
+ it "is invalid and has the correct errors" do
544
+ expect(subject.valid?).to eq(false)
545
+ expect(subject.errors).
546
+ to eq(account_number: "format is invalid")
547
+ end
548
+ end
549
+
478
550
  context "and a 12 digit account number" do
479
551
  let(:account_number) { "012345678900" }
480
552
  let(:bank_code) { "0036" }
@@ -699,7 +771,7 @@ describe Ibandit::IBAN do
699
771
 
700
772
  it "returns an error on bank_code attribute" do
701
773
  expect(subject.valid?).to eq(false)
702
- expect(subject.errors).to eq(bank_code: "is invalid")
774
+ expect(subject.errors).to eq(bank_code: "did not pass checksum test")
703
775
  end
704
776
  end
705
777
 
@@ -794,7 +866,7 @@ describe Ibandit::IBAN do
794
866
 
795
867
  it "is invalid and has an error populated" do
796
868
  expect(subject.valid?).to eq(false)
797
- expect(subject.errors).to eq(account_number: "is invalid")
869
+ expect(subject.errors).to eq(account_number: "format is invalid")
798
870
  end
799
871
  end
800
872
  end
@@ -853,41 +925,11 @@ describe Ibandit::IBAN do
853
925
 
854
926
  it { is_expected.to eq(false) }
855
927
 
856
- context "locale en", locale: :en do
857
- it "sets errors on the IBAN" do
858
- iban.valid_country_code?
859
- expect(iban.errors).
860
- to include(country_code: "'AA' is not a valid ISO 3166-1 IBAN " \
861
- "country code")
862
- end
863
- end
864
-
865
- context "locale de", locale: :de do
866
- it "sets errors on the IBAN" do
867
- iban.valid_country_code?
868
- expect(iban.errors).
869
- to include(country_code: "'AA' ist kein gültiges " \
870
- "IBAN-Länderkennzeichen gemäß ISO 3166-1")
871
- end
872
- end
873
-
874
- context "locale pt", locale: :pt do
875
- it "sets errors on the IBAN" do
876
- iban.valid_country_code?
877
- expect(iban.errors).
878
- to include(country_code: "'AA' não corresponde a um código de " \
879
- "país do IBAN válido segundo a norma " \
880
- "ISO 3166-1")
881
- end
882
- end
883
-
884
- context "locale nl", locale: :nl do
885
- it "sets errors on the IBAN" do
886
- iban.valid_country_code?
887
- expect(iban.errors).
888
- to include(country_code: "'AA' is geen geldig ISO 3166-1 IBAN " \
889
- "landcode")
890
- end
928
+ it "sets errors on the IBAN" do
929
+ iban.valid_country_code?
930
+ expect(iban.errors).to include(
931
+ country_code: "'AA' is not a valid ISO 3166-1 IBAN country code",
932
+ )
891
933
  end
892
934
  end
893
935
  end
@@ -912,112 +954,12 @@ describe Ibandit::IBAN do
912
954
 
913
955
  it { is_expected.to eq(false) }
914
956
 
915
- context "locale en", locale: :en do
916
- it "sets errors on the IBAN" do
917
- iban.valid_check_digits?
918
- expect(iban.errors).
919
- to include(check_digits: "Check digits failed modulus check. " \
920
- "Expected '82', received '12'.")
921
- end
922
- end
923
-
924
- context "locale fr", locale: :fr do
925
- it "sets errors on the IBAN" do
926
- iban.valid_check_digits?
927
- expect(iban.errors).
928
- to include(check_digits: "Les chiffres de contrôle n'ont pas " \
929
- "satisfait au contrôle de validité. " \
930
- "Attendus '82', reçus '12'.")
931
- end
932
- end
933
-
934
- context "locale de", locale: :de do
935
- it "sets errors on the IBAN" do
936
- iban.valid_check_digits?
937
- expect(iban.errors).
938
- to include(check_digits: "Prüfziffer hat Betragsprüfung nicht " \
939
- "bestanden. (82 Zeichen erwartet, 12 " \
940
- "angegeben).")
941
- end
942
- end
943
-
944
- context "locale pt", locale: :pt do
945
- it "sets errors on the IBAN" do
946
- iban.valid_check_digits?
947
- expect(iban.errors).
948
- to include(check_digits: "Verifique os dígitos. A verificação " \
949
- "do módulo falhou. '82' esperados, '12'" \
950
- " recebidos.")
951
- end
952
- end
953
-
954
- context "locale es", locale: :es do
955
- it "sets errors on the IBAN" do
956
- iban.valid_check_digits?
957
- expect(iban.errors).
958
- to include(check_digits: "Los dígitos de verificación han " \
959
- "generado un error en la comprobación " \
960
- "del módulo. Se esperaba \"82\", pero " \
961
- "se ha recibido \"12\".")
962
- end
963
- end
964
-
965
- context "locale it", locale: :it do
966
- it "sets errors on the IBAN" do
967
- iban.valid_check_digits?
968
- expect(iban.errors).
969
- to include(check_digits: "Controllo del modulo non riuscito per " \
970
- "i caratteri. 82 caratteri previsti, 12 " \
971
- "immessi.")
972
- end
973
- end
974
-
975
- context "locale nl", locale: :nl do
976
- it "sets errors on the IBAN" do
977
- iban.valid_check_digits?
978
- expect(iban.errors).
979
- to include(check_digits: "Controlegetal mislukte modulus check. " \
980
- "Verwachte '82', ontvangen '12'.")
981
- end
982
- end
983
-
984
- context "locale nb", locale: :nb do
985
- it "sets errors on the IBAN" do
986
- iban.valid_check_digits?
987
- expect(iban.errors).
988
- to include(check_digits: "Tallkontrollen mislyktes i " \
989
- "moduluskontrollen. Forventet '82'" \
990
- ", mottok '12'.")
991
- end
992
- end
993
-
994
- context "locale sl", locale: :sl do
995
- it "sets errors on the IBAN" do
996
- iban.valid_check_digits?
997
- expect(iban.errors).
998
- to include(check_digits: "Številke čeka niso uspešno prestale " \
999
- "preverjanja modula. Pričakovano '82', " \
1000
- "prejeto '12'.")
1001
- end
1002
- end
1003
-
1004
- context "locale da", locale: :da do
1005
- it "sets errors on the IBAN" do
1006
- iban.valid_check_digits?
1007
- expect(iban.errors).
1008
- to include(check_digits: "Kontrolcifre bestod ikke modulustjek. " \
1009
- "Forventede '82'; modtog '12'.")
1010
- end
1011
- end
1012
-
1013
- context "locale sv", locale: :sv do
1014
- it "sets errors on the IBAN" do
1015
- iban.valid_check_digits?
1016
- expect(iban.errors).
1017
- to include(check_digits: "Kontrollera felaktiga siffror med " \
1018
- "modulkontroll. Förväntade '82', " \
1019
- "mottagna '12'.")
1020
- end
957
+ it "sets errors on the IBAN" do
958
+ iban.valid_check_digits?
959
+ expect(iban.errors).to include(
960
+ check_digits: "Check digits failed modulus check. " \
961
+ "Expected '82', received '12'.",
962
+ )
1021
963
  end
1022
964
  end
1023
965
 
@@ -1056,111 +998,12 @@ describe Ibandit::IBAN do
1056
998
 
1057
999
  it { is_expected.to eq(false) }
1058
1000
 
1059
- context "locale en", locale: :en do
1060
- it "sets errors on the IBAN" do
1061
- iban.valid_length?
1062
- expect(iban.errors).
1063
- to include(length: "Length doesn't match SWIFT specification " \
1064
- "(expected 22 characters, received 20)")
1065
- end
1066
- end
1067
-
1068
- context "locale fr", locale: :fr do
1069
- it "sets errors on the IBAN" do
1070
- iban.valid_length?
1071
- expect(iban.errors).
1072
- to include(length: "La longueur ne correspond pas à la " \
1073
- "spécification SWIFT (22 caractères attendus," \
1074
- " 20 reçus)")
1075
- end
1076
- end
1077
-
1078
- context "locale de", locale: :de do
1079
- it "sets errors on the IBAN" do
1080
- iban.valid_length?
1081
- expect(iban.errors).
1082
- to include(length: "Länge entspricht nicht der " \
1083
- "SWIFT-Spezifikation (22 Zeichen erwartet, " \
1084
- "20 angegeben)")
1085
- end
1086
- end
1087
-
1088
- context "locale pt", locale: :pt do
1089
- it "sets errors on the IBAN" do
1090
- iban.valid_length?
1091
- expect(iban.errors).
1092
- to include(length: "O comprimento não corresponde à especificação" \
1093
- " do código SWIFT (22 caracteres esperados, 20" \
1094
- " recebidos)")
1095
- end
1096
- end
1097
-
1098
- context "locale es", locale: :es do
1099
- it "sets errors on the IBAN" do
1100
- iban.valid_length?
1101
- expect(iban.errors).
1102
- to include(length: "La longitud no coincide con la especificación" \
1103
- " SWIFT (se esperaban 22 caracteres, pero se " \
1104
- "han recibido 20)")
1105
- end
1106
- end
1107
-
1108
- context "locale it", locale: :it do
1109
- it "sets errors on the IBAN" do
1110
- iban.valid_length?
1111
- expect(iban.errors).
1112
- to include(length: "La lunghezza non corrisponde alla specifica " \
1113
- "SWIFT (22 caratteri previsti, 20 immessi)")
1114
- end
1115
- end
1116
-
1117
- context "locale nl", locale: :nl do
1118
- it "sets errors on the IBAN" do
1119
- iban.valid_length?
1120
- expect(iban.errors).
1121
- to include(length: "Lengte komt niet overeen met SWIFT-" \
1122
- "specificatie (verwachte 22 karakters, " \
1123
- "ontvangen 20)")
1124
- end
1125
- end
1126
-
1127
- context "locale nb", locale: :nb do
1128
- it "sets errors on the IBAN" do
1129
- iban.valid_length?
1130
- expect(iban.errors).
1131
- to include(length: "Lengden samsvarer ikke med " \
1132
- "SWIFT-spesifikasjonene (forventet 22 tegn, " \
1133
- "mottok 20)")
1134
- end
1135
- end
1136
-
1137
- context "locale sl", locale: :sl do
1138
- it "sets errors on the IBAN" do
1139
- iban.valid_length?
1140
- expect(iban.errors).
1141
- to include(length: "Dolžina se ne ujema z opredelitvijo za " \
1142
- "kodo SWIFT (pričakovani znaki: 22, " \
1143
- "prejeti znaki: 20)")
1144
- end
1145
- end
1146
-
1147
- context "locale da", locale: :da do
1148
- it "sets errors on the IBAN" do
1149
- iban.valid_length?
1150
- expect(iban.errors).
1151
- to include(length: "Længden modsvarer ikke SWIFT-specifikation" \
1152
- " (forventede 22 tegn, modtog 20)")
1153
- end
1154
- end
1155
-
1156
- context "locale sv", locale: :sv do
1157
- it "sets errors on the IBAN" do
1158
- iban.valid_length?
1159
- expect(iban.errors).
1160
- to include(length: "Längd matchar inte förväntad " \
1161
- "SWIFT-specifikation (förväntade 22 tecken, " \
1162
- "mottagna 20)")
1163
- end
1001
+ it "sets errors on the IBAN" do
1002
+ iban.valid_length?
1003
+ expect(iban.errors).to include(
1004
+ length: "Length doesn't match SWIFT specification " \
1005
+ "(expected 22 characters, received 20)",
1006
+ )
1164
1007
  end
1165
1008
  end
1166
1009
 
@@ -1188,99 +1031,11 @@ describe Ibandit::IBAN do
1188
1031
 
1189
1032
  it { is_expected.to eq(false) }
1190
1033
 
1191
- context "locale en", locale: :en do
1192
- it "sets errors on the IBAN" do
1193
- iban.valid_bank_code_length?
1194
- expect(iban.errors).
1195
- to include(bank_code: "is the wrong length (should be 4 " \
1196
- "characters)")
1197
- end
1198
- end
1199
-
1200
- context "locale fr", locale: :fr do
1201
- it "sets errors on the IBAN" do
1202
- iban.valid_bank_code_length?
1203
- expect(iban.errors).
1204
- to include(bank_code: "est une longueur incorrecte (doit " \
1205
- "contenir 4 caractères)")
1206
- end
1207
- end
1208
-
1209
- context "locale de", locale: :de do
1210
- it "sets errors on the IBAN" do
1211
- iban.valid_bank_code_length?
1212
- expect(iban.errors).
1213
- to include(bank_code: "hat nicht die richtige Länge (sollte " \
1214
- "4 Zeichen haben)")
1215
- end
1216
- end
1217
-
1218
- context "locale pt", locale: :pt do
1219
- it "sets errors on the IBAN" do
1220
- iban.valid_bank_code_length?
1221
- expect(iban.errors).
1222
- to include(bank_code: "não tem o comprimento correto (deve " \
1223
- "ter 4 caracteres)")
1224
- end
1225
- end
1226
-
1227
- context "locale es", locale: :es do
1228
- it "sets errors on the IBAN" do
1229
- iban.valid_bank_code_length?
1230
- expect(iban.errors).
1231
- to include(bank_code: "no tiene la longitud correcta (debe " \
1232
- "tener 4 caracteres)")
1233
- end
1234
- end
1235
-
1236
- context "locale it", locale: :it do
1237
- it "sets errors on the IBAN" do
1238
- iban.valid_bank_code_length?
1239
- expect(iban.errors).
1240
- to include(bank_code: "non ha la lunghezza richiesta (deve " \
1241
- "essere di 4 caratteri)")
1242
- end
1243
- end
1244
-
1245
- context "locale nl", locale: :nl do
1246
- it "sets errors on the IBAN" do
1247
- iban.valid_bank_code_length?
1248
- expect(iban.errors).
1249
- to include(bank_code: "heeft onjuiste lengte (moet 4 tekens " \
1250
- "lang zijn)")
1251
- end
1252
- end
1253
-
1254
- context "locale nb", locale: :nb do
1255
- it "sets errors on the IBAN" do
1256
- iban.valid_bank_code_length?
1257
- expect(iban.errors).
1258
- to include(bank_code: "har feil lengde (skal være 4 tegn)")
1259
- end
1260
- end
1261
-
1262
- context "locale sl", locale: :sl do
1263
- it "sets errors on the IBAN" do
1264
- iban.valid_bank_code_length?
1265
- expect(iban.errors).
1266
- to include(bank_code: "je napačne dolžine (biti mora 4 znakov)")
1267
- end
1268
- end
1269
-
1270
- context "locale da", locale: :da do
1271
- it "sets errors on the IBAN" do
1272
- iban.valid_bank_code_length?
1273
- expect(iban.errors).
1274
- to include(bank_code: "har forkert længde (skulle være 4 tegn)")
1275
- end
1276
- end
1277
-
1278
- context "locale sv", locale: :sv do
1279
- it "sets errors on the IBAN" do
1280
- iban.valid_bank_code_length?
1281
- expect(iban.errors).
1282
- to include(bank_code: "har fel längd (bör vara 4 tecken)")
1283
- end
1034
+ it "sets errors on the IBAN" do
1035
+ iban.valid_bank_code_length?
1036
+ expect(iban.errors).to include(
1037
+ bank_code: "is the wrong length (should be 4 characters)",
1038
+ )
1284
1039
  end
1285
1040
  end
1286
1041
 
@@ -1308,311 +1063,61 @@ describe Ibandit::IBAN do
1308
1063
 
1309
1064
  it { is_expected.to eq(false) }
1310
1065
 
1311
- context "locale en", locale: :en do
1312
- it "sets errors on the IBAN" do
1313
- iban.valid_branch_code_length?
1314
- expect(iban.errors).
1315
- to include(branch_code: "is the wrong length (should be 6 " \
1316
- "characters)")
1317
- end
1066
+ it "sets errors on the IBAN" do
1067
+ iban.valid_branch_code_length?
1068
+ expect(iban.errors).to include(
1069
+ branch_code: "is the wrong length (should be 6 characters)",
1070
+ )
1318
1071
  end
1072
+ end
1319
1073
 
1320
- context "locale fr", locale: :fr do
1321
- it "sets errors on the IBAN" do
1322
- iban.valid_branch_code_length?
1323
- expect(iban.errors).
1324
- to include(branch_code: "est une longueur incorrecte (doit " \
1325
- "contenir 6 caractères)")
1326
- end
1327
- end
1074
+ context "without a branch code" do
1075
+ before { allow(iban).to receive(:swift_branch_code).and_return(nil) }
1328
1076
 
1329
- context "locale de", locale: :de do
1330
- it "sets errors on the IBAN" do
1331
- iban.valid_branch_code_length?
1332
- expect(iban.errors).
1333
- to include(branch_code: "hat nicht die richtige Länge (sollte " \
1334
- "6 Zeichen haben)")
1335
- end
1336
- end
1077
+ it { is_expected.to eq(false) }
1337
1078
 
1338
- context "locale pt", locale: :pt do
1339
- it "sets errors on the IBAN" do
1340
- iban.valid_branch_code_length?
1341
- expect(iban.errors).
1342
- to include(branch_code: "não tem o comprimento correto (deve " \
1343
- "ter 6 caracteres)")
1344
- end
1079
+ it "sets errors on the IBAN" do
1080
+ iban.valid_branch_code_length?
1081
+ expect(iban.errors).to include(branch_code: "is required")
1345
1082
  end
1083
+ end
1346
1084
 
1347
- context "locale es", locale: :es do
1348
- it "sets errors on the IBAN" do
1349
- iban.valid_branch_code_length?
1350
- expect(iban.errors).
1351
- to include(branch_code: "no tiene la longitud correcta (debe " \
1352
- "tener 6 caracteres)")
1353
- end
1354
- end
1085
+ context "with an invalid country_code" do
1086
+ before { allow(iban).to receive(:country_code).and_return("AA") }
1355
1087
 
1356
- context "locale it", locale: :it do
1357
- it "sets errors on the IBAN" do
1358
- iban.valid_branch_code_length?
1359
- expect(iban.errors).
1360
- to include(branch_code: "non ha la lunghezza richiesta (deve " \
1361
- "essere di 6 caratteri)")
1362
- end
1363
- end
1088
+ it { is_expected.to be_nil }
1364
1089
 
1365
- context "locale nl", locale: :nl do
1366
- it "sets errors on the IBAN" do
1367
- iban.valid_branch_code_length?
1368
- expect(iban.errors).
1369
- to include(branch_code: "heeft onjuiste lengte (moet 6 tekens " \
1370
- "lang zijn)")
1371
- end
1090
+ it "does not set errors on the IBAN" do
1091
+ iban.valid_branch_code_length?
1092
+ expect(iban.errors).to_not include(:branch_code)
1372
1093
  end
1094
+ end
1095
+ end
1373
1096
 
1374
- context "locale nb", locale: :nb do
1375
- it "sets errors on the IBAN" do
1376
- iban.valid_branch_code_length?
1377
- expect(iban.errors).
1378
- to include(branch_code: "har feil lengde (skal være 6 tegn)")
1379
- end
1380
- end
1097
+ describe "#valid_account_number_length?" do
1098
+ subject { iban.valid_account_number_length? }
1381
1099
 
1382
- context "locale sl", locale: :sl do
1383
- it "sets errors on the IBAN" do
1384
- iban.valid_branch_code_length?
1385
- expect(iban.errors).
1386
- to include(branch_code: "je napačne dolžine (biti mora 6 znakov)")
1387
- end
1388
- end
1100
+ context "with valid details" do
1101
+ it { is_expected.to eq(true) }
1102
+ end
1389
1103
 
1390
- context "locale da", locale: :da do
1391
- it "sets errors on the IBAN" do
1392
- iban.valid_branch_code_length?
1393
- expect(iban.errors).
1394
- to include(branch_code: "har forkert længde (skulle være 6 tegn)")
1395
- end
1104
+ context "with an invalid account_number" do
1105
+ before do
1106
+ allow(iban).to receive(:swift_account_number).and_return("1234567")
1396
1107
  end
1397
1108
 
1398
- context "locale sv", locale: :sv do
1399
- it "sets errors on the IBAN" do
1400
- iban.valid_branch_code_length?
1401
- expect(iban.errors).
1402
- to include(branch_code: "har fel längd (bör vara 6 tecken)")
1403
- end
1109
+ it { is_expected.to eq(false) }
1110
+
1111
+ it "sets errors on the IBAN" do
1112
+ iban.valid_account_number_length?
1113
+ expect(iban.errors).to include(
1114
+ account_number: "is the wrong length (should be 8 characters)",
1115
+ )
1404
1116
  end
1405
1117
  end
1406
1118
 
1407
- context "without a branch code" do
1408
- before { allow(iban).to receive(:swift_branch_code).and_return(nil) }
1409
-
1410
- it { is_expected.to eq(false) }
1411
-
1412
- context "locale en", locale: :en do
1413
- it "sets errors on the IBAN" do
1414
- iban.valid_branch_code_length?
1415
- expect(iban.errors).to include(branch_code: "is required")
1416
- end
1417
- end
1418
-
1419
- context "locale fr", locale: :fr do
1420
- it "sets errors on the IBAN" do
1421
- iban.valid_branch_code_length?
1422
- expect(iban.errors).to include(branch_code: "est obligatoire")
1423
- end
1424
- end
1425
-
1426
- context "locale de", locale: :de do
1427
- it "sets errors on the IBAN" do
1428
- iban.valid_branch_code_length?
1429
- expect(iban.errors).to include(branch_code: "ist erforderlich")
1430
- end
1431
- end
1432
-
1433
- context "locale pt", locale: :pt do
1434
- it "sets errors on the IBAN" do
1435
- iban.valid_branch_code_length?
1436
- expect(iban.errors).to include(branch_code: "é obrigatório")
1437
- end
1438
- end
1439
-
1440
- context "locale es", locale: :es do
1441
- it "sets errors on the IBAN" do
1442
- iban.valid_branch_code_length?
1443
- expect(iban.errors).to include(branch_code: "es obligatorio")
1444
- end
1445
- end
1446
-
1447
- context "locale it", locale: :it do
1448
- it "sets errors on the IBAN" do
1449
- iban.valid_branch_code_length?
1450
- expect(iban.errors).to include(branch_code: "è obbligatorio")
1451
- end
1452
- end
1453
-
1454
- context "locale nl", locale: :nl do
1455
- it "sets errors on the IBAN" do
1456
- iban.valid_branch_code_length?
1457
- expect(iban.errors).to include(branch_code: "moet opgegeven zijn")
1458
- end
1459
- end
1460
-
1461
- context "locale nb", locale: :nb do
1462
- it "sets errors on the IBAN" do
1463
- iban.valid_branch_code_length?
1464
- expect(iban.errors).to include(branch_code: "er påkrevd")
1465
- end
1466
- end
1467
-
1468
- context "locale sl", locale: :sl do
1469
- it "sets errors on the IBAN" do
1470
- iban.valid_branch_code_length?
1471
- expect(iban.errors).to include(branch_code: "je obvezno")
1472
- end
1473
- end
1474
-
1475
- context "locale da", locale: :da do
1476
- it "sets errors on the IBAN" do
1477
- iban.valid_branch_code_length?
1478
- expect(iban.errors).to include(branch_code: "er påkrævet")
1479
- end
1480
- end
1481
-
1482
- context "locale sv", locale: :sv do
1483
- it "sets errors on the IBAN" do
1484
- iban.valid_branch_code_length?
1485
- expect(iban.errors).to include(branch_code: "krävs")
1486
- end
1487
- end
1488
- end
1489
-
1490
- context "with an invalid country_code" do
1491
- before { allow(iban).to receive(:country_code).and_return("AA") }
1492
-
1493
- it { is_expected.to be_nil }
1494
-
1495
- it "does not set errors on the IBAN" do
1496
- iban.valid_branch_code_length?
1497
- expect(iban.errors).to_not include(:branch_code)
1498
- end
1499
- end
1500
- end
1501
-
1502
- describe "#valid_account_number_length?" do
1503
- subject { iban.valid_account_number_length? }
1504
-
1505
- context "with valid details" do
1506
- it { is_expected.to eq(true) }
1507
- end
1508
-
1509
- context "with an invalid account_number" do
1510
- before do
1511
- allow(iban).to receive(:swift_account_number).and_return("1234567")
1512
- end
1513
-
1514
- it { is_expected.to eq(false) }
1515
-
1516
- context "locale en", locale: :en do
1517
- it "sets errors on the IBAN" do
1518
- iban.valid_account_number_length?
1519
- expect(iban.errors).
1520
- to include(account_number: "is the wrong length (should be 8 " \
1521
- "characters)")
1522
- end
1523
- end
1524
-
1525
- context "locale fr", locale: :fr do
1526
- it "sets errors on the IBAN" do
1527
- iban.valid_account_number_length?
1528
- expect(iban.errors).
1529
- to include(account_number: "est une longueur incorrecte (doit " \
1530
- "contenir 8 caractères)")
1531
- end
1532
- end
1533
-
1534
- context "locale de", locale: :de do
1535
- it "sets errors on the IBAN" do
1536
- iban.valid_account_number_length?
1537
- expect(iban.errors).
1538
- to include(account_number: "hat nicht die richtige Länge (sollte " \
1539
- "8 Zeichen haben)")
1540
- end
1541
- end
1542
-
1543
- context "locale pt", locale: :pt do
1544
- it "sets errors on the IBAN" do
1545
- iban.valid_account_number_length?
1546
- expect(iban.errors).
1547
- to include(account_number: "não tem o comprimento correto (deve " \
1548
- "ter 8 caracteres)")
1549
- end
1550
- end
1551
-
1552
- context "locale es", locale: :es do
1553
- it "sets errors on the IBAN" do
1554
- iban.valid_account_number_length?
1555
- expect(iban.errors).
1556
- to include(account_number: "no tiene la longitud correcta (debe " \
1557
- "tener 8 caracteres)")
1558
- end
1559
- end
1560
-
1561
- context "locale it", locale: :it do
1562
- it "sets errors on the IBAN" do
1563
- iban.valid_account_number_length?
1564
- expect(iban.errors).
1565
- to include(account_number: "non ha la lunghezza richiesta (deve " \
1566
- "essere di 8 caratteri)")
1567
- end
1568
- end
1569
-
1570
- context "locale nl", locale: :nl do
1571
- it "sets errors on the IBAN" do
1572
- iban.valid_account_number_length?
1573
- expect(iban.errors).
1574
- to include(account_number: "heeft onjuiste lengte (moet 8 " \
1575
- "tekens lang zijn)")
1576
- end
1577
- end
1578
-
1579
- context "locale nb", locale: :nb do
1580
- it "sets errors on the IBAN" do
1581
- iban.valid_account_number_length?
1582
- expect(iban.errors).
1583
- to include(account_number: "har feil lengde (skal være 8 tegn)")
1584
- end
1585
- end
1586
-
1587
- context "locale sl", locale: :sl do
1588
- it "sets errors on the IBAN" do
1589
- iban.valid_account_number_length?
1590
- expect(iban.errors).
1591
- to include(account_number: "je napačne dolžine (biti mora 8" \
1592
- " znakov)")
1593
- end
1594
- end
1595
-
1596
- context "locale da", locale: :da do
1597
- it "sets errors on the IBAN" do
1598
- iban.valid_account_number_length?
1599
- expect(iban.errors).
1600
- to include(account_number: "har forkert længde (skulle være 8" \
1601
- " tegn)")
1602
- end
1603
- end
1604
-
1605
- context "locale sv", locale: :sv do
1606
- it "sets errors on the IBAN" do
1607
- iban.valid_account_number_length?
1608
- expect(iban.errors).
1609
- to include(account_number: "har fel längd (bör vara 8 tecken)")
1610
- end
1611
- end
1612
- end
1613
-
1614
- context "with an invalid country_code" do
1615
- before { allow(iban).to receive(:country_code).and_return("AA") }
1119
+ context "with an invalid country_code" do
1120
+ before { allow(iban).to receive(:country_code).and_return("AA") }
1616
1121
 
1617
1122
  it { is_expected.to be_nil }
1618
1123
 
@@ -1637,94 +1142,11 @@ describe Ibandit::IBAN do
1637
1142
 
1638
1143
  it { is_expected.to eq(false) }
1639
1144
 
1640
- context "locale en", locale: :en do
1641
- it "sets errors on the IBAN" do
1642
- iban.valid_characters?
1643
- expect(iban.errors).
1644
- to include(characters: "Non-alphanumeric characters found: -")
1645
- end
1646
- end
1647
-
1648
- context "locale fr", locale: :fr do
1649
- it "sets errors on the IBAN" do
1650
- iban.valid_characters?
1651
- expect(iban.errors).
1652
- to include(characters: "Caractères non alphanumériques trouvés : -")
1653
- end
1654
- end
1655
-
1656
- context "locale de", locale: :de do
1657
- it "sets errors on the IBAN" do
1658
- iban.valid_characters?
1659
- expect(iban.errors).
1660
- to include(characters: "Nicht-alphanumerischen Zeichen gefunden: -")
1661
- end
1662
- end
1663
-
1664
- context "locale pt", locale: :pt do
1665
- it "sets errors on the IBAN" do
1666
- iban.valid_characters?
1667
- expect(iban.errors).
1668
- to include(characters: "Caracteres não alfanuméricos " \
1669
- "encontrados: -")
1670
- end
1671
- end
1672
-
1673
- context "locale es", locale: :es do
1674
- it "sets errors on the IBAN" do
1675
- iban.valid_characters?
1676
- expect(iban.errors).
1677
- to include(characters: "Se han encontrado caracteres no " \
1678
- "alfanuméricos: -")
1679
- end
1680
- end
1681
-
1682
- context "locale it", locale: :it do
1683
- it "sets errors on the IBAN" do
1684
- iban.valid_characters?
1685
- expect(iban.errors).
1686
- to include(characters: "Caratteri non alfanumerici trovati: -")
1687
- end
1688
- end
1689
-
1690
- context "locale nl", locale: :nl do
1691
- it "sets errors on the IBAN" do
1692
- iban.valid_characters?
1693
- expect(iban.errors).
1694
- to include(characters: "Niet-alfanumerieke tekens gevonden: -")
1695
- end
1696
- end
1697
-
1698
- context "locale nb", locale: :nb do
1699
- it "sets errors on the IBAN" do
1700
- iban.valid_characters?
1701
- expect(iban.errors).
1702
- to include(characters: "Ikke-alfanumeriske tegn funnet: -")
1703
- end
1704
- end
1705
-
1706
- context "locale sl", locale: :sl do
1707
- it "sets errors on the IBAN" do
1708
- iban.valid_characters?
1709
- expect(iban.errors).
1710
- to include(characters: "Najdeni ne-alfanumerični znaki: -")
1711
- end
1712
- end
1713
-
1714
- context "locale da", locale: :da do
1715
- it "sets errors on the IBAN" do
1716
- iban.valid_characters?
1717
- expect(iban.errors).
1718
- to include(characters: "Ikke-alfanumeriske tegn registreret: -")
1719
- end
1720
- end
1721
-
1722
- context "locale sv", locale: :sv do
1723
- it "sets errors on the IBAN" do
1724
- iban.valid_characters?
1725
- expect(iban.errors).
1726
- to include(characters: "Icke alfanumeriska tecken hittades: -")
1727
- end
1145
+ it "sets errors on the IBAN" do
1146
+ iban.valid_characters?
1147
+ expect(iban.errors).to include(
1148
+ characters: "Non-alphanumeric characters found: -",
1149
+ )
1728
1150
  end
1729
1151
  end
1730
1152
  end
@@ -1743,92 +1165,9 @@ describe Ibandit::IBAN do
1743
1165
 
1744
1166
  it { is_expected.to eq(false) }
1745
1167
 
1746
- context "locale en", locale: :en do
1747
- it "sets errors on the IBAN" do
1748
- iban.valid_format?
1749
- expect(iban.errors).
1750
- to include(format: "Unexpected format for a GB IBAN.")
1751
- end
1752
- end
1753
-
1754
- context "locale fr", locale: :fr do
1755
- it "sets errors on the IBAN" do
1756
- iban.valid_format?
1757
- expect(iban.errors).
1758
- to include(format: "Format non attendu pour un IBAN GB.")
1759
- end
1760
- end
1761
-
1762
- context "locale de", locale: :de do
1763
- it "sets errors on the IBAN" do
1764
- iban.valid_format?
1765
- expect(iban.errors).
1766
- to include(format: "Unerwartetes Format für eine GB-IBAN.")
1767
- end
1768
- end
1769
-
1770
- context "locale pt", locale: :pt do
1771
- it "sets errors on the IBAN" do
1772
- iban.valid_format?
1773
- expect(iban.errors).
1774
- to include(format: "Formato inesperado para um IBAN GB.")
1775
- end
1776
- end
1777
-
1778
- context "locale es", locale: :es do
1779
- it "sets errors on the IBAN" do
1780
- iban.valid_format?
1781
- expect(iban.errors).
1782
- to include(format: "Formato inesperado para un IBAN de GB.")
1783
- end
1784
- end
1785
-
1786
- context "locale it", locale: :it do
1787
- it "sets errors on the IBAN" do
1788
- iban.valid_format?
1789
- expect(iban.errors).
1790
- to include(format: "Formato imprevisto per un IBAN GB.")
1791
- end
1792
- end
1793
-
1794
- context "locale nl", locale: :nl do
1795
- it "sets errors on the IBAN" do
1796
- iban.valid_format?
1797
- expect(iban.errors).
1798
- to include(format: "Onverwachte formaat voor een GB IBAN.")
1799
- end
1800
- end
1801
-
1802
- context "locale nb", locale: :nb do
1803
- it "sets errors on the IBAN" do
1804
- iban.valid_format?
1805
- expect(iban.errors).
1806
- to include(format: "Uventet format for IBAN for GB.")
1807
- end
1808
- end
1809
-
1810
- context "locale sl", locale: :sl do
1811
- it "sets errors on the IBAN" do
1812
- iban.valid_format?
1813
- expect(iban.errors).
1814
- to include(format: "Nepričakovana oblika zapisa GB v IBAN.")
1815
- end
1816
- end
1817
-
1818
- context "locale da", locale: :da do
1819
- it "sets errors on the IBAN" do
1820
- iban.valid_format?
1821
- expect(iban.errors).
1822
- to include(format: "Uventet format for en IBAN fra GB.")
1823
- end
1824
- end
1825
-
1826
- context "locale sv", locale: :sv do
1827
- it "sets errors on the IBAN" do
1828
- iban.valid_format?
1829
- expect(iban.errors).
1830
- to include(format: "Oväntat format för GB IBAN.")
1831
- end
1168
+ it "sets errors on the IBAN" do
1169
+ iban.valid_format?
1170
+ expect(iban.errors).to include(format: "Unexpected format for a GB IBAN.")
1832
1171
  end
1833
1172
  end
1834
1173
 
@@ -1859,81 +1198,9 @@ describe Ibandit::IBAN do
1859
1198
 
1860
1199
  it { is_expected.to eq(false) }
1861
1200
 
1862
- context "locale en", locale: :en do
1863
- it "sets errors on the IBAN" do
1864
- iban.valid_bank_code_format?
1865
- expect(iban.errors).to include(bank_code: "is invalid")
1866
- end
1867
- end
1868
-
1869
- context "locale fr", locale: :fr do
1870
- it "sets errors on the IBAN" do
1871
- iban.valid_bank_code_format?
1872
- expect(iban.errors).to include(bank_code: "n'est pas valide")
1873
- end
1874
- end
1875
-
1876
- context "locale de", locale: :de do
1877
- it "sets errors on the IBAN" do
1878
- iban.valid_bank_code_format?
1879
- expect(iban.errors).to include(bank_code: "ist ungültig")
1880
- end
1881
- end
1882
-
1883
- context "locale pt", locale: :pt do
1884
- it "sets errors on the IBAN" do
1885
- iban.valid_bank_code_format?
1886
- expect(iban.errors).to include(bank_code: "é inválido")
1887
- end
1888
- end
1889
-
1890
- context "locale es", locale: :es do
1891
- it "sets errors on the IBAN" do
1892
- iban.valid_bank_code_format?
1893
- expect(iban.errors).to include(bank_code: "no es válido")
1894
- end
1895
- end
1896
-
1897
- context "locale it", locale: :it do
1898
- it "sets errors on the IBAN" do
1899
- iban.valid_bank_code_format?
1900
- expect(iban.errors).to include(bank_code: "non è valido")
1901
- end
1902
- end
1903
-
1904
- context "locale nl", locale: :nl do
1905
- it "sets errors on the IBAN" do
1906
- iban.valid_bank_code_format?
1907
- expect(iban.errors).to include(bank_code: "is ongeldig")
1908
- end
1909
- end
1910
-
1911
- context "locale nb", locale: :nb do
1912
- it "sets errors on the IBAN" do
1913
- iban.valid_bank_code_format?
1914
- expect(iban.errors).to include(bank_code: "er ikke gyldig")
1915
- end
1916
- end
1917
-
1918
- context "locale sl", locale: :sl do
1919
- it "sets errors on the IBAN" do
1920
- iban.valid_bank_code_format?
1921
- expect(iban.errors).to include(bank_code: "ni veljavno")
1922
- end
1923
- end
1924
-
1925
- context "locale da", locale: :da do
1926
- it "sets errors on the IBAN" do
1927
- iban.valid_bank_code_format?
1928
- expect(iban.errors).to include(bank_code: "er ugyldig")
1929
- end
1930
- end
1931
-
1932
- context "locale sv", locale: :sv do
1933
- it "sets errors on the IBAN" do
1934
- iban.valid_bank_code_format?
1935
- expect(iban.errors).to include(bank_code: "är ogiltig")
1936
- end
1201
+ it "sets errors on the IBAN" do
1202
+ iban.valid_bank_code_format?
1203
+ expect(iban.errors).to include(bank_code: "format is invalid")
1937
1204
  end
1938
1205
  end
1939
1206
 
@@ -1972,106 +1239,34 @@ describe Ibandit::IBAN do
1972
1239
 
1973
1240
  it { is_expected.to eq(false) }
1974
1241
 
1975
- context "locale en", locale: :en do
1976
- it "sets errors on the IBAN" do
1977
- iban.valid_branch_code_format?
1978
- expect(iban.errors).to include(branch_code: "is invalid")
1979
- end
1242
+ it "sets errors on the IBAN" do
1243
+ iban.valid_branch_code_format?
1244
+ expect(iban.errors).to include(branch_code: "format is invalid")
1980
1245
  end
1246
+ end
1981
1247
 
1982
- context "locale fr", locale: :fr do
1983
- it "sets errors on the IBAN" do
1984
- iban.valid_branch_code_format?
1985
- expect(iban.errors).to include(branch_code: "n'est pas valide")
1986
- end
1987
- end
1248
+ context "with an invalid country code" do
1249
+ let(:iban_code) { "AA821234BANK121234567B" }
1988
1250
 
1989
- context "locale de", locale: :de do
1990
- it "sets errors on the IBAN" do
1991
- iban.valid_branch_code_format?
1992
- expect(iban.errors).to include(branch_code: "ist ungültig")
1993
- end
1994
- end
1251
+ it { is_expected.to be_nil }
1252
+ end
1995
1253
 
1996
- context "locale pt", locale: :pt do
1997
- it "sets errors on the IBAN" do
1998
- iban.valid_branch_code_format?
1999
- expect(iban.errors).to include(branch_code: "é inválido")
2000
- end
1254
+ context "with a wrong-length branch code" do
1255
+ let(:arg) do
1256
+ {
1257
+ country_code: "PT",
1258
+ bank_code: "1234",
1259
+ branch_code: "ABC",
1260
+ account_number: "123456789123",
1261
+ }
2001
1262
  end
2002
1263
 
2003
- context "locale es", locale: :es do
2004
- it "sets errors on the IBAN" do
2005
- iban.valid_branch_code_format?
2006
- expect(iban.errors).to include(branch_code: "no es válido")
2007
- end
2008
- end
1264
+ it { is_expected.to be_nil }
1265
+ end
1266
+ end
2009
1267
 
2010
- context "locale it", locale: :it do
2011
- it "sets errors on the IBAN" do
2012
- iban.valid_branch_code_format?
2013
- expect(iban.errors).to include(branch_code: "non è valido")
2014
- end
2015
- end
2016
-
2017
- context "locale nl", locale: :nl do
2018
- it "sets errors on the IBAN" do
2019
- iban.valid_branch_code_format?
2020
- expect(iban.errors).to include(branch_code: "is ongeldig")
2021
- end
2022
- end
2023
-
2024
- context "locale nb", locale: :nb do
2025
- it "sets errors on the IBAN" do
2026
- iban.valid_branch_code_format?
2027
- expect(iban.errors).to include(branch_code: "er ikke gyldig")
2028
- end
2029
- end
2030
-
2031
- context "locale sl", locale: :sl do
2032
- it "sets errors on the IBAN" do
2033
- iban.valid_branch_code_format?
2034
- expect(iban.errors).to include(branch_code: "ni veljavno")
2035
- end
2036
- end
2037
-
2038
- context "locale da", locale: :da do
2039
- it "sets errors on the IBAN" do
2040
- iban.valid_branch_code_format?
2041
- expect(iban.errors).to include(branch_code: "er ugyldig")
2042
- end
2043
- end
2044
-
2045
- context "locale sv", locale: :sv do
2046
- it "sets errors on the IBAN" do
2047
- iban.valid_branch_code_format?
2048
- expect(iban.errors).to include(branch_code: "är ogiltig")
2049
- end
2050
- end
2051
- end
2052
-
2053
- context "with an invalid country code" do
2054
- let(:iban_code) { "AA821234BANK121234567B" }
2055
-
2056
- it { is_expected.to be_nil }
2057
- end
2058
-
2059
- context "with a wrong-length branch code" do
2060
- let(:arg) do
2061
- {
2062
- country_code: "PT",
2063
- bank_code: "1234",
2064
- branch_code: "ABC",
2065
- account_number: "123456789123",
2066
- }
2067
- end
2068
-
2069
- it { is_expected.to be_nil }
2070
- end
2071
- end
2072
-
2073
- describe "#valid_account_number_format?" do
2074
- subject { iban.valid_account_number_format? }
1268
+ describe "#valid_account_number_format?" do
1269
+ subject { iban.valid_account_number_format? }
2075
1270
 
2076
1271
  context "DE non-numeric account number" do
2077
1272
  let(:arg) do
@@ -2084,81 +1279,9 @@ describe Ibandit::IBAN do
2084
1279
 
2085
1280
  it { is_expected.to eq(false) }
2086
1281
 
2087
- context "locale en", locale: :en do
2088
- it "sets errors on the IBAN" do
2089
- iban.valid_account_number_format?
2090
- expect(iban.errors).to include(account_number: "is invalid")
2091
- end
2092
- end
2093
-
2094
- context "locale fr", locale: :fr do
2095
- it "sets errors on the IBAN" do
2096
- iban.valid_account_number_format?
2097
- expect(iban.errors).to include(account_number: "n'est pas valide")
2098
- end
2099
- end
2100
-
2101
- context "locale de", locale: :de do
2102
- it "sets errors on the IBAN" do
2103
- iban.valid_account_number_format?
2104
- expect(iban.errors).to include(account_number: "ist ungültig")
2105
- end
2106
- end
2107
-
2108
- context "locale pt", locale: :pt do
2109
- it "sets errors on the IBAN" do
2110
- iban.valid_account_number_format?
2111
- expect(iban.errors).to include(account_number: "é inválido")
2112
- end
2113
- end
2114
-
2115
- context "locale es", locale: :es do
2116
- it "sets errors on the IBAN" do
2117
- iban.valid_account_number_format?
2118
- expect(iban.errors).to include(account_number: "no es válido")
2119
- end
2120
- end
2121
-
2122
- context "locale it", locale: :it do
2123
- it "sets errors on the IBAN" do
2124
- iban.valid_account_number_format?
2125
- expect(iban.errors).to include(account_number: "non è valido")
2126
- end
2127
- end
2128
-
2129
- context "locale nl", locale: :nl do
2130
- it "sets errors on the IBAN" do
2131
- iban.valid_account_number_format?
2132
- expect(iban.errors).to include(account_number: "is ongeldig")
2133
- end
2134
- end
2135
-
2136
- context "locale nb", locale: :nb do
2137
- it "sets errors on the IBAN" do
2138
- iban.valid_account_number_format?
2139
- expect(iban.errors).to include(account_number: "er ikke gyldig")
2140
- end
2141
- end
2142
-
2143
- context "locale sl", locale: :sl do
2144
- it "sets errors on the IBAN" do
2145
- iban.valid_account_number_format?
2146
- expect(iban.errors).to include(account_number: "ni veljavno")
2147
- end
2148
- end
2149
-
2150
- context "locale da", locale: :da do
2151
- it "sets errors on the IBAN" do
2152
- iban.valid_account_number_format?
2153
- expect(iban.errors).to include(account_number: "er ugyldig")
2154
- end
2155
- end
2156
-
2157
- context "locale sv", locale: :sv do
2158
- it "sets errors on the IBAN" do
2159
- iban.valid_account_number_format?
2160
- expect(iban.errors).to include(account_number: "är ogiltig")
2161
- end
1282
+ it "sets errors on the IBAN" do
1283
+ iban.valid_account_number_format?
1284
+ expect(iban.errors).to include(account_number: "format is invalid")
2162
1285
  end
2163
1286
  end
2164
1287
 
@@ -2217,54 +1340,8 @@ describe Ibandit::IBAN do
2217
1340
 
2218
1341
  it { is_expected.to be(false) }
2219
1342
 
2220
- context "locale en", locale: :en do
2221
- specify { expect(iban.errors).to include(bank_code: "is invalid") }
2222
- end
2223
-
2224
- context "locale fr", locale: :fr do
2225
- specify do
2226
- expect(iban.errors).to include(bank_code: "n'est pas valide")
2227
- end
2228
- end
2229
-
2230
- context "locale de", locale: :de do
2231
- specify do
2232
- expect(iban.errors).to include(bank_code: "ist ungültig")
2233
- end
2234
- end
2235
-
2236
- context "locale pt", locale: :pt do
2237
- specify { expect(iban.errors).to include(bank_code: "é inválido") }
2238
- end
2239
-
2240
- context "locale es", locale: :es do
2241
- specify { expect(iban.errors).to include(bank_code: "no es válido") }
2242
- end
2243
-
2244
- context "locale it", locale: :it do
2245
- specify { expect(iban.errors).to include(bank_code: "non è valido") }
2246
- end
2247
-
2248
- context "locale nl", locale: :nl do
2249
- specify { expect(iban.errors).to include(bank_code: "is ongeldig") }
2250
- end
2251
-
2252
- context "locale nb", locale: :nb do
2253
- specify do
2254
- expect(iban.errors).to include(bank_code: "er ikke gyldig")
2255
- end
2256
- end
2257
-
2258
- context "locale sl", locale: :sl do
2259
- specify { expect(iban.errors).to include(bank_code: "ni veljavno") }
2260
- end
2261
-
2262
- context "locale da", locale: :da do
2263
- specify { expect(iban.errors).to include(bank_code: "er ugyldig") }
2264
- end
2265
-
2266
- context "locale sv", locale: :sv do
2267
- specify { expect(iban.errors).to include(bank_code: "är ogiltig") }
1343
+ it "sets the errors on the IBAN" do
1344
+ expect(iban.errors).to include(bank_code: "did not pass modulus check")
2268
1345
  end
2269
1346
  end
2270
1347
 
@@ -2290,70 +1367,8 @@ describe Ibandit::IBAN do
2290
1367
 
2291
1368
  it { is_expected.to be(false) }
2292
1369
 
2293
- context "locale en", locale: :en do
2294
- specify do
2295
- expect(iban.errors).to include(branch_code: "is invalid")
2296
- end
2297
- end
2298
-
2299
- context "locale fr", locale: :fr do
2300
- specify do
2301
- expect(iban.errors).to include(branch_code: "n'est pas valide")
2302
- end
2303
- end
2304
-
2305
- context "locale de", locale: :de do
2306
- specify do
2307
- expect(iban.errors).to include(branch_code: "ist ungültig")
2308
- end
2309
- end
2310
-
2311
- context "locale pt", locale: :pt do
2312
- specify do
2313
- expect(iban.errors).to include(branch_code: "é inválido")
2314
- end
2315
- end
2316
-
2317
- context "locale es", locale: :es do
2318
- specify do
2319
- expect(iban.errors).to include(branch_code: "no es válido")
2320
- end
2321
- end
2322
-
2323
- context "locale it", locale: :it do
2324
- specify do
2325
- expect(iban.errors).to include(branch_code: "non è valido")
2326
- end
2327
- end
2328
-
2329
- context "locale nl", locale: :nl do
2330
- specify do
2331
- expect(iban.errors).to include(branch_code: "is ongeldig")
2332
- end
2333
- end
2334
-
2335
- context "locale nb", locale: :nb do
2336
- specify do
2337
- expect(iban.errors).to include(branch_code: "er ikke gyldig")
2338
- end
2339
- end
2340
-
2341
- context "locale sl", locale: :sl do
2342
- specify do
2343
- expect(iban.errors).to include(branch_code: "ni veljavno")
2344
- end
2345
- end
2346
-
2347
- context "locale da", locale: :da do
2348
- specify do
2349
- expect(iban.errors).to include(branch_code: "er ugyldig")
2350
- end
2351
- end
2352
-
2353
- context "locale sv", locale: :sv do
2354
- specify do
2355
- expect(iban.errors).to include(branch_code: "är ogiltig")
2356
- end
1370
+ it "sets the errors on the IBAN" do
1371
+ expect(iban.errors).to include(branch_code: "did not pass modulus check")
2357
1372
  end
2358
1373
  end
2359
1374
 
@@ -2372,70 +1387,8 @@ describe Ibandit::IBAN do
2372
1387
 
2373
1388
  it { is_expected.to be(false) }
2374
1389
 
2375
- context "locale en", locale: :en do
2376
- specify do
2377
- expect(iban.errors).to include(account_number: "is invalid")
2378
- end
2379
- end
2380
-
2381
- context "locale fr", locale: :fr do
2382
- specify do
2383
- expect(iban.errors).to include(account_number: "n'est pas valide")
2384
- end
2385
- end
2386
-
2387
- context "locale de", locale: :de do
2388
- specify do
2389
- expect(iban.errors).to include(account_number: "ist ungültig")
2390
- end
2391
- end
2392
-
2393
- context "locale pt", locale: :pt do
2394
- specify do
2395
- expect(iban.errors).to include(account_number: "é inválido")
2396
- end
2397
- end
2398
-
2399
- context "locale es", locale: :es do
2400
- specify do
2401
- expect(iban.errors).to include(account_number: "no es válido")
2402
- end
2403
- end
2404
-
2405
- context "locale it", locale: :it do
2406
- specify do
2407
- expect(iban.errors).to include(account_number: "non è valido")
2408
- end
2409
- end
2410
-
2411
- context "locale nl", locale: :nl do
2412
- specify do
2413
- expect(iban.errors).to include(account_number: "is ongeldig")
2414
- end
2415
- end
2416
-
2417
- context "locale nb", locale: :nb do
2418
- specify do
2419
- expect(iban.errors).to include(account_number: "er ikke gyldig")
2420
- end
2421
- end
2422
-
2423
- context "locale sl", locale: :sl do
2424
- specify do
2425
- expect(iban.errors).to include(account_number: "ni veljavno")
2426
- end
2427
- end
2428
-
2429
- context "locale da", locale: :da do
2430
- specify do
2431
- expect(iban.errors).to include(account_number: "er ugyldig")
2432
- end
2433
- end
2434
-
2435
- context "locale sv", locale: :sv do
2436
- specify do
2437
- expect(iban.errors).to include(account_number: "är ogiltig")
2438
- end
1390
+ it "sets the errors on the IBAN" do
1391
+ expect(iban.errors).to include(account_number: "did not pass modulus check")
2439
1392
  end
2440
1393
  end
2441
1394
  end
@@ -2454,92 +1407,10 @@ describe Ibandit::IBAN do
2454
1407
 
2455
1408
  it { is_expected.to eq(false) }
2456
1409
 
2457
- context "locale en", locale: :en do
2458
- specify do
2459
- iban.supports_iban_determination?
2460
- expect(iban.errors).
2461
- to include(account_number: "does not support payments")
2462
- end
2463
- end
2464
-
2465
- context "locale fr", locale: :fr do
2466
- specify do
2467
- iban.supports_iban_determination?
2468
- expect(iban.errors).
2469
- to include(account_number: "ne prend pas en charge les paiements")
2470
- end
2471
- end
2472
-
2473
- context "locale de", locale: :de do
2474
- specify do
2475
- iban.supports_iban_determination?
2476
- expect(iban.errors).
2477
- to include(account_number: "unterstützt keine Zahlungen")
2478
- end
2479
- end
2480
-
2481
- context "locale pt", locale: :pt do
2482
- specify do
2483
- iban.supports_iban_determination?
2484
- expect(iban.errors).
2485
- to include(account_number: "não suporta pagamentos")
2486
- end
2487
- end
2488
-
2489
- context "locale es", locale: :es do
2490
- specify do
2491
- iban.supports_iban_determination?
2492
- expect(iban.errors).
2493
- to include(account_number: "no admite pagos")
2494
- end
2495
- end
2496
-
2497
- context "locale it", locale: :it do
2498
- specify do
2499
- iban.supports_iban_determination?
2500
- expect(iban.errors).
2501
- to include(account_number: "non supporta i pagamenti")
2502
- end
2503
- end
2504
-
2505
- context "locale nl", locale: :nl do
2506
- specify do
2507
- iban.supports_iban_determination?
2508
- expect(iban.errors).
2509
- to include(account_number: "ondersteunt geen betalingen")
2510
- end
2511
- end
2512
-
2513
- context "locale nb", locale: :nb do
2514
- specify do
2515
- iban.supports_iban_determination?
2516
- expect(iban.errors).
2517
- to include(account_number: "støtter ikke betalinger")
2518
- end
2519
- end
2520
-
2521
- context "locale sl", locale: :sl do
2522
- specify do
2523
- iban.supports_iban_determination?
2524
- expect(iban.errors).
2525
- to include(account_number: "ne podpira plačil")
2526
- end
2527
- end
2528
-
2529
- context "locale da", locale: :da do
2530
- specify do
2531
- iban.supports_iban_determination?
2532
- expect(iban.errors).
2533
- to include(account_number: "understøtter ikke betalinger")
2534
- end
2535
- end
2536
-
2537
- context "locale sv", locale: :sv do
2538
- specify do
2539
- iban.supports_iban_determination?
2540
- expect(iban.errors).
2541
- to include(account_number: "stödjer inte betalningar")
2542
- end
1410
+ it "sets the errors on the IBAN" do
1411
+ iban.supports_iban_determination?
1412
+ expect(iban.errors).
1413
+ to include(account_number: "does not support payments")
2543
1414
  end
2544
1415
  end
2545
1416
  end
@@ -2559,11 +1430,9 @@ describe Ibandit::IBAN do
2559
1430
 
2560
1431
  it { is_expected.to eq(false) }
2561
1432
 
2562
- context "locale en", locale: :en do
2563
- specify do
2564
- iban.valid_swedish_details?
2565
- expect(iban.errors).to eq(account_number: "is invalid")
2566
- end
1433
+ it "sets the errors on the IBAN" do
1434
+ iban.valid_swedish_details?
1435
+ expect(iban.errors).to eq(account_number: "length is invalid")
2567
1436
  end
2568
1437
  end
2569
1438
 
@@ -2578,12 +1447,13 @@ describe Ibandit::IBAN do
2578
1447
 
2579
1448
  it { is_expected.to eq(false) }
2580
1449
 
2581
- context "locale en", locale: :en do
2582
- specify do
2583
- iban.valid?
2584
- expect(iban.errors).to include(account_number: "is invalid")
2585
- expect(iban.errors).to_not include(:bank_code)
2586
- end
1450
+ it "sets the errors on the IBAN" do
1451
+ iban.valid?
1452
+ expect(iban.errors).to include(
1453
+ account_number: "bank code does not exist",
1454
+ format: "Unexpected format for a SE IBAN.",
1455
+ )
1456
+ expect(iban.errors).to_not include(:bank_code)
2587
1457
  end
2588
1458
  end
2589
1459
 
@@ -2598,11 +1468,9 @@ describe Ibandit::IBAN do
2598
1468
 
2599
1469
  it { is_expected.to eq(false) }
2600
1470
 
2601
- context "locale en", locale: :en do
2602
- specify do
2603
- iban.valid_swedish_details?
2604
- expect(iban.errors).to eq(account_number: "is invalid")
2605
- end
1471
+ it "sets the errors on the IBAN" do
1472
+ iban.valid_swedish_details?
1473
+ expect(iban.errors).to eq(account_number: "length is invalid")
2606
1474
  end
2607
1475
  end
2608
1476
  end
@@ -2630,11 +1498,9 @@ describe Ibandit::IBAN do
2630
1498
 
2631
1499
  it { is_expected.to eq(false) }
2632
1500
 
2633
- context "locale en", locale: :en do
2634
- specify do
2635
- iban.valid_swedish_details?
2636
- expect(iban.errors).to eq(branch_code: "is invalid")
2637
- end
1501
+ it "sets the errors on the IBAN" do
1502
+ iban.valid_swedish_details?
1503
+ expect(iban.errors).to eq(branch_code: "clearing code length is invalid")
2638
1504
  end
2639
1505
  end
2640
1506
 
@@ -2649,11 +1515,9 @@ describe Ibandit::IBAN do
2649
1515
 
2650
1516
  it { is_expected.to eq(false) }
2651
1517
 
2652
- context "locale en", locale: :en do
2653
- specify do
2654
- iban.valid_swedish_details?
2655
- expect(iban.errors).to eq(account_number: "is invalid")
2656
- end
1518
+ it "sets the errors on the IBAN" do
1519
+ iban.valid_swedish_details?
1520
+ expect(iban.errors).to eq(account_number: "serial number is invalid")
2657
1521
  end
2658
1522
  end
2659
1523
  end
@@ -2714,1237 +1578,662 @@ describe Ibandit::IBAN do
2714
1578
  context "with an invalid bsb" do
2715
1579
  let(:valid_branch_code) { false }
2716
1580
 
2717
- it { is_expected.to be(false) }
2718
-
2719
- context "locale en", locale: :en do
2720
- specify do
2721
- expect(iban.errors).to include(branch_code: "is invalid")
2722
- end
2723
- end
2724
-
2725
- context "locale fr", locale: :fr do
2726
- specify do
2727
- expect(iban.errors).to include(branch_code: "n'est pas valide")
2728
- end
2729
- end
2730
-
2731
- context "locale de", locale: :de do
2732
- specify do
2733
- expect(iban.errors).to include(branch_code: "ist ungültig")
2734
- end
2735
- end
2736
-
2737
- context "locale pt", locale: :pt do
2738
- specify do
2739
- expect(iban.errors).to include(branch_code: "é inválido")
2740
- end
2741
- end
2742
-
2743
- context "locale es", locale: :es do
2744
- specify do
2745
- expect(iban.errors).to include(branch_code: "no es válido")
2746
- end
2747
- end
2748
-
2749
- context "locale it", locale: :it do
2750
- specify do
2751
- expect(iban.errors).to include(branch_code: "non è valido")
2752
- end
2753
- end
2754
-
2755
- context "locale nl", locale: :nl do
2756
- specify do
2757
- expect(iban.errors).to include(branch_code: "is ongeldig")
2758
- end
2759
- end
2760
-
2761
- context "locale nb", locale: :nb do
2762
- specify do
2763
- expect(iban.errors).to include(branch_code: "er ikke gyldig")
2764
- end
2765
- end
2766
-
2767
- context "locale sl", locale: :sl do
2768
- specify do
2769
- expect(iban.errors).to include(branch_code: "ni veljavno")
2770
- end
2771
- end
2772
-
2773
- context "locale da", locale: :da do
2774
- specify do
2775
- expect(iban.errors).to include(branch_code: "er ugyldig")
2776
- end
2777
- end
2778
-
2779
- context "locale sv", locale: :sv do
2780
- specify do
2781
- expect(iban.errors).to include(branch_code: "är ogiltig")
2782
- end
2783
- end
2784
- end
2785
- end
2786
- end
2787
- end
2788
-
2789
- describe "valid_nz_details" do
2790
- subject { iban.valid_nz_details? }
2791
-
2792
- context "with non-NewZealand details" do
2793
- let(:arg) do
2794
- {
2795
- country_code: "GB",
2796
- bank_code: "1234",
2797
- branch_code: "200000",
2798
- account_number: "55779911",
2799
- }
2800
- end
2801
-
2802
- it { is_expected.to be(true) }
2803
- end
2804
-
2805
- context "with NewZealand details" do
2806
- let(:arg) do
2807
- {
2808
- country_code: "NZ",
2809
- bank_code: "01",
2810
- branch_code: "0004",
2811
- account_number: "123456789",
2812
- }
2813
- end
2814
-
2815
- context "without a modulus checker defined" do
2816
- it { is_expected.to be(true) }
2817
- end
2818
-
2819
- context "with a modulus checker defined" do
2820
- before do
2821
- Ibandit.modulus_checker = double(
2822
- valid_branch_code?: valid_branch_code,
2823
- )
2824
- iban.valid_nz_details?
2825
- end
2826
-
2827
- after { Ibandit.modulus_checker = nil }
2828
-
2829
- let(:valid_branch_code) { true }
2830
-
2831
- it "calls valid_branch_code? with an IBAN object" do
2832
- expect(Ibandit.modulus_checker).
2833
- to receive(:valid_branch_code?).
2834
- with(instance_of(described_class))
2835
-
2836
- iban.valid_nz_details?
2837
- end
2838
-
2839
- it { is_expected.to be(true) }
2840
-
2841
- context "with an invalid branch code" do
2842
- let(:valid_branch_code) { false }
2843
-
2844
- it { is_expected.to be(false) }
2845
-
2846
- context "locale en", locale: :en do
2847
- specify do
2848
- expect(iban.errors).to include(branch_code: "is invalid")
2849
- end
2850
- end
2851
-
2852
- context "locale fr", locale: :fr do
2853
- specify do
2854
- expect(iban.errors).to include(branch_code: "n'est pas valide")
2855
- end
2856
- end
2857
-
2858
- context "locale de", locale: :de do
2859
- specify do
2860
- expect(iban.errors).to include(branch_code: "ist ungültig")
2861
- end
2862
- end
2863
-
2864
- context "locale pt", locale: :pt do
2865
- specify do
2866
- expect(iban.errors).to include(branch_code: "é inválido")
2867
- end
2868
- end
2869
-
2870
- context "locale es", locale: :es do
2871
- specify do
2872
- expect(iban.errors).to include(branch_code: "no es válido")
2873
- end
2874
- end
2875
-
2876
- context "locale it", locale: :it do
2877
- specify do
2878
- expect(iban.errors).to include(branch_code: "non è valido")
2879
- end
2880
- end
2881
-
2882
- context "locale nl", locale: :nl do
2883
- specify do
2884
- expect(iban.errors).to include(branch_code: "is ongeldig")
2885
- end
2886
- end
2887
-
2888
- context "locale nb", locale: :nb do
2889
- specify do
2890
- expect(iban.errors).to include(branch_code: "er ikke gyldig")
2891
- end
2892
- end
2893
-
2894
- context "locale sl", locale: :sl do
2895
- specify do
2896
- expect(iban.errors).to include(branch_code: "ni veljavno")
2897
- end
2898
- end
2899
-
2900
- context "locale da", locale: :da do
2901
- specify do
2902
- expect(iban.errors).to include(branch_code: "er ugyldig")
2903
- end
2904
- end
2905
-
2906
- context "locale sv", locale: :sv do
2907
- specify do
2908
- expect(iban.errors).to include(branch_code: "är ogiltig")
2909
- end
2910
- end
2911
- end
2912
- end
2913
- end
2914
- end
2915
-
2916
- describe "valid_ca_details" do
2917
- subject { iban.valid_ca_details? }
2918
-
2919
- context "with non-Canadian details" do
2920
- let(:arg) do
2921
- {
2922
- country_code: "GB",
2923
- bank_code: "1234",
2924
- branch_code: "200000",
2925
- account_number: "55779911",
2926
- }
2927
- end
2928
-
2929
- it { is_expected.to be(true) }
2930
- end
2931
-
2932
- context "with Canadian details" do
2933
- let(:arg) do
2934
- {
2935
- country_code: "CA",
2936
- bank_code: "0036",
2937
- branch_code: "00063",
2938
- account_number: "0123456",
2939
- }
2940
- end
2941
-
2942
- context "without a modulus checker defined" do
2943
- it { is_expected.to be(true) }
2944
- end
2945
-
2946
- context "with a modulus checker defined" do
2947
- before do
2948
- Ibandit.modulus_checker = double(
2949
- valid_branch_code?: valid_branch_code,
2950
- )
2951
- iban.valid_ca_details?
2952
- end
2953
-
2954
- after { Ibandit.modulus_checker = nil }
2955
-
2956
- let(:valid_branch_code) { true }
2957
-
2958
- it "calls valid_branch_code? with an IBAN object" do
2959
- expect(Ibandit.modulus_checker).
2960
- to receive(:valid_branch_code?).
2961
- with(instance_of(described_class))
2962
-
2963
- iban.valid_ca_details?
2964
- end
2965
-
2966
- it { is_expected.to be(true) }
2967
-
2968
- context "with an invalid branch code" do
2969
- let(:valid_branch_code) { false }
2970
-
2971
- it { is_expected.to be(false) }
2972
-
2973
- context "locale en", locale: :en do
2974
- specify do
2975
- expect(iban.errors).to include(branch_code: "is invalid")
2976
- end
2977
- end
2978
-
2979
- context "locale fr", locale: :fr do
2980
- specify do
2981
- expect(iban.errors).to include(branch_code: "n'est pas valide")
2982
- end
2983
- end
2984
-
2985
- context "locale de", locale: :de do
2986
- specify do
2987
- expect(iban.errors).to include(branch_code: "ist ungültig")
2988
- end
2989
- end
2990
-
2991
- context "locale pt", locale: :pt do
2992
- specify do
2993
- expect(iban.errors).to include(branch_code: "é inválido")
2994
- end
2995
- end
2996
-
2997
- context "locale es", locale: :es do
2998
- specify do
2999
- expect(iban.errors).to include(branch_code: "no es válido")
3000
- end
3001
- end
3002
-
3003
- context "locale it", locale: :it do
3004
- specify do
3005
- expect(iban.errors).to include(branch_code: "non è valido")
3006
- end
3007
- end
3008
-
3009
- context "locale nl", locale: :nl do
3010
- specify do
3011
- expect(iban.errors).to include(branch_code: "is ongeldig")
3012
- end
3013
- end
3014
-
3015
- context "locale nb", locale: :nb do
3016
- specify do
3017
- expect(iban.errors).to include(branch_code: "er ikke gyldig")
3018
- end
3019
- end
3020
-
3021
- context "locale sl", locale: :sl do
3022
- specify do
3023
- expect(iban.errors).to include(branch_code: "ni veljavno")
3024
- end
3025
- end
3026
-
3027
- context "locale da", locale: :da do
3028
- specify do
3029
- expect(iban.errors).to include(branch_code: "er ugyldig")
3030
- end
3031
- end
3032
-
3033
- context "locale sv", locale: :sv do
3034
- specify do
3035
- expect(iban.errors).to include(branch_code: "är ogiltig")
3036
- end
3037
- end
3038
- end
3039
- end
3040
- end
3041
- end
3042
-
3043
- describe "#valid?" do
3044
- describe "validations called" do
3045
- after { iban.valid? }
3046
-
3047
- specify { expect(iban).to receive(:valid_country_code?).at_least(1) }
3048
- specify { expect(iban).to receive(:valid_characters?).at_least(1) }
3049
- specify { expect(iban).to receive(:valid_check_digits?).at_least(1) }
3050
- specify { expect(iban).to receive(:valid_length?).at_least(1) }
3051
- specify { expect(iban).to receive(:valid_bank_code_length?).at_least(1) }
3052
- specify { expect(iban).to receive(:valid_format?).at_least(1) }
3053
- specify { expect(iban).to receive(:valid_bank_code_format?).at_least(1) }
3054
-
3055
- it "validates the branch code length" do
3056
- expect(iban).to receive(:valid_branch_code_length?).at_least(1)
3057
- end
3058
-
3059
- it "validates the account number length" do
3060
- expect(iban).to receive(:valid_account_number_length?).at_least(1)
3061
- end
3062
-
3063
- it "validates the branch code format" do
3064
- expect(iban).to receive(:valid_branch_code_format?).at_least(1)
3065
- end
3066
-
3067
- it "validates the account number format" do
3068
- expect(iban).to receive(:valid_account_number_format?).at_least(1)
3069
- end
3070
-
3071
- it "runs local modulus checks" do
3072
- expect(iban).to receive(:valid_local_modulus_check?).at_least(1)
3073
- end
3074
-
3075
- it "runs country specific checks" do
3076
- expect(iban).to receive(:passes_country_specific_checks?).at_least(1)
3077
- end
3078
- end
3079
-
3080
- context "for a valid Albanian IBAN" do
3081
- let(:iban_code) { "AL47 2121 1009 0000 0002 3569 8741" }
3082
-
3083
- it { is_expected.to be_valid }
3084
- end
3085
-
3086
- context "for a valid Andorran IBAN" do
3087
- let(:iban_code) { "AD12 0001 2030 2003 5910 0100" }
3088
-
3089
- it { is_expected.to be_valid }
3090
- end
3091
-
3092
- context "for a valid Austrian IBAN" do
3093
- let(:iban_code) { "AT61 1904 3002 3457 3201" }
3094
-
3095
- it { is_expected.to be_valid }
3096
- end
3097
-
3098
- context "for a valid Australian pseudo-IBAN" do
3099
- let(:iban_code) { "AUZZ123456123456789" }
3100
-
3101
- it { is_expected.to be_valid }
3102
- end
3103
-
3104
- context "for an invalid Australian pseudo-IBAN" do
3105
- let(:iban_code) { "AU99123456123456789" }
3106
-
3107
- it { is_expected.to_not be_valid }
3108
- end
3109
-
3110
- context "for a valid Azerbaijanian IBAN" do
3111
- let(:iban_code) { "AZ21 NABZ 0000 0000 1370 1000 1944" }
3112
-
3113
- it { is_expected.to be_valid }
3114
- end
3115
-
3116
- context "for an invalid Azerbaijanian IBAN" do
3117
- let(:iban_code) { "AZ91 NABZ 0000 0000 1370 1000 1944" }
3118
-
3119
- it { is_expected.to_not be_valid }
3120
- end
3121
-
3122
- context "for a valid Bahrainian IBAN" do
3123
- let(:iban_code) { "BH67 BMAG 0000 1299 1234 56" }
3124
-
3125
- it { is_expected.to be_valid }
3126
- end
3127
-
3128
- context "for an invalid Bahrainian IBAN" do
3129
- let(:iban_code) { "BH97 BMAG 0000 1299 1234 56" }
3130
-
3131
- it { is_expected.to_not be_valid }
3132
- end
3133
-
3134
- context "for a valid Belgian IBAN" do
3135
- let(:iban_code) { "BE68 5390 0754 7034" }
3136
-
3137
- it { is_expected.to be_valid }
3138
- end
3139
-
3140
- context "for an invalid Belgian IBAN" do
3141
- let(:iban_code) { "BE92 5100 0754 7061" }
3142
-
3143
- it { is_expected.to_not be_valid }
3144
- end
3145
-
3146
- context "for a valid Bosnian IBAN" do
3147
- let(:iban_code) { "BA39 1290 0794 0102 8494" }
3148
-
3149
- it { is_expected.to be_valid }
3150
- end
3151
-
3152
- context "for an invalid Bosnian IBAN" do
3153
- let(:iban_code) { "BA99 1290 0794 0102 8494" }
3154
-
3155
- it { is_expected.to_not be_valid }
3156
- end
3157
-
3158
- context "for a valid Bulgarian IBAN" do
3159
- let(:iban_code) { "BG80 BNBG 9661 1020 3456 78" }
3160
-
3161
- it { is_expected.to be_valid }
3162
- end
3163
-
3164
- context "for an invalid Bulgarian IBAN" do
3165
- let(:iban_code) { "BG90 BNBG 9661 1020 3456 78" }
3166
-
3167
- it { is_expected.to_not be_valid }
3168
- end
3169
-
3170
- context "for a valid Croatian IBAN" do
3171
- let(:iban_code) { "HR12 1001 0051 8630 0016 0" }
3172
-
3173
- it { is_expected.to be_valid }
3174
- end
3175
-
3176
- context "for an invalid Croatian IBAN" do
3177
- let(:iban_code) { "HR92 1001 0051 8630 0016 0" }
3178
-
3179
- it { is_expected.to_not be_valid }
3180
- end
3181
-
3182
- context "for a valid Costa Rican IBAN" do
3183
- let(:iban_code) { "CR05 0152 0200 1026 2840 66" }
3184
-
3185
- it { is_expected.to be_valid }
3186
- end
3187
-
3188
- context "for an invalid Costa Rican IBAN" do
3189
- let(:iban_code) { "CR05 0152 0200 1026 2840" }
3190
-
3191
- it { is_expected.to_not be_valid }
3192
- end
3193
-
3194
- context "for a valid Cypriot IBAN" do
3195
- let(:iban_code) { "CY17 0020 0128 0000 0012 0052 7600" }
3196
-
3197
- it { is_expected.to be_valid }
3198
- end
3199
-
3200
- context "for an invalid Cypriot IBAN" do
3201
- let(:iban_code) { "CY97 0020 0128 0000 0012 0052 7600" }
3202
-
3203
- it { is_expected.to_not be_valid }
3204
- end
3205
-
3206
- context "for a valid Czech IBAN" do
3207
- let(:iban_code) { "CZ65 0800 0000 1920 0014 5399" }
3208
-
3209
- it { is_expected.to be_valid }
3210
- end
3211
-
3212
- context "for an invalid Czech IBAN" do
3213
- let(:iban_code) { "CZ95 0800 0000 1920 0014 5399" }
3214
-
3215
- it { is_expected.to_not be_valid }
3216
- end
3217
-
3218
- context "for a valid Danish IBAN" do
3219
- let(:iban_code) { "DK50 0040 0440 1162 43" }
3220
-
3221
- it { is_expected.to be_valid }
3222
- end
3223
-
3224
- context "for an invalid Danish IBAN" do
3225
- let(:iban_code) { "DK90 0040 0440 1162 43" }
3226
-
3227
- it { is_expected.to_not be_valid }
3228
- end
3229
-
3230
- context "for a valid Dominican Republic IBAN" do
3231
- let(:iban_code) { "DO28 BAGR 0000 0001 2124 5361 1324" }
3232
-
3233
- it { is_expected.to be_valid }
3234
- end
3235
-
3236
- context "for an invalid Dominican Republic IBAN" do
3237
- let(:iban_code) { "DO28 BAGR 0000 0001 2124 5361" }
3238
-
3239
- it { is_expected.to_not be_valid }
3240
- end
3241
-
3242
- context "for a valid Estonian IBAN" do
3243
- let(:iban_code) { "EE38 2200 2210 2014 5685" }
3244
-
3245
- it { is_expected.to be_valid }
3246
- end
3247
-
3248
- context "for an invalid Estonian IBAN" do
3249
- let(:iban_code) { "EE98 2200 2210 2014 5685" }
3250
-
3251
- it { is_expected.to_not be_valid }
3252
- end
3253
-
3254
- context "for a valid Faroe Islands IBAN" do
3255
- let(:iban_code) { "FO97 5432 0388 8999 44" }
3256
-
3257
- it { is_expected.to be_valid }
3258
- end
3259
-
3260
- context "for an invalid Faroe Islands IBAN" do
3261
- let(:iban_code) { "FO27 5432 0388 8999 44" }
3262
-
3263
- it { is_expected.to_not be_valid }
3264
- end
3265
-
3266
- context "for a valid Finnish IBAN" do
3267
- let(:iban_code) { "FI21 1234 5600 0007 85" }
3268
-
3269
- it { is_expected.to be_valid }
3270
- end
3271
-
3272
- context "for an invalid Finnish IBAN" do
3273
- let(:iban_code) { "FI91 1234 5600 0007 85" }
3274
-
3275
- it { is_expected.to_not be_valid }
3276
- end
3277
-
3278
- context "for a valid French IBAN" do
3279
- let(:iban_code) { "FR14 2004 1010 0505 0001 3M02 606" }
3280
-
3281
- it { is_expected.to be_valid }
3282
- end
3283
-
3284
- context "for an invalid French IBAN" do
3285
- let(:iban_code) { "FR94 2004 1010 0505 0001 3M02 606" }
3286
-
3287
- it { is_expected.to_not be_valid }
3288
- end
3289
-
3290
- context "for a valid Georgian IBAN" do
3291
- let(:iban_code) { "GE29 NB00 0000 0101 9049 17" }
3292
-
3293
- it { is_expected.to be_valid }
3294
- end
3295
-
3296
- context "for an invalid Georgian IBAN" do
3297
- let(:iban_code) { "GE99 NB00 0000 0101 9049 17" }
3298
-
3299
- it { is_expected.to_not be_valid }
3300
- end
3301
-
3302
- context "for a valid German IBAN" do
3303
- let(:iban_code) { "DE89 3704 0044 0532 0130 00" }
1581
+ it { is_expected.to be(false) }
3304
1582
 
3305
- it { is_expected.to be_valid }
1583
+ it "sets the errors on the IBAN" do
1584
+ expect(iban.errors).to include(branch_code: "did not pass modulus check")
1585
+ end
1586
+ end
1587
+ end
3306
1588
  end
1589
+ end
3307
1590
 
3308
- context "for an invalid German IBAN" do
3309
- let(:iban_code) { "DE99 3704 0044 0532 0130 00" }
3310
-
3311
- it { is_expected.to_not be_valid }
3312
- end
1591
+ describe "valid_nz_details" do
1592
+ subject { iban.valid_nz_details? }
3313
1593
 
3314
- context "for a valid Gibraltan IBAN" do
3315
- let(:iban_code) { "GI75 NWBK 0000 0000 7099 453" }
1594
+ context "with non-NewZealand details" do
1595
+ let(:arg) do
1596
+ {
1597
+ country_code: "GB",
1598
+ bank_code: "1234",
1599
+ branch_code: "200000",
1600
+ account_number: "55779911",
1601
+ }
1602
+ end
3316
1603
 
3317
- it { is_expected.to be_valid }
1604
+ it { is_expected.to be(true) }
3318
1605
  end
3319
1606
 
3320
- context "for an invalid Gibraltan IBAN" do
3321
- let(:iban_code) { "GI95 NWBK 0000 0000 7099 453" }
3322
-
3323
- it { is_expected.to_not be_valid }
3324
- end
1607
+ context "with NewZealand details" do
1608
+ let(:arg) do
1609
+ {
1610
+ country_code: "NZ",
1611
+ bank_code: "01",
1612
+ branch_code: "0004",
1613
+ account_number: "123456789",
1614
+ }
1615
+ end
3325
1616
 
3326
- context "for a valid Greek IBAN" do
3327
- let(:iban_code) { "GR16 0110 1250 0000 0001 2300 695" }
1617
+ context "without a modulus checker defined" do
1618
+ it { is_expected.to be(true) }
1619
+ end
3328
1620
 
3329
- it { is_expected.to be_valid }
3330
- end
1621
+ context "with a modulus checker defined" do
1622
+ before do
1623
+ Ibandit.modulus_checker = double(
1624
+ valid_branch_code?: valid_branch_code,
1625
+ )
1626
+ iban.valid_nz_details?
1627
+ end
3331
1628
 
3332
- context "for an invalid Greek IBAN" do
3333
- let(:iban_code) { "GR96 0110 1250 0000 0001 2300 695" }
1629
+ after { Ibandit.modulus_checker = nil }
3334
1630
 
3335
- it { is_expected.to_not be_valid }
3336
- end
1631
+ let(:valid_branch_code) { true }
3337
1632
 
3338
- context "for a valid Greenland IBAN" do
3339
- let(:iban_code) { "GL56 0444 9876 5432 10" }
1633
+ it "calls valid_branch_code? with an IBAN object" do
1634
+ expect(Ibandit.modulus_checker).
1635
+ to receive(:valid_branch_code?).
1636
+ with(instance_of(described_class))
3340
1637
 
3341
- it { is_expected.to be_valid }
3342
- end
1638
+ iban.valid_nz_details?
1639
+ end
3343
1640
 
3344
- context "for an invalid Greenland IBAN" do
3345
- let(:iban_code) { "GL96 0444 9876 5432 10" }
1641
+ it { is_expected.to be(true) }
3346
1642
 
3347
- it { is_expected.to_not be_valid }
3348
- end
1643
+ context "with an invalid branch code" do
1644
+ let(:valid_branch_code) { false }
3349
1645
 
3350
- context "for a valid Hungarian IBAN" do
3351
- let(:iban_code) { "HU42 1177 3016 1111 1018 0000 0000" }
1646
+ it { is_expected.to be(false) }
3352
1647
 
3353
- it { is_expected.to be_valid }
1648
+ it "sets the errors on the IBAN" do
1649
+ expect(iban.errors).to include(branch_code: "did not pass modulus check")
1650
+ end
1651
+ end
1652
+ end
3354
1653
  end
1654
+ end
3355
1655
 
3356
- context "for an invalid Hungarian IBAN" do
3357
- let(:iban_code) { "HU92 1177 3016 1111 1018 0000 0000" }
3358
-
3359
- it { is_expected.to_not be_valid }
3360
- end
1656
+ describe "valid_ca_details" do
1657
+ subject { iban.valid_ca_details? }
3361
1658
 
3362
- context "for a valid Icelandic IBAN" do
3363
- let(:iban_code) { "IS14 0159 2600 7654 5510 7303 39" }
1659
+ context "with non-Canadian details" do
1660
+ let(:arg) do
1661
+ {
1662
+ country_code: "GB",
1663
+ bank_code: "1234",
1664
+ branch_code: "200000",
1665
+ account_number: "55779911",
1666
+ }
1667
+ end
3364
1668
 
3365
- it { is_expected.to be_valid }
1669
+ it { is_expected.to be(true) }
3366
1670
  end
3367
1671
 
3368
- context "for an invalid Icelandic IBAN" do
3369
- let(:iban_code) { "IS94 0159 2600 7654 5510 7303 39" }
3370
-
3371
- it { is_expected.to_not be_valid }
3372
- end
1672
+ context "with Canadian details" do
1673
+ let(:arg) do
1674
+ {
1675
+ country_code: "CA",
1676
+ bank_code: "0036",
1677
+ branch_code: "00063",
1678
+ account_number: "0123456",
1679
+ }
1680
+ end
3373
1681
 
3374
- context "for a valid Irish IBAN" do
3375
- let(:iban_code) { "IE29 AIBK 9311 5212 3456 78" }
1682
+ context "without a modulus checker defined" do
1683
+ it { is_expected.to be(true) }
1684
+ end
3376
1685
 
3377
- it { is_expected.to be_valid }
3378
- end
1686
+ context "with a modulus checker defined" do
1687
+ before do
1688
+ Ibandit.modulus_checker = double(
1689
+ valid_branch_code?: valid_branch_code,
1690
+ )
1691
+ iban.valid_ca_details?
1692
+ end
3379
1693
 
3380
- context "for an invalid Irish IBAN" do
3381
- let(:iban_code) { "IE99 AIBK 9311 5212 3456 78" }
1694
+ after { Ibandit.modulus_checker = nil }
3382
1695
 
3383
- it { is_expected.to_not be_valid }
3384
- end
1696
+ let(:valid_branch_code) { true }
3385
1697
 
3386
- context "for a valid Israeli IBAN" do
3387
- let(:iban_code) { "IL62 0108 0000 0009 9999 999" }
1698
+ it "calls valid_branch_code? with an IBAN object" do
1699
+ expect(Ibandit.modulus_checker).
1700
+ to receive(:valid_branch_code?).
1701
+ with(instance_of(described_class))
3388
1702
 
3389
- it { is_expected.to be_valid }
3390
- end
1703
+ iban.valid_ca_details?
1704
+ end
3391
1705
 
3392
- context "for an invalid Israeli IBAN" do
3393
- let(:iban_code) { "IL92 0108 0000 0009 9999 999" }
1706
+ it { is_expected.to be(true) }
3394
1707
 
3395
- it { is_expected.to_not be_valid }
3396
- end
1708
+ context "with an invalid branch code" do
1709
+ let(:valid_branch_code) { false }
3397
1710
 
3398
- context "for a valid Italian IBAN" do
3399
- let(:iban_code) { "IT40 S054 2811 1010 0000 0123 456" }
1711
+ it { is_expected.to be(false) }
3400
1712
 
3401
- it { is_expected.to be_valid }
1713
+ it "sets the errors on the IBAN" do
1714
+ expect(iban.errors).to include(branch_code: "did not pass modulus check")
1715
+ end
1716
+ end
1717
+ end
3402
1718
  end
1719
+ end
3403
1720
 
3404
- context "for an invalid Italian IBAN" do
3405
- let(:iban_code) { "IT90 S054 2811 1010 0000 0123 456" }
3406
-
3407
- it { is_expected.to_not be_valid }
1721
+ describe "Pseudo IBAN #valid?" do
1722
+ let(:country_code) { "CA" }
1723
+ let(:arg) do
1724
+ {
1725
+ country_code: country_code,
1726
+ bank_code: "0036",
1727
+ branch_code: "00063",
1728
+ account_number: "1234567",
1729
+ }
3408
1730
  end
3409
1731
 
3410
- context "for a valid Jordanian IBAN" do
3411
- let(:iban_code) { "JO94 CBJO 0010 0000 0000 0131 0003 02" }
1732
+ describe "validations called" do
1733
+ after { iban.valid? }
3412
1734
 
3413
- it { is_expected.to be_valid }
3414
- end
1735
+ specify { expect(iban).to receive(:valid_pseudo_iban?).at_least(1) }
1736
+ specify { expect(iban).to receive(:valid_pseudo_iban_check_digits?).at_least(1) }
1737
+ specify { expect(iban).to receive(:valid_country_code?).at_least(1) }
1738
+ specify { expect(iban).to receive(:valid_bank_code_length?).at_least(1) }
1739
+ specify { expect(iban).to receive(:valid_branch_code_length?).at_least(1) }
1740
+ specify { expect(iban).to receive(:valid_account_number_length?).at_least(1) }
1741
+ specify { expect(iban).to receive(:valid_bank_code_format?).at_least(1) }
1742
+ specify { expect(iban).to receive(:valid_branch_code_format?).at_least(1) }
1743
+ specify { expect(iban).to receive(:valid_account_number_format?).at_least(1) }
1744
+ specify { expect(iban).to receive(:passes_country_specific_checks?).at_least(1) }
3415
1745
 
3416
- context "for an invalid Jordanian IBAN" do
3417
- let(:iban_code) { "JO24 CBJO 0010 0000 0000 0131 0003 02" }
1746
+ context "SE" do
1747
+ let(:country_code) { "SE" }
3418
1748
 
3419
- it { is_expected.to_not be_valid }
3420
- end
1749
+ specify { expect(iban).to receive(:valid_swedish_details?).at_least(1) }
1750
+ end
3421
1751
 
3422
- context "for a valid Kuwaiti IBAN" do
3423
- let(:iban_code) { "KW81 CBKU 0000 0000 0000 1234 5601 01" }
1752
+ context "AU" do
1753
+ let(:country_code) { "AU" }
3424
1754
 
3425
- it { is_expected.to be_valid }
3426
- end
1755
+ specify { expect(iban).to receive(:valid_australian_details?).at_least(1) }
1756
+ end
3427
1757
 
3428
- context "for an invalid Kuwaiti IBAN" do
3429
- let(:iban_code) { "KW91 CBKU 0000 0000 0000 1234 5601 01" }
1758
+ context "NZ" do
1759
+ let(:country_code) { "NZ" }
3430
1760
 
3431
- it { is_expected.to_not be_valid }
3432
- end
1761
+ specify { expect(iban).to receive(:valid_nz_details?).at_least(1) }
1762
+ end
3433
1763
 
3434
- context "for a valid Latvian IBAN" do
3435
- let(:iban_code) { "LV80 BANK 0000 4351 9500 1" }
1764
+ context "CA" do
1765
+ let(:country_code) { "CA" }
3436
1766
 
3437
- it { is_expected.to be_valid }
3438
- end
1767
+ specify { expect(iban).to receive(:valid_ca_details?).at_least(1) }
1768
+ end
3439
1769
 
3440
- context "for an invalid Latvian IBAN" do
3441
- let(:iban_code) { "LV90 BANK 0000 4351 9500 1" }
1770
+ context "US" do
1771
+ let(:country_code) { "US" }
3442
1772
 
3443
- it { is_expected.to_not be_valid }
1773
+ specify { expect(iban).to receive(:bank_code_passes_checksum_test?).at_least(1) }
1774
+ end
3444
1775
  end
1776
+ end
3445
1777
 
3446
- context "for a valid Lebanese IBAN" do
3447
- let(:iban_code) { "LB62 0999 0000 0001 0019 0122 9114" }
1778
+ describe "IBAN #valid?" do
1779
+ describe "validations called" do
1780
+ after { iban.valid? }
3448
1781
 
3449
- it { is_expected.to be_valid }
3450
- end
1782
+ specify { expect(iban).to receive(:valid_iban?).at_least(1) }
1783
+ specify { expect(iban).to receive(:valid_country_code?).at_least(1) }
1784
+ specify { expect(iban).to receive(:valid_characters?).at_least(1) }
1785
+ specify { expect(iban).to receive(:valid_check_digits?).at_least(1) }
1786
+ specify { expect(iban).to receive(:valid_length?).at_least(1) }
1787
+ specify { expect(iban).to receive(:valid_bank_code_length?).at_least(1) }
1788
+ specify { expect(iban).to receive(:valid_format?).at_least(1) }
1789
+ specify { expect(iban).to receive(:valid_bank_code_format?).at_least(1) }
3451
1790
 
3452
- context "for an invalid Lebanese IBAN" do
3453
- let(:iban_code) { "LB92 0999 0000 0001 0019 0122 9114" }
1791
+ it "validates the branch code length" do
1792
+ expect(iban).to receive(:valid_branch_code_length?).at_least(1)
1793
+ end
3454
1794
 
3455
- it { is_expected.to_not be_valid }
3456
- end
1795
+ it "validates the account number length" do
1796
+ expect(iban).to receive(:valid_account_number_length?).at_least(1)
1797
+ end
3457
1798
 
3458
- context "for a valid Liechtensteinian IBAN" do
3459
- let(:iban_code) { "LI21 0881 0000 2324 013A A" }
1799
+ it "validates the branch code format" do
1800
+ expect(iban).to receive(:valid_branch_code_format?).at_least(1)
1801
+ end
3460
1802
 
3461
- it { is_expected.to be_valid }
3462
- end
1803
+ it "validates the account number format" do
1804
+ expect(iban).to receive(:valid_account_number_format?).at_least(1)
1805
+ end
3463
1806
 
3464
- context "for an invalid Liechtensteinian IBAN" do
3465
- let(:iban_code) { "LI91 0881 0000 2324 013A A" }
1807
+ it "runs local modulus checks" do
1808
+ expect(iban).to receive(:valid_local_modulus_check?).at_least(1)
1809
+ end
3466
1810
 
3467
- it { is_expected.to_not be_valid }
3468
- end
1811
+ it "runs country specific checks" do
1812
+ expect(iban).to receive(:passes_country_specific_checks?).at_least(1)
1813
+ end
3469
1814
 
3470
- context "for a valid Lithuanian IBAN" do
3471
- let(:iban_code) { "LT12 1000 0111 0100 1000" }
1815
+ context "DE" do
1816
+ let(:arg) do
1817
+ {
1818
+ country_code: "DE",
1819
+ bank_code: "20000000",
1820
+ account_number: "7955791111",
1821
+ }
1822
+ end
3472
1823
 
3473
- it { is_expected.to be_valid }
1824
+ specify { expect(iban).to receive(:supports_iban_determination?).at_least(1) }
1825
+ end
3474
1826
  end
3475
1827
 
3476
- context "for an invalid Lithuanian IBAN" do
3477
- let(:iban_code) { "LT92 1000 0111 0100 1000" }
1828
+ RSpec.shared_examples "a country's IBAN" do |country_code|
1829
+ context "for #{country_code}" do
1830
+ context "with a valid iban" do
1831
+ let(:iban_code) { valid_iban }
3478
1832
 
3479
- it { is_expected.to_not be_valid }
3480
- end
1833
+ it { is_expected.to be_valid }
1834
+ end
3481
1835
 
3482
- context "for a valid Luxembourgian IBAN" do
3483
- let(:iban_code) { "LU28 0019 4006 4475 0000" }
1836
+ context "with an invalid iban" do
1837
+ let(:iban_code) { invalid_iban }
3484
1838
 
3485
- it { is_expected.to be_valid }
1839
+ it { is_expected.to_not be_valid }
1840
+ end
1841
+ end
3486
1842
  end
3487
1843
 
3488
- context "for an invalid Luxembourgian IBAN" do
3489
- let(:iban_code) { "LU98 0019 4006 4475 0000" }
3490
-
3491
- it { is_expected.to_not be_valid }
1844
+ it_behaves_like "a country's IBAN", "AL" do
1845
+ let(:valid_iban) { "AL47 2121 1009 0000 0002 3569 8741" }
1846
+ let(:invalid_iban) { "ALXX47 2121 1009 0000 0002 3569 8741" }
3492
1847
  end
3493
1848
 
3494
- context "for a valid Macedonian IBAN" do
3495
- let(:iban_code) { "MK072 5012 0000 0589 84" }
3496
-
3497
- it { is_expected.to be_valid }
1849
+ it_behaves_like "a country's IBAN", "AD" do
1850
+ let(:valid_iban) { "AD12 0001 2030 2003 5910 0100" }
1851
+ let(:invalid_iban) { "ADXX12 0001 2030 2003 5910 0100" }
3498
1852
  end
3499
1853
 
3500
- context "for an invalid Macedonian IBAN" do
3501
- let(:iban_code) { "MK972 5012 0000 0589 84" }
3502
-
3503
- it { is_expected.to_not be_valid }
1854
+ it_behaves_like "a country's IBAN", "AT" do
1855
+ let(:valid_iban) { "AT61 1904 3002 3457 3201" }
1856
+ let(:invalid_iban) { "ATXX61 1904 3002 3457 3201" }
3504
1857
  end
3505
1858
 
3506
- context "for a valid Maltese IBAN" do
3507
- let(:iban_code) { "MT84 MALT 0110 0001 2345 MTLC AST0 01S" }
3508
-
3509
- it { is_expected.to be_valid }
1859
+ it_behaves_like "a country's IBAN", "AU" do
1860
+ let(:valid_iban) { "AUZZ123456123456789" }
1861
+ let(:invalid_iban) { "AUXXZZ123456123456789" }
3510
1862
  end
3511
1863
 
3512
- context "for an invalid Maltese IBAN" do
3513
- let(:iban_code) { "MT94 MALT 0110 0001 2345 MTLC AST0 01S" }
3514
-
3515
- it { is_expected.to_not be_valid }
1864
+ it_behaves_like "a country's IBAN", "AZ" do
1865
+ let(:valid_iban) { "AZ21 NABZ 0000 0000 1370 1000 1944" }
1866
+ let(:invalid_iban) { "AZXX21 NABZ 0000 0000 1370 1000 1944" }
3516
1867
  end
3517
1868
 
3518
- context "for a valid Maurititanian IBAN" do
3519
- let(:iban_code) { "MU17 BOMM 0101 1010 3030 0200 000M UR" }
3520
-
3521
- it { is_expected.to be_valid }
1869
+ it_behaves_like "a country's IBAN", "BH" do
1870
+ let(:valid_iban) { "BH67 BMAG 0000 1299 1234 56" }
1871
+ let(:invalid_iban) { "BHXX67 BMAG 0000 1299 1234 56" }
3522
1872
  end
3523
1873
 
3524
- context "for an invalid Maurititanian IBAN" do
3525
- let(:iban_code) { "MU97 BOMM 0101 1010 3030 0200 000M UR" }
3526
-
3527
- it { is_expected.to_not be_valid }
1874
+ it_behaves_like "a country's IBAN", "BE" do
1875
+ let(:valid_iban) { "BE68 5390 0754 7034" }
1876
+ let(:invalid_iban) { "BEXX68 5390 0754 7034" }
3528
1877
  end
3529
1878
 
3530
- context "for a valid Moldovan IBAN" do
3531
- let(:iban_code) { "MD24 AG00 0225 1000 1310 4168" }
3532
-
3533
- it { is_expected.to be_valid }
1879
+ it_behaves_like "a country's IBAN", "BA" do
1880
+ let(:valid_iban) { "BA39 1290 0794 0102 8494" }
1881
+ let(:invalid_iban) { "BAXX39 1290 0794 0102 8494" }
3534
1882
  end
3535
1883
 
3536
- context "for an invalid Moldovan IBAN" do
3537
- let(:iban_code) { "MD94 AG00 0225 1000 1310 4168" }
3538
-
3539
- it { is_expected.to_not be_valid }
1884
+ it_behaves_like "a country's IBAN", "BG" do
1885
+ let(:valid_iban) { "BG80 BNBG 9661 1020 3456 78" }
1886
+ let(:invalid_iban) { "BGXX80 BNBG 9661 1020 3456 78" }
3540
1887
  end
3541
1888
 
3542
- context "for a valid Monocan IBAN" do
3543
- let(:iban_code) { "MC93 2005 2222 1001 1223 3M44 555" }
3544
-
3545
- it { is_expected.to be_valid }
1889
+ it_behaves_like "a country's IBAN", "HR" do
1890
+ let(:valid_iban) { "HR12 1001 0051 8630 0016 0" }
1891
+ let(:invalid_iban) { "HRXX12 1001 0051 8630 0016 0" }
3546
1892
  end
3547
1893
 
3548
- context "for an invalid Monocan IBAN" do
3549
- let(:iban_code) { "MC23 2005 2222 1001 1223 3M44 555" }
3550
-
3551
- it { is_expected.to_not be_valid }
1894
+ it_behaves_like "a country's IBAN", "CR" do
1895
+ let(:valid_iban) { "CR05 0152 0200 1026 2840 66" }
1896
+ let(:invalid_iban) { "CRXX05 0152 0200 1026 2840 66" }
3552
1897
  end
3553
1898
 
3554
- context "for a valid Montenegrian IBAN" do
3555
- let(:iban_code) { "ME25 5050 0001 2345 6789 51" }
3556
-
3557
- it { is_expected.to be_valid }
1899
+ it_behaves_like "a country's IBAN", "CY" do
1900
+ let(:valid_iban) { "CY17 0020 0128 0000 0012 0052 7600" }
1901
+ let(:invalid_iban) { "CYXX17 0020 0128 0000 0012 0052 7600" }
3558
1902
  end
3559
1903
 
3560
- context "for an invalid Montenegrian IBAN" do
3561
- let(:iban_code) { "ME95 5050 0001 2345 6789 51" }
3562
-
3563
- it { is_expected.to_not be_valid }
1904
+ it_behaves_like "a country's IBAN", "CZ" do
1905
+ let(:valid_iban) { "CZ65 0800 0000 1920 0014 5399" }
1906
+ let(:invalid_iban) { "CZXX65 0800 0000 1920 0014 5399" }
3564
1907
  end
3565
1908
 
3566
- context "for a valid Dutch IBAN" do
3567
- let(:iban_code) { "NL39 RABO 0300 0652 64" }
3568
-
3569
- it { is_expected.to be_valid }
1909
+ it_behaves_like "a country's IBAN", "DK" do
1910
+ let(:valid_iban) { "DK50 0040 0440 1162 43" }
1911
+ let(:invalid_iban) { "DKXX50 0040 0440 1162 43" }
3570
1912
  end
3571
1913
 
3572
- context "for an invalid Dutch IBAN" do
3573
- let(:iban_code) { "NL99 RABO 0300 0652 64" }
3574
-
3575
- it { is_expected.to_not be_valid }
1914
+ it_behaves_like "a country's IBAN", "DO" do
1915
+ let(:valid_iban) { "DO28 BAGR 0000 0001 2124 5361 1324" }
1916
+ let(:invalid_iban) { "DOXX28 BAGR 0000 0001 2124 5361 1324" }
3576
1917
  end
3577
1918
 
3578
- context "for a valid Norwegian IBAN" do
3579
- let(:iban_code) { "NO93 8601 1117 947" }
3580
-
3581
- it { is_expected.to be_valid }
1919
+ it_behaves_like "a country's IBAN", "EE" do
1920
+ let(:valid_iban) { "EE38 2200 2210 2014 5685" }
1921
+ let(:invalid_iban) { "EEXX38 2200 2210 2014 5685" }
3582
1922
  end
3583
1923
 
3584
- context "for an invalid Norwegian IBAN" do
3585
- let(:iban_code) { "NO23 8601 1117 947" }
3586
-
3587
- it { is_expected.to_not be_valid }
1924
+ it_behaves_like "a country's IBAN", "FO" do
1925
+ let(:valid_iban) { "FO97 5432 0388 8999 44" }
1926
+ let(:invalid_iban) { "FOXX97 5432 0388 8999 44" }
3588
1927
  end
3589
1928
 
3590
- context "for a valid New Zealand pseudo-IBAN" do
3591
- let(:iban_code) { "NZZZ5566667777777088" }
3592
-
3593
- it { is_expected.to be_valid }
1929
+ it_behaves_like "a country's IBAN", "FI" do
1930
+ let(:valid_iban) { "FI21 1234 5600 0007 85" }
1931
+ let(:invalid_iban) { "FIXX21 1234 5600 0007 85" }
3594
1932
  end
3595
1933
 
3596
- context "for an invalid New Zealand pseudo-IBAN" do
3597
- let(:iban_code) { "NZZZ55666677777770888" }
3598
-
3599
- it { is_expected.to_not be_valid }
1934
+ it_behaves_like "a country's IBAN", "FR" do
1935
+ let(:valid_iban) { "FR14 2004 1010 0505 0001 3M02 606" }
1936
+ let(:invalid_iban) { "FRXX14 2004 1010 0505 0001 3M02 606" }
3600
1937
  end
3601
1938
 
3602
- context "for a valid Pakistani IBAN" do
3603
- let(:iban_code) { "PK36 SCBL 0000 0011 2345 6702" }
3604
-
3605
- it { is_expected.to be_valid }
1939
+ it_behaves_like "a country's IBAN", "GE" do
1940
+ let(:valid_iban) { "GE29 NB00 0000 0101 9049 17" }
1941
+ let(:invalid_iban) { "GEXX29 NB00 0000 0101 9049 17" }
3606
1942
  end
3607
1943
 
3608
- context "for an invalid Pakistani IBAN" do
3609
- let(:iban_code) { "PK96 SCBL 0000 0011 2345 6702" }
3610
-
3611
- it { is_expected.to_not be_valid }
1944
+ it_behaves_like "a country's IBAN", "DE" do
1945
+ let(:valid_iban) { "DE89 3704 0044 0532 0130 00" }
1946
+ let(:invalid_iban) { "DEXX89 3704 0044 0532 0130 00" }
3612
1947
  end
3613
1948
 
3614
- context "for a valid Polish IBAN" do
3615
- let(:iban_code) { "PL60 1020 1026 0000 0422 7020 1111" }
3616
-
3617
- it { is_expected.to be_valid }
1949
+ it_behaves_like "a country's IBAN", "GI" do
1950
+ let(:valid_iban) { "GI75 NWBK 0000 0000 7099 453" }
1951
+ let(:invalid_iban) { "GIXX75 NWBK 0000 0000 7099 453" }
3618
1952
  end
3619
1953
 
3620
- context "for an invalid Polish IBAN" do
3621
- let(:iban_code) { "PL90 1020 1026 0000 0422 7020 1111" }
3622
-
3623
- it { is_expected.to_not be_valid }
1954
+ it_behaves_like "a country's IBAN", "GR" do
1955
+ let(:valid_iban) { "GR16 0110 1250 0000 0001 2300 695" }
1956
+ let(:invalid_iban) { "GRXX16 0110 1250 0000 0001 2300 695" }
3624
1957
  end
3625
1958
 
3626
- context "for a valid Palestinian IBAN" do
3627
- let(:iban_code) { "PS92 PALS 0000 0000 0400 1234 5670 2" }
3628
-
3629
- it { is_expected.to be_valid }
1959
+ it_behaves_like "a country's IBAN", "GL" do
1960
+ let(:valid_iban) { "GL56 0444 9876 5432 10" }
1961
+ let(:invalid_iban) { "GLXX56 0444 9876 5432 10" }
3630
1962
  end
3631
1963
 
3632
- context "for an invalid Palestinian IBAN" do
3633
- let(:iban_code) { "PS92 PALS 0000 0000 0400 1234 5670" }
3634
-
3635
- it { is_expected.to_not be_valid }
1964
+ it_behaves_like "a country's IBAN", "HU" do
1965
+ let(:valid_iban) { "HU42 1177 3016 1111 1018 0000 0000" }
1966
+ let(:invalid_iban) { "HUXX42 1177 3016 1111 1018 0000 0000" }
3636
1967
  end
3637
1968
 
3638
- context "for a valid Potuguese IBAN" do
3639
- let(:iban_code) { "PT50 0002 0123 1234 5678 9015 4" }
3640
-
3641
- it { is_expected.to be_valid }
1969
+ it_behaves_like "a country's IBAN", "IS" do
1970
+ let(:valid_iban) { "IS14 0159 2600 7654 5510 7303 39" }
1971
+ let(:invalid_iban) { "ISXX14 0159 2600 7654 5510 7303 39" }
3642
1972
  end
3643
1973
 
3644
- context "for an invalid Potuguese IBAN" do
3645
- let(:iban_code) { "PT90 0002 0123 1234 5678 9015 4" }
3646
-
3647
- it { is_expected.to_not be_valid }
1974
+ it_behaves_like "a country's IBAN", "IE" do
1975
+ let(:valid_iban) { "IE29 AIBK 9311 5212 3456 78" }
1976
+ let(:invalid_iban) { "IEXX29 AIBK 9311 5212 3456 78" }
3648
1977
  end
3649
1978
 
3650
- context "for a valid Qatari IBAN" do
3651
- let(:iban_code) { "QA58 DOHB 0000 1234 5678 90AB CDEF G" }
3652
-
3653
- it { is_expected.to be_valid }
1979
+ it_behaves_like "a country's IBAN", "IL" do
1980
+ let(:valid_iban) { "IL62 0108 0000 0009 9999 999" }
1981
+ let(:invalid_iban) { "ILXX62 0108 0000 0009 9999 999" }
3654
1982
  end
3655
1983
 
3656
- context "for an invalid Qatari IBAN" do
3657
- let(:iban_code) { "QA98 DOHB 0000 1234 5678 90AB CDEF G" }
3658
-
3659
- it { is_expected.to_not be_valid }
1984
+ it_behaves_like "a country's IBAN", "IT" do
1985
+ let(:valid_iban) { "IT60 X054 2811 1010 0000 0123 456" }
1986
+ let(:invalid_iban) { "ITXX60 X054 2811 1010 0000 0123 456" }
3660
1987
  end
3661
1988
 
3662
- context "for a valid Kosovan IBAN" do
3663
- let(:iban_code) { "XK05 1212 0123 4567 8906" }
3664
-
3665
- it { is_expected.to be_valid }
1989
+ it_behaves_like "a country's IBAN", "JO" do
1990
+ let(:valid_iban) { "JO94 CBJO 0010 0000 0000 0131 0003 02" }
1991
+ let(:invalid_iban) { "JOXX94 CBJO 0010 0000 0000 0131 0003 02" }
3666
1992
  end
3667
1993
 
3668
- context "for an invalid Kosovan IBAN" do
3669
- let(:iban_code) { "XK05 1212 0123 4567 890" }
3670
-
3671
- it { is_expected.to_not be_valid }
1994
+ it_behaves_like "a country's IBAN", "KW" do
1995
+ let(:valid_iban) { "KW81 CBKU 0000 0000 0000 1234 5601 01" }
1996
+ let(:invalid_iban) { "KWXX81 CBKU 0000 0000 0000 1234 5601 01" }
3672
1997
  end
3673
1998
 
3674
- context "for a valid Timor-Leste IBAN" do
3675
- let(:iban_code) { "TL38 0080 0123 4567 8910 157" }
3676
-
3677
- it { is_expected.to be_valid }
1999
+ it_behaves_like "a country's IBAN", "LV" do
2000
+ let(:valid_iban) { "LV80 BANK 0000 4351 9500 1" }
2001
+ let(:invalid_iban) { "LVXX80 BANK 0000 4351 9500 1" }
3678
2002
  end
3679
2003
 
3680
- context "for an invalid Timor-Leste IBAN" do
3681
- let(:iban_code) { "TL38 0080 0123 4567 8910" }
3682
-
3683
- it { is_expected.to_not be_valid }
2004
+ it_behaves_like "a country's IBAN", "LB" do
2005
+ let(:valid_iban) { "LB62 0999 0000 0001 0019 0122 9114" }
2006
+ let(:invalid_iban) { "LBXX62 0999 0000 0001 0019 0122 9114" }
3684
2007
  end
3685
2008
 
3686
- context "for a valid Romanian IBAN" do
3687
- let(:iban_code) { "RO49 AAAA 1B31 0075 9384 0000" }
3688
-
3689
- it { is_expected.to be_valid }
2009
+ it_behaves_like "a country's IBAN", "LI" do
2010
+ let(:valid_iban) { "LI21 0881 0000 2324 013A A" }
2011
+ let(:invalid_iban) { "LIXX21 0881 0000 2324 013A A" }
3690
2012
  end
3691
2013
 
3692
- context "for an invalid Romanian IBAN" do
3693
- let(:iban_code) { "RO99 AAAA 1B31 0075 9384 0000" }
3694
-
3695
- it { is_expected.to_not be_valid }
2014
+ it_behaves_like "a country's IBAN", "LT" do
2015
+ let(:valid_iban) { "LT12 1000 0111 0100 1000" }
2016
+ let(:invalid_iban) { "LTXX12 1000 0111 0100 1000" }
3696
2017
  end
3697
2018
 
3698
- context "for a valid San Marinian IBAN" do
3699
- let(:iban_code) { "SM86 U032 2509 8000 0000 0270 100" }
3700
-
3701
- it { is_expected.to be_valid }
2019
+ it_behaves_like "a country's IBAN", "LU" do
2020
+ let(:valid_iban) { "LU28 0019 4006 4475 0000" }
2021
+ let(:invalid_iban) { "LUXX28 0019 4006 4475 0000" }
3702
2022
  end
3703
2023
 
3704
- context "for an invalid San Marinian IBAN" do
3705
- let(:iban_code) { "SM96 U032 2509 8000 0000 0270 100" }
3706
-
3707
- it { is_expected.to_not be_valid }
2024
+ it_behaves_like "a country's IBAN", "MK" do
2025
+ let(:valid_iban) { "MK072 5012 0000 0589 84" }
2026
+ let(:invalid_iban) { "MKXX072 5012 0000 0589 84" }
3708
2027
  end
3709
2028
 
3710
- context "for a valid Saudi IBAN" do
3711
- let(:iban_code) { "SA03 8000 0000 6080 1016 7519" }
3712
-
3713
- it { is_expected.to be_valid }
2029
+ it_behaves_like "a country's IBAN", "MT" do
2030
+ let(:valid_iban) { "MT84 MALT 0110 0001 2345 MTLC AST0 01S" }
2031
+ let(:invalid_iban) { "MTXX84 MALT 0110 0001 2345 MTLC AST0 01S" }
3714
2032
  end
3715
2033
 
3716
- context "for an invalid Saudi IBAN" do
3717
- let(:iban_code) { "SA93 8000 0000 6080 1016 7519" }
3718
-
3719
- it { is_expected.to_not be_valid }
2034
+ it_behaves_like "a country's IBAN", "MU" do
2035
+ let(:valid_iban) { "MU17 BOMM 0101 1010 3030 0200 000M UR" }
2036
+ let(:invalid_iban) { "MUXX17 BOMM 0101 1010 3030 0200 000M UR" }
3720
2037
  end
3721
2038
 
3722
- context "for a valid Serbian IBAN" do
3723
- let(:iban_code) { "RS35 2600 0560 1001 6113 79" }
3724
-
3725
- it { is_expected.to be_valid }
2039
+ it_behaves_like "a country's IBAN", "MD" do
2040
+ let(:valid_iban) { "MD24 AG00 0225 1000 1310 4168" }
2041
+ let(:invalid_iban) { "MDXX24 AG00 0225 1000 1310 4168" }
3726
2042
  end
3727
2043
 
3728
- context "for an invalid Serbian IBAN" do
3729
- let(:iban_code) { "RS95 2600 0560 1001 6113 79" }
3730
-
3731
- it { is_expected.to_not be_valid }
2044
+ it_behaves_like "a country's IBAN", "MC" do
2045
+ let(:valid_iban) { "MC93 2005 2222 1001 1223 3M44 555" }
2046
+ let(:invalid_iban) { "MCXX93 2005 2222 1001 1223 3M44 555" }
3732
2047
  end
3733
2048
 
3734
- context "for a valid Slovakian IBAN" do
3735
- let(:iban_code) { "SK31 1200 0000 1987 4263 7541" }
3736
-
3737
- it { is_expected.to be_valid }
2049
+ it_behaves_like "a country's IBAN", "ME" do
2050
+ let(:valid_iban) { "ME25 5050 0001 2345 6789 51" }
2051
+ let(:invalid_iban) { "MEXX25 5050 0001 2345 6789 51" }
3738
2052
  end
3739
2053
 
3740
- context "for an invalid Slovakian IBAN" do
3741
- let(:iban_code) { "SK91 1200 0000 1987 4263 7541" }
3742
-
3743
- it { is_expected.to_not be_valid }
2054
+ it_behaves_like "a country's IBAN", "NL" do
2055
+ let(:valid_iban) { "NL39 RABO 0300 0652 64" }
2056
+ let(:invalid_iban) { "NLXX39 RABO 0300 0652 64" }
3744
2057
  end
3745
2058
 
3746
- context "for a valid Slovenian IBAN" do
3747
- let(:iban_code) { "SI56 1910 0000 0123 438" }
3748
-
3749
- it { is_expected.to be_valid }
2059
+ it_behaves_like "a country's IBAN", "NO" do
2060
+ let(:valid_iban) { "NO93 8601 1117 947" }
2061
+ let(:invalid_iban) { "NOXX93 8601 1117 947" }
3750
2062
  end
3751
2063
 
3752
- context "for an invalid Slovenian IBAN" do
3753
- let(:iban_code) { "SI96 1910 0000 0123 438" }
3754
-
3755
- it { is_expected.to_not be_valid }
2064
+ it_behaves_like "a country's IBAN", "NZ" do
2065
+ let(:valid_iban) { "NZZZ5566667777777088" }
2066
+ let(:invalid_iban) { "NZXXZZ5566667777777088" }
3756
2067
  end
3757
2068
 
3758
- context "for a valid Spanish IBAN" do
3759
- let(:iban_code) { "ES80 2310 0001 1800 0001 2345" }
3760
-
3761
- it { is_expected.to be_valid }
2069
+ it_behaves_like "a country's IBAN", "PK" do
2070
+ let(:valid_iban) { "PK36 SCBL 0000 0011 2345 6702" }
2071
+ let(:invalid_iban) { "PKXX36 SCBL 0000 0011 2345 6702" }
3762
2072
  end
3763
2073
 
3764
- context "for an invalid Spanish IBAN" do
3765
- let(:iban_code) { "ES90 2310 0001 1800 0001 2345" }
3766
-
3767
- it { is_expected.to_not be_valid }
2074
+ it_behaves_like "a country's IBAN", "PL" do
2075
+ let(:valid_iban) { "PL60 1020 1026 0000 0422 7020 1111" }
2076
+ let(:invalid_iban) { "PLXX60 1020 1026 0000 0422 7020 1111" }
3768
2077
  end
3769
2078
 
3770
- context "for a valid Swedish IBAN" do
3771
- let(:iban_code) { "SE35 5000 0000 0549 1000 0003" }
3772
-
3773
- it { is_expected.to be_valid }
2079
+ it_behaves_like "a country's IBAN", "PS" do
2080
+ let(:valid_iban) { "PS92 PALS 0000 0000 0400 1234 5670 2" }
2081
+ let(:invalid_iban) { "PSXX92 PALS 0000 0000 0400 1234 5670 2" }
3774
2082
  end
3775
2083
 
3776
- context "for an invalid Swedish IBAN" do
3777
- let(:iban_code) { "SE95 5000 0000 0549 1000 0003" }
3778
-
3779
- it { is_expected.to_not be_valid }
2084
+ it_behaves_like "a country's IBAN", "PT" do
2085
+ let(:valid_iban) { "PT50 0002 0123 1234 5678 9015 4" }
2086
+ let(:invalid_iban) { "PTXX50 0002 0123 1234 5678 9015 4" }
3780
2087
  end
3781
2088
 
3782
- context "for a valid Swiss IBAN" do
3783
- let(:iban_code) { "CH93 0076 2011 6238 5295 7" }
3784
-
3785
- it { is_expected.to be_valid }
2089
+ it_behaves_like "a country's IBAN", "QA" do
2090
+ let(:valid_iban) { "QA58 DOHB 0000 1234 5678 90AB CDEF G" }
2091
+ let(:invalid_iban) { "QAXX58 DOHB 0000 1234 5678 90AB CDEF G" }
3786
2092
  end
3787
2093
 
3788
- context "for an invalid Swiss IBAN" do
3789
- let(:iban_code) { "CH23 0076 2011 6238 5295 7" }
3790
-
3791
- it { is_expected.to_not be_valid }
2094
+ it_behaves_like "a country's IBAN", "XK" do
2095
+ let(:valid_iban) { "XK05 1212 0123 4567 8906" }
2096
+ let(:invalid_iban) { "XKXX05 1212 0123 4567 8906" }
3792
2097
  end
3793
2098
 
3794
- context "for a valid Tunisian IBAN" do
3795
- let(:iban_code) { "TN59 1000 6035 1835 9847 8831" }
3796
-
3797
- it { is_expected.to be_valid }
2099
+ it_behaves_like "a country's IBAN", "TL" do
2100
+ let(:valid_iban) { "TL38 0080 0123 4567 8910 157" }
2101
+ let(:invalid_iban) { "TLXX38 0080 0123 4567 8910 157" }
3798
2102
  end
3799
2103
 
3800
- context "for an invalid Tunisian IBAN" do
3801
- let(:iban_code) { "TN99 1000 6035 1835 9847 8831" }
3802
-
3803
- it { is_expected.to_not be_valid }
2104
+ it_behaves_like "a country's IBAN", "RO" do
2105
+ let(:valid_iban) { "RO49 AAAA 1B31 0075 9384 0000" }
2106
+ let(:invalid_iban) { "ROXX49 AAAA 1B31 0075 9384 0000" }
3804
2107
  end
3805
2108
 
3806
- context "for a valid Turkish IBAN" do
3807
- let(:iban_code) { "TR33 0006 1005 1978 6457 8413 26" }
3808
-
3809
- it { is_expected.to be_valid }
2109
+ it_behaves_like "a country's IBAN", "SM" do
2110
+ let(:valid_iban) { "SM86 U032 2509 8000 0000 0270 100" }
2111
+ let(:invalid_iban) { "SMXX86 U032 2509 8000 0000 0270 100" }
3810
2112
  end
3811
2113
 
3812
- context "for an invalid Turkish IBAN" do
3813
- let(:iban_code) { "TR93 0006 1005 1978 6457 8413 26" }
3814
-
3815
- it { is_expected.to_not be_valid }
2114
+ it_behaves_like "a country's IBAN", "SA" do
2115
+ let(:valid_iban) { "SA03 8000 0000 6080 1016 7519" }
2116
+ let(:invalid_iban) { "SAXX03 8000 0000 6080 1016 7519" }
3816
2117
  end
3817
2118
 
3818
- context "for a valid UAE IBAN" do
3819
- let(:iban_code) { "AE07 0331 2345 6789 0123 456" }
3820
-
3821
- it { is_expected.to be_valid }
2119
+ it_behaves_like "a country's IBAN", "RS" do
2120
+ let(:valid_iban) { "RS35 2600 0560 1001 6113 79" }
2121
+ let(:invalid_iban) { "RSXX35 2600 0560 1001 6113 79" }
3822
2122
  end
3823
2123
 
3824
- context "for an invalid UAE IBAN" do
3825
- let(:iban_code) { "AE97 0331 2345 6789 0123 456" }
3826
-
3827
- it { is_expected.to_not be_valid }
2124
+ it_behaves_like "a country's IBAN", "SK" do
2125
+ let(:valid_iban) { "SK31 1200 0000 1987 4263 7541" }
2126
+ let(:invalid_iban) { "SKXX31 1200 0000 1987 4263 7541" }
3828
2127
  end
3829
2128
 
3830
- context "for a valid UK IBAN" do
3831
- let(:iban_code) { "GB82 WEST 1234 5698 7654 32" }
3832
-
3833
- it { is_expected.to be_valid }
2129
+ it_behaves_like "a country's IBAN", "SI" do
2130
+ let(:valid_iban) { "SI56 1910 0000 0123 438" }
2131
+ let(:invalid_iban) { "SIXX56 1910 0000 0123 438" }
3834
2132
  end
3835
2133
 
3836
- context "for an invalid UK IBAN" do
3837
- let(:iban_code) { "GB92 WEST 1234 5698 7654 32" }
3838
-
3839
- it { is_expected.to_not be_valid }
2134
+ it_behaves_like "a country's IBAN", "ES" do
2135
+ let(:valid_iban) { "ES80 2310 0001 1800 0001 2345" }
2136
+ let(:invalid_iban) { "ESXX80 2310 0001 1800 0001 2345" }
3840
2137
  end
3841
2138
 
3842
- context "with a valid LC iban" do
3843
- let(:iban_code) { "LC55 HEMM 0001 0001 0012 0012 0002 3015" }
3844
-
3845
- it { is_expected.to be_valid }
2139
+ it_behaves_like "a country's IBAN", "SE" do
2140
+ let(:valid_iban) { "SE35 5000 0000 0549 1000 0003" }
2141
+ let(:invalid_iban) { "SEXX35 5000 0000 0549 1000 0003" }
3846
2142
  end
3847
2143
 
3848
- context "with an invalid LC iban" do
3849
- let(:iban_code) { "LC55 HEMM 0001 0001 0012 0012 0002" }
3850
-
3851
- it { is_expected.to_not be_valid }
2144
+ it_behaves_like "a country's IBAN", "CH" do
2145
+ let(:valid_iban) { "CH93 0076 2011 6238 5295 7" }
2146
+ let(:invalid_iban) { "CHXX93 0076 2011 6238 5295 7" }
3852
2147
  end
3853
2148
 
3854
- context "with a valid UA iban" do
3855
- let(:iban_code) { "UA21 3223 1300 0002 6007 2335 6600 1" }
3856
-
3857
- it { is_expected.to be_valid }
2149
+ it_behaves_like "a country's IBAN", "TN" do
2150
+ let(:valid_iban) { "TN59 1000 6035 1835 9847 8831" }
2151
+ let(:invalid_iban) { "TNXX59 1000 6035 1835 9847 8831" }
3858
2152
  end
3859
2153
 
3860
- context "with an invalid UA iban" do
3861
- let(:iban_code) { "UA21 3223 1300 0002 6007 2335 6600 " }
3862
-
3863
- it { is_expected.to_not be_valid }
2154
+ it_behaves_like "a country's IBAN", "TR" do
2155
+ let(:valid_iban) { "TR33 0006 1005 1978 6457 8413 26" }
2156
+ let(:invalid_iban) { "TRXX33 0006 1005 1978 6457 8413 26" }
3864
2157
  end
3865
2158
 
3866
- context "with a valid ST iban" do
3867
- let(:iban_code) { "ST23 0001 0001 0051 8453 1014 6" }
3868
-
3869
- it { is_expected.to be_valid }
2159
+ it_behaves_like "a country's IBAN", "AE" do
2160
+ let(:valid_iban) { "AE07 0331 2345 6789 0123 456" }
2161
+ let(:invalid_iban) { "AEXX07 0331 2345 6789 0123 456" }
3870
2162
  end
3871
2163
 
3872
- context "with an invalid ST iban" do
3873
- let(:iban_code) { "ST23 0001 0001 0051 8453 1014" }
3874
-
3875
- it { is_expected.to_not be_valid }
2164
+ it_behaves_like "a country's IBAN", "GB" do
2165
+ let(:valid_iban) { "GB82 WEST 1234 5698 7654 32" }
2166
+ let(:invalid_iban) { "GBXX82 WEST 1234 5698 7654 32" }
3876
2167
  end
3877
2168
 
3878
- context "with a valid SC iban" do
3879
- let(:iban_code) { "SC18 SSCB 1101 0000 0000 0000 1497 USD" }
3880
-
3881
- it { is_expected.to be_valid }
2169
+ it_behaves_like "a country's IBAN", "LC" do
2170
+ let(:valid_iban) { "LC55 HEMM 0001 0001 0012 0012 0002 3015" }
2171
+ let(:invalid_iban) { "LCXX55 HEMM 0001 0001 0012 0012 0002 3015" }
3882
2172
  end
3883
2173
 
3884
- context "with an invalid SC iban" do
3885
- let(:iban_code) { "SC18 SSCB 1101 0000 0000 0000 USD" }
3886
-
3887
- it { is_expected.to_not be_valid }
2174
+ it_behaves_like "a country's IBAN", "UA" do
2175
+ let(:valid_iban) { "UA21 3223 1300 0002 6007 2335 6600 1" }
2176
+ let(:invalid_iban) { "UAXX21 3223 1300 0002 6007 2335 6600 1" }
3888
2177
  end
3889
2178
 
3890
- context "with a valid IQ iban" do
3891
- let(:iban_code) { "IQ98 NBIQ 8501 2345 6789 012" }
3892
-
3893
- it { is_expected.to be_valid }
2179
+ it_behaves_like "a country's IBAN", "ST" do
2180
+ let(:valid_iban) { "ST23 0001 0001 0051 8453 1014 6" }
2181
+ let(:invalid_iban) { "STXX23 0001 0001 0051 8453 1014 6" }
3894
2182
  end
3895
2183
 
3896
- context "with an invalid IQ iban" do
3897
- let(:iban_code) { "IQ98 NBIQ 8501 2345 6789" }
3898
-
3899
- it { is_expected.to_not be_valid }
2184
+ it_behaves_like "a country's IBAN", "SC" do
2185
+ let(:valid_iban) { "SC18 SSCB 1101 0000 0000 0000 1497 USD" }
2186
+ let(:invalid_iban) { "SCXX18 SSCB 1101 0000 0000 0000 1497 USD" }
3900
2187
  end
3901
2188
 
3902
- context "with a valid SV iban" do
3903
- let(:iban_code) { "SV 62 CENR 00000000000000700025" }
3904
-
3905
- it { is_expected.to be_valid }
2189
+ it_behaves_like "a country's IBAN", "IQ" do
2190
+ let(:valid_iban) { "IQ98 NBIQ 8501 2345 6789 012" }
2191
+ let(:invalid_iban) { "IQXX98 NBIQ 8501 2345 6789 012" }
3906
2192
  end
3907
2193
 
3908
- context "with an invalid SV iban" do
3909
- let(:iban_code) { "SV 62 CENR 00000000000000700" }
3910
-
3911
- it { is_expected.to_not be_valid }
2194
+ it_behaves_like "a country's IBAN", "SV" do
2195
+ let(:valid_iban) { "SV 62 CENR 00000000000000700025" }
2196
+ let(:invalid_iban) { "SVXX 62 CENR 00000000000000700025" }
3912
2197
  end
3913
2198
 
3914
- context "with a valid BY iban" do
3915
- let(:iban_code) { "BY13 NBRB 3600 9000 0000 2Z00 AB00" }
3916
-
3917
- it { is_expected.to be_valid }
2199
+ it_behaves_like "a country's IBAN", "BY" do
2200
+ let(:valid_iban) { "BY13 NBRB 3600 9000 0000 2Z00 AB00" }
2201
+ let(:invalid_iban) { "BYXX13 NBRB 3600 9000 0000 2Z00 AB00" }
3918
2202
  end
3919
2203
 
3920
- context "with an invalid BY iban" do
3921
- let(:iban_code) { "BY13 NBRB 3600 9000 0000 2Z00" }
3922
-
3923
- it { is_expected.to_not be_valid }
2204
+ it_behaves_like "a country's IBAN", "VA" do
2205
+ let(:valid_iban) { "VA59 001 1230 0001 2345 678" }
2206
+ let(:invalid_iban) { "VAXX59 001 1230 0001 2345 678" }
3924
2207
  end
3925
2208
 
3926
- context "with a valid VA iban" do
3927
- let(:iban_code) { "VA59 001 1230 0001 2345 678" }
3928
-
3929
- it { is_expected.to be_valid }
2209
+ it_behaves_like "a country's IBAN", "EG" do
2210
+ let(:valid_iban) { "EG380019000500000000263180002" }
2211
+ let(:invalid_iban) { "EGXX380019000500000000263180002" }
3930
2212
  end
3931
2213
 
3932
- context "with an invalid VA iban" do
3933
- let(:iban_code) { "VA59 001 1230 0001 2345" }
3934
-
3935
- it { is_expected.to_not be_valid }
2214
+ it_behaves_like "a country's IBAN", "LY" do
2215
+ let(:valid_iban) { "LY83002048000020100120361" }
2216
+ let(:invalid_iban) { "LYXX83002048000020100120361" }
3936
2217
  end
3937
2218
 
3938
- context "with a valid EG iban" do
3939
- let(:iban_code) { "EG380019000500000000263180002" }
2219
+ it_behaves_like "a country's IBAN", "SD" do
2220
+ let(:valid_iban) { "SD2129010501234001" }
2221
+ let(:invalid_iban) { "SDXX2129010501234001" }
2222
+ end
3940
2223
 
3941
- it { is_expected.to be_valid }
2224
+ it_behaves_like "a country's IBAN", "BI" do
2225
+ let(:valid_iban) { "BI4210000100010000332045181" }
2226
+ let(:invalid_iban) { "BIXX4210000100010000332045181" }
3942
2227
  end
3943
2228
 
3944
- context "with an invalid EG iban" do
3945
- let(:iban_code) { "EG3800190005000000002631800" }
2229
+ it_behaves_like "a country's IBAN", "DJ" do
2230
+ let(:valid_iban) { "DJ2100010000000154000100186" }
2231
+ let(:invalid_iban) { "DJXX2100010000000154000100186" }
2232
+ end
3946
2233
 
3947
- it { is_expected.to_not be_valid }
2234
+ it_behaves_like "a country's IBAN", "RU" do
2235
+ let(:valid_iban) { "RU0204452560040702810412345678901" }
2236
+ let(:invalid_iban) { "RUXX0204452560040702810412345678901" }
3948
2237
  end
3949
2238
  end
3950
2239