ms.macro
Version:
Convert various time formats to milliseconds at build time in Babel.
74 lines (60 loc) • 1.93 kB
JavaScript
'use strict';
var _ava = require('ava');
var _ava2 = _interopRequireDefault(_ava);
var _babelPluginMacros = require('babel-plugin-macros');
var _babelPluginMacros2 = _interopRequireDefault(_babelPluginMacros);
var _babelCore = require('babel-core');
var _commonTags = require('common-tags');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const run = code => (0, _babelCore.transform)(code, {
babelrc: false,
plugins: [_babelPluginMacros2.default],
filename: __filename
}).code.trim();
{
const expected = _commonTags.stripIndent`
const ONE_DAY = 86400000;
const TWO_DAYS = 172800000;
`;
(0, _ava2.default)('CallExpression', t => {
const input = _commonTags.stripIndent`
import ms from './ms.macro';
const ONE_DAY = ms('1 day');
const TWO_DAYS = ms('2 days');
`;
const output = run(input);
t.is(output, expected);
});
(0, _ava2.default)('TaggedTemplateExpression', t => {
const input = _commonTags.stripIndent`
import ms from './ms.macro';
const ONE_DAY = ms\`1 day\`;
const TWO_DAYS = ms\`2 days\`;
`;
const output = run(input);
t.is(output, expected);
});
}
(0, _ava2.default)('CallExpression Error', t => {
const input = _commonTags.stripIndent`
import ms from './ms.macro';
const ONE_DAY = ms('1 da');
`;
const error = t.throws(() => run(input));
t.is(error.message, `${__filename}: Invalid input given to ms.macro at line 2`);
});
(0, _ava2.default)('Use ms and ms.macro together', t => {
const input = _commonTags.stripIndent`
import ms from 'ms';
import msm from './ms.macro';
const ONE_DAY = msm('1 day');
const str = ms(172800000);
`;
const expected = _commonTags.stripIndent`
import ms from 'ms';
const ONE_DAY = 86400000;
const str = ms(172800000);
`;
const output = run(input);
t.is(output, expected);
});