import { parseJsx } from '../__tests__/utils'
import { printAst, transformSource, type TransformSourceArgs } from '../utils'
import { removeProps } from './removeProps'
const testRemoveProps = (
sourceFile: TransformSourceArgs['sourceFile'],
propsToRemove: string[] = ['topping'],
): string => {
const tagsMap = new Map([
[
'Pancakes',
{
importModuleName: '@kaizen/components',
tagName: 'Pancakes',
originalName: 'Pancakes',
},
],
])
return transformSource({
sourceFile,
transformers: [removeProps(propsToRemove)(tagsMap)],
})
}
describe('removeProps()', () => {
it('removes single specified prop', () => {
const inputAst = parseJsx(`
export const TestComponent = () =>
`)
const outputAst = parseJsx(`
export const TestComponent = () =>
`)
expect(testRemoveProps(inputAst)).toEqual(printAst(outputAst))
})
it('removes multiple specified props', () => {
const inputAst = parseJsx(`
export const TestComponent = () =>
`)
const outputAst = parseJsx(`
export const TestComponent = () =>
`)
expect(testRemoveProps(inputAst, ['topping', 'fruit'])).toEqual(printAst(outputAst))
})
it('handles multiple attributes and removes only specified props', () => {
const inputAst = parseJsx(`
export const TestComponent = () =>
`)
const outputAst = parseJsx(`
export const TestComponent = () =>
`)
expect(testRemoveProps(inputAst)).toEqual(printAst(outputAst))
})
it('transforms multiple Pancakess', () => {
const inputAst = parseJsx(`
export const TestComponent = () =>
`)
const outputAst = parseJsx(`
export const TestComponent = () =>
`)
expect(testRemoveProps(inputAst)).toEqual(printAst(outputAst))
})
})