diff --git a/tests/utils/string.test.tsx b/tests/utils/string.test.tsx index 898e444a..74ea7d83 100644 --- a/tests/utils/string.test.tsx +++ b/tests/utils/string.test.tsx @@ -56,6 +56,22 @@ describe('generateMetaTags', () => { }) describe('utils.suitNames', () => { + describe('block()', () => { + it('should returns converted string', () => { + const className = 'BlockName' + const { block } = suitNames(className) + expect(block()).toEqual('BlockName') + }) + }) + + describe('blockModifier()', () => { + it('should returns converted string', () => { + const className = 'BlockName' + const { blockModifier } = suitNames(className) + expect(blockModifier('modifierName')).toEqual('BlockName BlockName--modifierName') + }) + }) + describe('element()', () => { it('should returns converted string', () => { const className = 'BlockName' @@ -63,6 +79,15 @@ describe('utils.suitNames', () => { expect(element('elementName')).toEqual('BlockName-elementName') }) }) + + describe('elementModifier()', () => { + it('should returns converted string', () => { + const className = 'BlockName' + const { elementModifier } = suitNames(className) + expect(elementModifier('elementName', 'modifierName')) + .toEqual('BlockName-elementName BlockName-elementName--modifierName') + }) + }) }) describe('getStyledComponentsClassName', () => { diff --git a/utils/string.ts b/utils/string.ts index 5b56e55b..787c6bc0 100644 --- a/utils/string.ts +++ b/utils/string.ts @@ -32,13 +32,32 @@ export const generateMetaTags = (metaTags?: Partial): TMetaTags => { } } +const suitBlockName = (blockName: string) => () => { + return blockName +} + +const suitBlockModifierName = (blockName: string) => { + return (modifierName: string) => { + return `${blockName} ${blockName}--${modifierName}` + } +} + const suitElementName = (blockName: string) => (elementName: string) => { return `${blockName}-${elementName}` } +const suitElementModifierName = (blockName: string) => { + return (elementName: string, modifierName: string) => { + return `${blockName}-${elementName} ${blockName}-${elementName}--${modifierName}` + } +} + export const suitNames = (blockName: string) => { return { - element: suitElementName(blockName) + block: suitBlockName(blockName), + blockModifier: suitBlockModifierName(blockName), + element: suitElementName(blockName), + elementModifier: suitElementModifierName(blockName) } as const }