Skip to content

Commit

Permalink
test(utils): Add block(), blockModifier(), elementModifier()
Browse files Browse the repository at this point in the history
  • Loading branch information
ruedap committed Jul 5, 2020
1 parent fdb7ebc commit 77bdc68
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 1 deletion.
25 changes: 25 additions & 0 deletions tests/utils/string.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -56,13 +56,38 @@ 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'
const { element } = suitNames(className)
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', () => {
Expand Down
21 changes: 20 additions & 1 deletion utils/string.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,32 @@ export const generateMetaTags = (metaTags?: Partial<TMetaTags>): 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
}

Expand Down

0 comments on commit 77bdc68

Please sign in to comment.