Skip to content

Commit

Permalink
feat(helpers): allow empty string in fake (#1679)
Browse files Browse the repository at this point in the history
  • Loading branch information
ST-DDT committed Dec 25, 2022
1 parent aa77888 commit f0d2ffb
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 17 deletions.
12 changes: 2 additions & 10 deletions src/modules/helpers/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -526,7 +526,7 @@ export class HelpersModule {
*
* It is also NOT possible to use any non-faker methods or plain javascript in such patterns.
*
* @param pattern The pattern string that will get interpolated. Must not be empty.
* @param pattern The pattern string that will get interpolated.
*
* @see faker.helpers.mustache() to use custom functions for resolution.
*
Expand Down Expand Up @@ -621,7 +621,7 @@ export class HelpersModule {
*
* It is also NOT possible to use any non-faker methods or plain javascript in such patterns.
*
* @param pattern The pattern string that will get interpolated. Must not be empty. If an array is passed, a random element will be picked and interpolated.
* @param pattern The pattern string that will get interpolated. If an array is passed, a random element will be picked and interpolated.
*
* @see faker.helpers.mustache() to use custom functions for resolution.
*
Expand All @@ -645,10 +645,6 @@ export class HelpersModule {
throw new FakerError('Array of pattern strings cannot be empty.');
}
}
// if incoming str parameter is not provided, return error message
if (pattern.length === 0) {
throw new FakerError('Pattern string cannot be empty.');
}

// find first matching {{ and }}
const start = pattern.search(/{{[a-z]/);
Expand Down Expand Up @@ -721,10 +717,6 @@ export class HelpersModule {
const res =
pattern.substring(0, start) + result + pattern.substring(end + 2);

if (res === '') {
return '';
}

// return the response recursively until we are done finding all tags
return this.fake(res);
}
Expand Down
6 changes: 6 additions & 0 deletions test/__snapshots__/helpers.spec.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ exports[`helpers > 42 > fake > with a dynamic template 1`] = `"my string: Cky2ei

exports[`helpers > 42 > fake > with a static template 1`] = `"my test string"`;

exports[`helpers > 42 > fake > with empty string 1`] = `""`;

exports[`helpers > 42 > fake > with multiple dynamic templates 1`] = `"Sandy"`;

exports[`helpers > 42 > fake > with multiple static templates 1`] = `"B"`;
Expand Down Expand Up @@ -216,6 +218,8 @@ exports[`helpers > 1211 > fake > with a dynamic template 1`] = `"my string: wKti

exports[`helpers > 1211 > fake > with a static template 1`] = `"my test string"`;

exports[`helpers > 1211 > fake > with empty string 1`] = `""`;

exports[`helpers > 1211 > fake > with multiple dynamic templates 1`] = `"La Crosse"`;

exports[`helpers > 1211 > fake > with multiple static templates 1`] = `"C"`;
Expand Down Expand Up @@ -395,6 +399,8 @@ exports[`helpers > 1337 > fake > with a dynamic template 1`] = `"my string: 9U/4

exports[`helpers > 1337 > fake > with a static template 1`] = `"my test string"`;

exports[`helpers > 1337 > fake > with empty string 1`] = `""`;

exports[`helpers > 1337 > fake > with multiple dynamic templates 1`] = `"U/4:SK$>6Q"`;

exports[`helpers > 1337 > fake > with multiple static templates 1`] = `"A"`;
Expand Down
14 changes: 7 additions & 7 deletions test/helpers.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,8 @@ describe('helpers', () => {
});

t.describe('fake', (t) => {
t.it('with a static template', 'my test string')
t.it('with empty string', '')
.it('with a static template', 'my test string')
.it('with a dynamic template', 'my string: {{string.sample}}')
.it('with multiple static templates', ['A', 'B', 'C'])
.it('with multiple dynamic templates', [
Expand Down Expand Up @@ -555,6 +556,11 @@ describe('helpers', () => {
});

describe('fake()', () => {
it('does allow empty string input', () => {
const actual = faker.helpers.fake('');
expect(actual).toBe('');
});

it('replaces a token with a random value for a method without parentheses', () => {
const actual = faker.helpers.fake('{{string.numeric}}');
expect(actual).toMatch(/^\d$/);
Expand Down Expand Up @@ -602,12 +608,6 @@ describe('helpers', () => {
expect(actual).toMatch(/^\d{5}$/);
});

it('does not allow empty string parameters', () => {
expect(() => faker.helpers.fake('')).toThrowError(
new FakerError('Pattern string cannot be empty.')
);
});

it('does not allow empty array parameters', () => {
expect(() => faker.helpers.fake([])).toThrowError(
new FakerError('Array of pattern strings cannot be empty.')
Expand Down

0 comments on commit f0d2ffb

Please sign in to comment.