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))
})
})