diff options
| author | ST-DDT <[email protected]> | 2022-12-25 15:30:04 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-12-25 14:30:04 +0000 |
| commit | f0d2ffb256e5aefb98d4f38905ef081c8e6af43e (patch) | |
| tree | 4a4d6d5f3deca0af05910b0c961ea116e5386ceb | |
| parent | aa77888098add8bc5de5ed8f4f2dbc68aa7e8cef (diff) | |
| download | faker-f0d2ffb256e5aefb98d4f38905ef081c8e6af43e.tar.xz faker-f0d2ffb256e5aefb98d4f38905ef081c8e6af43e.zip | |
feat(helpers): allow empty string in fake (#1679)
| -rw-r--r-- | src/modules/helpers/index.ts | 12 | ||||
| -rw-r--r-- | test/__snapshots__/helpers.spec.ts.snap | 6 | ||||
| -rw-r--r-- | test/helpers.spec.ts | 14 |
3 files changed, 15 insertions, 17 deletions
diff --git a/src/modules/helpers/index.ts b/src/modules/helpers/index.ts index cb4f7680..2ccc311e 100644 --- a/src/modules/helpers/index.ts +++ b/src/modules/helpers/index.ts @@ -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. * @@ -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. * @@ -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]/); @@ -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); } diff --git a/test/__snapshots__/helpers.spec.ts.snap b/test/__snapshots__/helpers.spec.ts.snap index 4ce31832..95ac4a03 100644 --- a/test/__snapshots__/helpers.spec.ts.snap +++ b/test/__snapshots__/helpers.spec.ts.snap @@ -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"`; @@ -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"`; @@ -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"`; diff --git a/test/helpers.spec.ts b/test/helpers.spec.ts index 37a1bd02..2f591fc2 100644 --- a/test/helpers.spec.ts +++ b/test/helpers.spec.ts @@ -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', [ @@ -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$/); @@ -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.') |
