import { macroTester } from "./macroTester" describe.skip("", () => {}) macroTester({ cases: [ { name: "Generate ID from message", code: ` import { Trans } from '@lingui/react/macro'; Hello World; `, }, { name: "Generate different id when context provided", code: ` import { Trans } from '@lingui/react/macro'; Hello World; Hello World; `, }, { name: "Preserve custom ID (string literal)", code: ` import { Trans } from '@lingui/react/macro'; Hello World; `, }, { name: "Preserve custom ID (literal expression)", code: ` import { Trans } from '@lingui/react/macro'; Hello World; `, }, { name: "Preserve custom ID (template expression)", code: ` import { Trans } from '@lingui/react/macro'; Hello World; `, }, { name: "Should preserve reserved props: `comment`, `context`, `render`, `id`", code: ` import { Trans } from '@lingui/react/macro'; {}} >Hello World; `, }, { name: "Trans macro could be renamed", code: ` import { Trans as Trans2 } from '@lingui/react/macro'; Hello World; `, }, { name: "Variables are converted to named arguments", code: ` import { Trans } from '@lingui/react/macro'; Hi {yourName}, my name is {myName}; `, }, { name: "Variables are deduplicated", code: ` import { Trans } from '@lingui/react/macro'; {duplicate} variable {duplicate}; `, }, { name: "Quoted JSX attributes are handled", code: ` import { Trans } from '@lingui/react/macro'; Speak "friend"!; Speak "friend"!; `, }, { name: "HTML attributes are handled", code: ` import { Trans } from '@lingui/react/macro'; This should work   ; `, }, { name: "Template literals as children", code: ` import { Trans } from '@lingui/react/macro'; {\`How much is \${expression}? \${count}\`}; `, }, { name: "Strings as children are preserved", code: ` import { Trans } from '@lingui/react/macro'; {"hello {count, plural, one {world} other {worlds}}"}; `, }, { name: "Expressions are converted to positional arguments", code: ` import { Trans } from '@lingui/react/macro'; Property {props.name}, function {random()}, array {array[index]}, constant {42}, object {new Date()}, everything {props.messages[index].value()} ; `, }, { name: "JSX Macro inside JSX conditional expressions", code: ` import { Trans } from '@lingui/react/macro'; Hello, {props.world ? world : guys} `, }, { name: "JSX Macro inside JSX multiple nested conditional expressions", code: ` import { Trans } from '@lingui/react/macro'; Hello, {props.world ? world : ( props.b ? nested : guys ) } `, }, { name: "Elements are replaced with placeholders", code: ` import { Trans } from '@lingui/react/macro'; Hello World!

My name is {" "} {name}

; `, }, { name: "Elements inside expression container", code: ` import { Trans } from '@lingui/react/macro'; {Component inside expression container}; `, }, { name: "Elements without children", code: ` import { Trans } from '@lingui/react/macro'; {
}
; `, }, { name: "stripMessageField option - message prop is removed if stripMessageField: true", macroOpts: { stripMessageField: true, }, code: ` import { Trans } from '@lingui/macro'; Hello World `, }, { name: "Production - only essential props are kept", production: true, code: ` import { Trans } from '@lingui/react/macro'; Hello World `, }, { name: "Production - message prop is kept if stripMessageField: false", production: true, macroOpts: { stripMessageField: false, }, code: ` import { Trans } from '@lingui/macro'; Hello World `, }, { name: "Production - all props kept if extract: true", production: true, macroOpts: { extract: true, }, code: ` import { Trans } from '@lingui/react/macro'; Hello World `, }, { name: "Production - import type doesn't interference on normal import", production: true, useTypescriptPreset: true, code: ` import type { withI18nProps } from '@lingui/react' import { Trans } from '@lingui/react/macro'; Hello World `, }, { name: "Strip whitespace around arguments", code: ` import { Trans } from "@lingui/react/macro"; Strip whitespace around arguments: ' {name} ' `, }, { name: "Strip whitespace around tags but keep forced spaces", code: ` import { Trans } from "@lingui/react/macro"; Strip whitespace around tags, but keep{" "} forced spaces ! `, }, { name: "Strip whitespace around tags but keep whitespaces in JSX containers", code: ` import { Trans } from "@lingui/react/macro"; {"Wonderful framework "} Next.js {" say hi. And "} Next.js {" say hi."} `, }, { name: "Keep forced newlines", filename: "./jsx-keep-forced-newlines.js", }, { name: "Use a js macro inside a JSX Attribute of a component handled by JSX macro", code: ` import { Trans } from '@lingui/react/macro'; import { t } from '@lingui/core/macro'; Read more `, }, { name: "Use a js macro inside a JSX Attribute of a non macro JSX component", code: ` import { plural } from '@lingui/core/macro'; About `, }, { name: "Ignore JSXEmptyExpression", code: ` import { Trans } from '@lingui/react/macro'; Hello {/* and I cannot stress this enough */} World; `, }, { name: "Use decoded html entities", code: ` import { Trans } from "@lingui/react/macro"; & `, }, { name: "Should not process non JSXElement nodes", useTypescriptPreset: true, code: ` import { Trans } from "@lingui/react/macro"; type X = typeof Trans; const cmp = Hello `, }, ], })