import { parseJsx } from '../__tests__/utils' import { printAst, transformSource, type TransformSourceArgs } from '../utils' import { transformNotificationTypeToVariant } from './migrateNotificationTypeToVariant' const transformNotifications = (sourceFile: TransformSourceArgs['sourceFile']): string => { const tagsMap = new Map([ [ 'GlobalNotification', { importModuleName: '@kaizen/components', tagName: 'GlobalNotification', originalName: 'GlobalNotification', }, ], [ 'InlineNotification', { importModuleName: '@kaizen/components', tagName: 'InlineNotification', originalName: 'InlineNotification', }, ], [ 'ToastNotification', { importModuleName: '@kaizen/components', tagName: 'ToastNotification', originalName: 'ToastNotification', }, ], ]) return transformSource({ sourceFile, transformers: [transformNotificationTypeToVariant(tagsMap)], }) } describe('transformNotificationTypeToVariant', () => { it('replaces InlineNotifications type="positive" with variant="success"', () => { const inputAst = parseJsx(` export const TestComponent = () => Test `) const outputAst = parseJsx(` export const TestComponent = () => Test `) expect(transformNotifications(inputAst)).toEqual(printAst(outputAst)) }) it('replaces GlobalNotification type="positive" with variant="success"', () => { const inputAst = parseJsx(` export const TestComponent = () => Test `) const outputAst = parseJsx(` export const TestComponent = () => Test `) expect(transformNotifications(inputAst)).toEqual(printAst(outputAst)) }) it('replaces ToastNotification type="positive" with variant="success"', () => { const inputAst = parseJsx(` export const TestComponent = () => Test `) const outputAst = parseJsx(` export const TestComponent = () => Test `) expect(transformNotifications(inputAst)).toEqual(printAst(outputAst)) }) it('replaces type="informative" with variant="informative"', () => { const inputAst = parseJsx(` export const TestComponent = () => Test `) const outputAst = parseJsx(` export const TestComponent = () => Test `) expect(transformNotifications(inputAst)).toBe(printAst(outputAst)) }) it('replaces type="cautionary" with variant="cautionary"', () => { const inputAst = parseJsx(` export const TestComponent = () => Test `) const outputAst = parseJsx(` export const TestComponent = () => Test `) expect(transformNotifications(inputAst)).toBe(printAst(outputAst)) }) it('replaces type="security" with variant="security"', () => { const inputAst = parseJsx(` export const TestComponent = () => Test `) const outputAst = parseJsx(` export const TestComponent = () => Test `) expect(transformNotifications(inputAst)).toBe(printAst(outputAst)) }) it('replaces type="negative" with variant="warning"', () => { const inputAst = parseJsx(` export const TestComponent = () => Test `) const outputAst = parseJsx(` export const TestComponent = () => Test `) expect(transformNotifications(inputAst)).toBe(printAst(outputAst)) }) })