Skip to content

Commit

Permalink
fix(finance.bic): remove hardcoded elements and simplify function (#1171
Browse files Browse the repository at this point in the history
)
  • Loading branch information
hankucz committed Aug 1, 2022
1 parent aafab45 commit 5a397e0
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 28 deletions.
32 changes: 14 additions & 18 deletions src/modules/finance/index.ts
Expand Up @@ -390,29 +390,25 @@ export class Finance {
}

/**
* Generates a random bic.
* Generates a random SWIFT/BIC code based on the [ISO-9362](https://en.wikipedia.org/wiki/ISO_9362) format.
*
* @example
* faker.finance.bic() // 'WYAUPGX1432'
*/
bic(): string {
const vowels = ['A', 'E', 'I', 'O', 'U'];
const prob = this.faker.datatype.number(100);

return [
this.faker.helpers.replaceSymbols('???'),
this.faker.helpers.arrayElement(vowels),
this.faker.helpers.arrayElement(iban.iso3166),
this.faker.helpers.replaceSymbols('?'),
'1',
prob < 10
? this.faker.helpers.replaceSymbols(
`?${this.faker.helpers.arrayElement(vowels)}?`
)
: prob < 40
? this.faker.helpers.replaceSymbols('###')
: '',
].join('');
const bankIdentifier = this.faker.random.alpha({
count: 4,
casing: 'upper',
});
const countryCode = this.faker.helpers.arrayElement(iban.iso3166);
const locationCode = this.faker.random.alphaNumeric(2, { casing: 'upper' });
const branchCode = this.faker.datatype.boolean()
? this.faker.datatype.boolean()
? this.faker.random.alphaNumeric(3, { casing: 'upper' })
: 'XXX'
: '';

return `${bankIdentifier}${countryCode}${locationCode}${branchCode}`;
}

/**
Expand Down
6 changes: 3 additions & 3 deletions test/__snapshots__/finance.spec.ts.snap
Expand Up @@ -16,7 +16,7 @@ exports[`finance > 42 > amount > with min 1`] = `"380.79"`;

exports[`finance > 42 > amount > with min and max and dec and symbol 1`] = `"$24.98160"`;

exports[`finance > 42 > bic 1`] = `"UYEOSCP1514"`;
exports[`finance > 42 > bic 1`] = `"JUYEPSSLXXX"`;

exports[`finance > 42 > bitcoinAddress 1`] = `"3XbJMAAara64sSkA9HD24YHQWd1b"`;

Expand Down Expand Up @@ -80,7 +80,7 @@ exports[`finance > 1211 > amount > with min 1`] = `"929.24"`;

exports[`finance > 1211 > amount > with min and max and dec and symbol 1`] = `"$47.14081"`;

exports[`finance > 1211 > bic 1`] = `"LXUEBTZ1"`;
exports[`finance > 1211 > bic 1`] = `"YLXUDE4Z"`;

exports[`finance > 1211 > bitcoinAddress 1`] = `"1TMe8Z3EaFdLqmaGKP1LEEJQVriSZRZdsA"`;

Expand Down Expand Up @@ -144,7 +144,7 @@ exports[`finance > 1337 > amount > with min 1`] = `"269.40"`;

exports[`finance > 1337 > amount > with min and max and dec and symbol 1`] = `"$20.48098"`;

exports[`finance > 1337 > bic 1`] = `"OEFELYL1032"`;
exports[`finance > 1337 > bic 1`] = `"GOEFFIJG"`;

exports[`finance > 1337 > bitcoinAddress 1`] = `"3adhxs2jewAgkYgJi7No6Cn8JZa"`;

Expand Down
9 changes: 2 additions & 7 deletions test/finance.spec.ts
Expand Up @@ -482,15 +482,10 @@ describe('finance', () => {
describe('bic()', () => {
it('should return a random yet formally correct BIC number', () => {
const bic = faker.finance.bic();
const expr = new RegExp(
`^[A-Z]{4}(${ibanLib.iso3166.join(
'|'
)})[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3})?\$`,
'i'
);

expect(bic).toBeTypeOf('string');
expect(bic).toMatch(expr);
expect(bic).toMatch(/^[A-Z]{6}[A-Z0-9]{2}([A-Z0-9]{3})?$/);
expect(ibanLib.iso3166).toContain(bic.substring(4, 6));
});
});

Expand Down

0 comments on commit 5a397e0

Please sign in to comment.