import { parseJsx } from '../__tests__/utils' import { getKaioTagNamesMapByComponentName, printAst, transformSource, type TransformSourceArgs, } from '../utils' import { transformWellVariantToColor } from './transformWellVariantToColor' const transformWell = (sourceFile: TransformSourceArgs['sourceFile']): string => { const kaioTagNamesMap = getKaioTagNamesMapByComponentName(sourceFile, ['Well']) return transformSource({ sourceFile, transformers: [transformWellVariantToColor(kaioTagNamesMap!)], }) } describe('transformWellVariantToColor()', () => { it('replaces variant="default" with color="gray"', () => { const inputAst = parseJsx(` import {Well} from "@kaizen/components" export const TestComponent = () => Test `) const outputAst = parseJsx(` import {Well} from "@kaizen/components" export const TestComponent = () => Test `) expect(transformWell(inputAst)).toEqual(printAst(outputAst)) }) it('replaces variant="informative" with color="blue"', () => { const inputAst = parseJsx(` import {Well} from "@kaizen/components" export const TestComponent = () => Test `) const outputAst = parseJsx(` import {Well} from "@kaizen/components" export const TestComponent = () => Test `) expect(transformWell(inputAst)).toBe(printAst(outputAst)) }) it('adds color="gray" if variant is not specified', () => { const inputAst = parseJsx(` import {Well} from "@kaizen/components" export const TestComponent = () => Test `) const outputAst = parseJsx(` import {Well} from "@kaizen/components" export const TestComponent = () => Test `) expect(transformWell(inputAst)).toBe(printAst(outputAst)) }) it('handles multiple attributes and replace only variant', () => { const inputAst = parseJsx(` import {Well} from "@kaizen/components" export const TestComponent = () => Test `) const outputAst = parseJsx(` import {Well} from "@kaizen/components" export const TestComponent = () => Test `) expect(transformWell(inputAst)).toBe(printAst(outputAst)) }) it('handles multiple attributes and add color if variant is not specified', () => { const inputAst = parseJsx(` import {Well} from "@kaizen/components" export const TestComponent = () => Test `) const outputAst = parseJsx(` import {Well} from "@kaizen/components" export const TestComponent = () => Test `) expect(transformWell(inputAst)).toBe(printAst(outputAst)) }) it('handles nested Well components', () => { const inputAst = parseJsx(` import {Well} from "@kaizen/components" export const TestComponent = () =>
Test
`) const outputAst = parseJsx(` import {Well} from "@kaizen/components" export const TestComponent = () =>
Test
`) expect(transformWell(inputAst)).toBe(printAst(outputAst)) }) it('transforms multiple Wells', () => { const inputAst = parseJsx(` import {Well} from "@kaizen/components" export const TestComponent = () =>
TestTest 2
`) const outputAst = parseJsx(` import {Well} from "@kaizen/components" export const TestComponent = () =>
TestTest 2
`) expect(transformWell(inputAst)).toBe(printAst(outputAst)) }) it('transforms Well with arbitrary braces', () => { const inputAst = parseJsx(` import {Well} from "@kaizen/components" export const TestComponent = () =>
TestTestTest
`) const outputAst = parseJsx(` import {Well} from "@kaizen/components" export const TestComponent = () =>
TestTestTest
`) expect(transformWell(inputAst)).toBe(printAst(outputAst)) }) it("won't add color if color already exists", () => { const inputAst = parseJsx(` import {Well} from "@kaizen/components" export const TestComponent = () =>
Test
`) const outputAst = parseJsx(` import {Well} from "@kaizen/components" export const TestComponent = () =>
Test
`) expect(transformWell(inputAst)).toBe(printAst(outputAst)) }) it("won't modify variants usings variables", () => { const inputAst = parseJsx(` import {Well} from "@kaizen/components" export const TestComponent = () =>
Test
`) const outputAst = parseJsx(` import {Well} from "@kaizen/components" export const TestComponent = () =>
Test
`) expect(transformWell(inputAst)).toBe(printAst(outputAst)) }) it('transforms aliased Well components', () => { const inputAst = parseJsx(` import {Well as KaizenWell} from "@kaizen/components" export const TestComponent = () =>
Test
`) const outputAst = parseJsx(` import {Well as KaizenWell} from "@kaizen/components" export const TestComponent = () =>
Test
`) expect(transformWell(inputAst)).toEqual(printAst(outputAst)) }) })