react-email
Version:
A live preview of your emails right in your browser.
37 lines (33 loc) • 1.17 kB
text/typescript
import { generate, parse } from 'css-tree';
import { resolveCalcExpressions } from './resolve-calc-expressions.js';
describe('resolveCalcExpressions()', () => {
it('resolves spacing calc expressions from tailwind v4', () => {
const root = parse(`
.px-3{padding-inline:calc(0.25rem*3)}
.py-2{padding-block:calc(0.25rem*2)}
`);
resolveCalcExpressions(root);
expect(generate(root)).toMatchInlineSnapshot(
`".px-3{padding-inline:0.75rem}.py-2{padding-block:0.5rem}"`,
);
});
it('resolves calc expressions repeating decimals', () => {
const root = parse(`
.w-1/3 { width: calc(0.3333333333333333*100%); }
`);
resolveCalcExpressions(root);
expect(generate(root)).toMatchInlineSnapshot(
`".w-1/3{width:33.33333333333333%}"`,
);
});
it('does not modify complex calc expressions', () => {
const root = parse(`
.px-3{padding-inline:calc(0.25rem*(3 + 1px))}
.py-2{padding-block:calc(0.25rem*(2 + 1px))}
`);
resolveCalcExpressions(root);
expect(generate(root)).toMatchInlineSnapshot(
`".px-3{padding-inline:calc(0.25rem*(3 + 1px))}.py-2{padding-block:calc(0.25rem*(2 + 1px))}"`,
);
});
});