one
Version:
One is a new React Framework that makes Vite serve both native and web.
72 lines (71 loc) • 2.81 kB
JavaScript
import path from "path";
import { transformSync } from "@babel/core";
import { describe, expect, it } from "vitest";
import oneBabelPreset from "./index.native.js";
var projectRoot = path.resolve(__dirname, "../../");
describe("one/babel-preset integration", function () {
var presetWithOpts = [oneBabelPreset, {
projectRoot,
includeExpoPreset: false
}];
it("runs against a route file without throwing", function () {
var code = `
import { useLoader } from 'one'
export default function Page() {
return null
}
`;
var result = transformSync(code, {
filename: path.join(projectRoot, "app/index.tsx"),
cwd: projectRoot,
presets: [presetWithOpts],
parserOpts: {
sourceType: "module",
plugins: ["jsx"]
}
});
expect(result === null || result === void 0 ? void 0 : result.code).toBeTruthy();
expect(result === null || result === void 0 ? void 0 : result.code).toContain("useLoader");
});
it("substitutes ONE_ROUTER_* process.env placeholders in metro-entry", function () {
var code = `
const ctx = require.context(
process.env.ONE_ROUTER_APP_ROOT_RELATIVE_TO_ENTRY,
true,
process.env.ONE_ROUTER_REQUIRE_CONTEXT_REGEX_STRING
)
const folder = process.env.ONE_ROUTER_ROOT_FOLDER_NAME
module.exports = { ctx, folder }
`;
var result = transformSync(code, {
filename: path.join(projectRoot, "metro-entry-ctx.js"),
cwd: projectRoot,
presets: [presetWithOpts],
parserOpts: {
sourceType: "module"
}
});
expect(result === null || result === void 0 ? void 0 : result.code).toBeTruthy();
expect(result === null || result === void 0 ? void 0 : result.code).not.toContain("process.env.ONE_ROUTER_APP_ROOT_RELATIVE_TO_ENTRY");
expect(result === null || result === void 0 ? void 0 : result.code).not.toContain("process.env.ONE_ROUTER_ROOT_FOLDER_NAME");
expect(result === null || result === void 0 ? void 0 : result.code).not.toContain("process.env.ONE_ROUTER_REQUIRE_CONTEXT_REGEX_STRING");
expect(result === null || result === void 0 ? void 0 : result.code).toContain('"app"');
expect(result === null || result === void 0 ? void 0 : result.code).toMatch(/\/\^.*\.tsx\?\$\//);
});
it("keeps client code intact in non-route files", function () {
var code = `
const x = 1
export default x
`;
var result = transformSync(code, {
filename: path.join(projectRoot, "src/utils/x.ts"),
cwd: projectRoot,
presets: [presetWithOpts],
parserOpts: {
sourceType: "module"
}
});
expect(result === null || result === void 0 ? void 0 : result.code).toContain("const x = 1");
});
});
//# sourceMappingURL=integration.test.native.js.map