babel-plugin-transform-cx-imports
Version:
Rewrite Cx imports for simplicity and optimal output size.
79 lines (54 loc) • 2.06 kB
JavaScript
"use strict";
var babel = require("@babel/core"),
plugin = require("./index"),
assert = require('assert');
function unwrap(code) {
return code.substring(0, code.length - 1);
//return code.substring(15, code.length-1);
}
function lines(code) {
return unwrap(code).split('\n');
}
describe('babel-plugin-transform-cx-imports', function() {
it("skips non-cx import", function () {
let code = `import _ from "lodash"`;
let output = babel.transform(code, {
plugins: [plugin]
}).code;
assert.equal(unwrap(output), 'import _ from "lodash"');
});
it("supports multiple imports", function () {
let code = `import { Widget, VDOM } from "cx/ui"`;
let output = babel.transform(code, {
plugins: [plugin]
}).code;
assert.equal(unwrap(output), 'import { Widget, VDOM } from "cx/ui"');
});
it("imports Cx widgets from source", function () {
let code = `import {TextField} from "cx/widgets"`;
let output = babel.transform(code, {
plugins: [[plugin, { useSrc: true }]]
}).code;
assert.equal(unwrap(output), 'import { TextField } from "cx/src/widgets/form/TextField.js"');
});
it("imports scss file if available and option is set", function () {
let code = `import {TextField} from "cx/widgets"`;
let output = babel.transform(code, {
plugins: [[plugin, { useSrc: true, scss: true }]]
}).code;
assert.deepEqual(lines(output), [
'import { TextField } from "cx/src/widgets/form/TextField.js";',
'import "cx/src/widgets/form/TextField.scss"'
]);
});
it("imports multiple things from source", function () {
let code = `import { Text, TextField } from "cx/widgets"`;
let output = babel.transform(code, {
plugins: [[plugin, { useSrc: true }]]
}).code;
assert.deepEqual(lines(output), [
'import { Text } from "cx/src/ui/Text.js";',
'import { TextField } from "cx/src/widgets/form/TextField.js"'
]);
});
});