aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarak <[email protected]>2021-02-04 17:39:06 -0500
committerGitHub <[email protected]>2021-02-04 17:39:06 -0500
commit90fc05df437f5193bfc9e759bd94a4c8917d4bde (patch)
tree055274cce7aae5a07ad3f80d3cf45814dfe2203e
parente61e8455c45555786ff10e5c9f15b85cf91f66ef (diff)
parentb4c3c745632bbdcc09fc35fc3bdcbfe601e2cf91 (diff)
downloadfaker-90fc05df437f5193bfc9e759bd94a4c8917d4bde.tar.xz
faker-90fc05df437f5193bfc9e759bd94a4c8917d4bde.zip
Merge pull request #989 from rebuy-de/patch-iban-country
Add optional country code parameter for iban method
-rw-r--r--lib/finance.js19
-rw-r--r--test/finance.unit.js11
2 files changed, 28 insertions, 2 deletions
diff --git a/lib/finance.js b/lib/finance.js
index 91d41b5c..f9afa3a1 100644
--- a/lib/finance.js
+++ b/lib/finance.js
@@ -248,10 +248,25 @@ self.litecoinAddress = function () {
/**
* iban
*
+ * @param {boolean} [formatted=false] - Return a formatted version of the generated IBAN.
+ * @param {string} [countryCode] - The country code from which you want to generate an IBAN, if none is provided a random country will be used.
+ * @throws Will throw an error if the passed country code is not supported.
+ *
* @method faker.finance.iban
*/
- self.iban = function (formatted) {
- var ibanFormat = faker.random.arrayElement(ibanLib.formats);
+ self.iban = function (formatted, countryCode) {
+ var ibanFormat;
+ if (countryCode) {
+ var findFormat = function(currentFormat) { return currentFormat.country === countryCode; };
+ ibanFormat = ibanLib.formats.find(findFormat);
+ } else {
+ ibanFormat = faker.random.arrayElement(ibanLib.formats);
+ }
+
+ if (!ibanFormat) {
+ throw new Error('Country code ' + countryCode + ' not supported.');
+ }
+
var s = "";
var count = 0;
for (var b = 0; b < ibanFormat.bban.length; b++) {
diff --git a/test/finance.unit.js b/test/finance.unit.js
index 0e5e6624..f22a073a 100644
--- a/test/finance.unit.js
+++ b/test/finance.unit.js
@@ -351,6 +351,17 @@ describe('finance.js', function () {
assert.equal(ibanLib.mod97(ibanLib.toDigitString(bban)), 1, "the result should be equal to 1");
});
+ it("returns a specific and formally correct IBAN number", function () {
+ var iban = faker.finance.iban(false, "DE");
+ var bban = iban.substring(4) + iban.substring(0, 4);
+ var countryCode = iban.substring(0, 2);
+
+ assert.equal(countryCode, "DE");
+ assert.equal(ibanLib.mod97(ibanLib.toDigitString(bban)), 1, "the result should be equal to 1");
+ });
+ it("throws an error if the passed country code is not supported", function () {
+ assert.throws(function() { faker.finance.iban(false, 'AA');}, /Country code AA not supported/);
+ });
});
describe("bic()", function () {