From 7e2503eb88da8b9fcaf5f21ba36e942f47616648 Mon Sep 17 00:00:00 2001 From: Lucas Akira Uehara Date: Thu, 18 Jan 2024 16:02:59 -0300 Subject: [PATCH 1/2] fix: fix formatting when add spacing at the beginning and/end --- src/utils/formatting.ts | 7 ++++--- src/utils/index.ts | 1 + test/utils/formatting.test.ts | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 test/utils/formatting.test.ts diff --git a/src/utils/formatting.ts b/src/utils/formatting.ts index 3f9b39bdf..c80202c9f 100644 --- a/src/utils/formatting.ts +++ b/src/utils/formatting.ts @@ -9,7 +9,8 @@ export function normalizeToKebabOrSnakeCase(str: string) { const STRING_DASHERIZE_REGEXP = /\s/g; const STRING_DECAMELIZE_REGEXP = /([a-z\d])([A-Z])/g; return str - .replace(STRING_DECAMELIZE_REGEXP, '$1-$2') - .toLowerCase() - .replace(STRING_DASHERIZE_REGEXP, '-'); + ?.trim() + ?.replace(STRING_DECAMELIZE_REGEXP, '$1-$2') + ?.toLowerCase() + ?.replace(STRING_DASHERIZE_REGEXP, '-'); } diff --git a/src/utils/index.ts b/src/utils/index.ts index 8c3bacc51..ffb5e02ac 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -6,3 +6,4 @@ export * from './module.finder'; export * from './name.parser'; export * from './path.solver'; export * from './source-root.helpers'; +export * from './formatting'; diff --git a/test/utils/formatting.test.ts b/test/utils/formatting.test.ts new file mode 100644 index 000000000..3deb38f5d --- /dev/null +++ b/test/utils/formatting.test.ts @@ -0,0 +1,33 @@ +import { normalizeToKebabOrSnakeCase } from '../../src/utils'; + +describe('normalizeToKebabOrSnakeCase', () => { + it('should convert camelCase to kebab-case', () => { + const input = 'camelCaseString'; + const output = normalizeToKebabOrSnakeCase(input); + expect(output).toBe('camel-case-string'); + }); + + it('should replace spaces with dashes', () => { + const input = 'string with spaces'; + const output = normalizeToKebabOrSnakeCase(input); + expect(output).toBe('string-with-spaces'); + }); + + it('should keep underscores', () => { + const input = 'string_with_underscores'; + const output = normalizeToKebabOrSnakeCase(input); + expect(output).toBe('string_with_underscores'); + }); + + it('should handle empty string', () => { + const input = ''; + const output = normalizeToKebabOrSnakeCase(input); + expect(output).toBe(''); + }); + + it('should handle strings with leading/trailing spaces', () => { + const input = ' leading and trailing spaces '; + const output = normalizeToKebabOrSnakeCase(input); + expect(output).toBe('leading-and-trailing-spaces'); + }); +}); From f4c43d267c77a635ee533dd44466849d014765e8 Mon Sep 17 00:00:00 2001 From: Lucas Akira Uehara Date: Mon, 22 Jan 2024 08:30:34 -0300 Subject: [PATCH 2/2] test(formatting): add more unit test for complete the coverage --- test/utils/formatting.test.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/test/utils/formatting.test.ts b/test/utils/formatting.test.ts index 3deb38f5d..ec16308c0 100644 --- a/test/utils/formatting.test.ts +++ b/test/utils/formatting.test.ts @@ -30,4 +30,16 @@ describe('normalizeToKebabOrSnakeCase', () => { const output = normalizeToKebabOrSnakeCase(input); expect(output).toBe('leading-and-trailing-spaces'); }); + + it('should handle nil value', () => { + const input = null; + const output = normalizeToKebabOrSnakeCase(input); + expect(output).toBe(undefined); + }); + + it('should handle undefined value', () => { + const input = undefined; + const output = normalizeToKebabOrSnakeCase(input); + expect(output).toBe(undefined); + }); });