import ts from 'typescript' import { parseJsx } from '../__tests__/utils' import { printAst } from '../utils' import { transformCaMonogramIconToBrand } from './transformCaMonogramIconToBrand' export const mockedTransformer = (alias?: string) => (context: ts.TransformationContext) => (rootNode: ts.Node): ts.Node => { const visit = (node: ts.Node): ts.Node => { if (ts.isJsxOpeningElement(node) || ts.isJsxSelfClosingElement(node)) { return transformCaMonogramIconToBrand(node, alias) } return ts.visitEachChild(node, visit, context) } return ts.visitNode(rootNode, visit) } const transformInput = (sourceFile: ts.SourceFile, alias?: string): string => { const result = ts.transform(sourceFile, [mockedTransformer(alias)]) const transformedSource = result.transformed[0] as ts.SourceFile return printAst(transformedSource) } describe('transformCaMonogramIconToBrand()', () => { it('replaces CaMonogramIcon with Brand variant enso and adds size', () => { const inputAst = parseJsx('') const outputAst = parseJsx('') expect(transformInput(inputAst)).toEqual(printAst(outputAst)) }) it('uses alias if it is defined', () => { const inputAst = parseJsx('') const outputAst = parseJsx('') expect(transformInput(inputAst, 'KzBrand')).toEqual(printAst(outputAst)) }) describe('transform existing props', () => { it('removes role and changes aria-label to alt', () => { const inputAst = parseJsx(` export const TestComponent = () => ( <> ) `) const outputAst = parseJsx(` export const TestComponent = () => ( <> ) `) expect(transformInput(inputAst)).toEqual(printAst(outputAst)) }) it('leaves classNameOverride as is', () => { const inputAst = parseJsx(` export const TestComponent = () => `) const outputAst = parseJsx(` export const TestComponent = () => `) expect(transformInput(inputAst)).toEqual(printAst(outputAst)) }) it('removes inheritSize and does not add size', () => { const inputAst = parseJsx(` export const TestComponent = () => `) const outputAst = parseJsx(` export const TestComponent = () => `) expect(transformInput(inputAst)).toEqual(printAst(outputAst)) }) }) })