import { applyTransform } from '@hypermod/utils'; import * as transformer from '..'; it('should migrate the Dropdown component', async () => { const result = await applyTransform( transformer, ` const App = () => { const [status, setStatus] = React.useState('latest-added'); const [isDropdownOpen, setIsDropdownOpen] = React.useState(false); return ( Sort By setIsDropdownOpen(false)}> setIsDropdownOpen(!isDropdownOpen)} > {status ?? ''} { console.log({ name, value }); setStatus(name); }} isSelected={status === 'latest-added'} title="Latest Added" value="latest-added" /> { console.log({ name, value }); setStatus(name); }} isSelected={status === 'latest-invoice'} title="Latest Invoice" value="latest-invoice" /> ); } `, { parser: 'tsx' }, ); expect(result).toMatchInlineSnapshot(` "const App = () => { const [status, setStatus] = React.useState('latest-added'); const [isDropdownOpen, setIsDropdownOpen] = React.useState(false); return ( Sort By { if (!isOpen) { setIsDropdownOpen(false); } }}> setIsDropdownOpen(!isDropdownOpen)} > {status ?? ''} { console.log({ name, value }); setStatus(name); }} isSelected={status === 'latest-added'} title="Latest Added" value="latest-added" /> { console.log({ name, value }); setStatus(name); }} isSelected={status === 'latest-invoice'} title="Latest Invoice" value="latest-invoice" /> ); }" `); }); it('should migrate various scenarios for the onDismiss prop', async () => { const result = await applyTransform( transformer, ` const App = () => { return ( console.log("Dismissed!!!")} > My Account My Account { console.log("Dismissed!!!"); setIsDropdownOpen(false); }} > My Account My Account ); } `, { parser: 'tsx' }, ); expect(result).toMatchInlineSnapshot(` "const App = () => { return ( { if (!isOpen) { console.log("Dismissed!!!"); } }} > My Account { if (!isOpen) { console.log("Dismissed!!!") setIsDropdownOpen(false); } }} > My Account { if (!isOpen) { console.log("Dismissed!!!"); setIsDropdownOpen(false); } }} > My Account { if (!isOpen) { handleDropdownDismiss(); } }} > My Account ); }" `); });