discourse/app/assets/javascripts/asset-processor/babel-replace-imports.test.mjs
David Taylor 585ba17f56
DEV: Rename theme-transpiler to asset-processor (#35498)
This is already used for more than just themes, and we plan to extend
its usage even further
2025-10-20 14:16:46 +01:00

44 lines
1.4 KiB
JavaScript
Vendored

/* eslint-disable qunit/require-expect */
import { transformSync } from "@babel/core";
import { expect, test } from "vitest";
import BabelReplaceImports from "./babel-replace-imports.js";
function compile(input) {
return transformSync(input, {
configFile: false,
plugins: [BabelReplaceImports],
}).code;
}
test("replaces imports with moduleBroker calls", () => {
expect(
compile(`
import concatClass from "discourse/helpers/concat-class";
import { default as renamedDefaultImport, namedImport, otherNamedImport as renamedImport } from "discourse/module-1";
`)
).toMatchInlineSnapshot(`
"const {
default: concatClass
} = await window.moduleBroker.lookup("discourse/helpers/concat-class");
const {
default: renamedDefaultImport,
namedImport: namedImport,
otherNamedImport: renamedImport
} = await window.moduleBroker.lookup("discourse/module-1");"
`);
});
test("handles namespace imports", () => {
expect(
compile(`
import * as MyModule from "discourse/module-1";
import defaultExport, * as MyModule2 from "discourse/module-2";
`)
).toMatchInlineSnapshot(`
"const MyModule = await window.moduleBroker.lookup("discourse/module-1");
const {
default: defaultExport
} = await window.moduleBroker.lookup("discourse/module-2");
const MyModule2 = await window.moduleBroker.lookup("discourse/module-2");"
`);
});