import { describe, expect, it } from "@effect/vitest";
import { compileJsx, evaluateComponent } from "./component-runtime";
describe("generated UI component runtime", () => {
it("accepts export default function components", () => {
const compiled = compileJsx(`
const config = { maxHeight: 500 };
export default function App() {
return ok;
}
`);
const result = evaluateComponent(compiled, {});
expect(compiled).not.toContain("export default");
expect(result).not.toHaveProperty("error");
if ("error" in result) return;
expect(typeof result.component).toBe("function");
expect(result.config).toEqual({ maxHeight: 500 });
});
it("accepts anonymous default exports", () => {
const compiled = compileJsx(`
export default function() {
return ok;
}
`);
const result = evaluateComponent(compiled, {});
expect(result).not.toHaveProperty("error");
if ("error" in result) return;
expect(typeof result.component).toBe("function");
});
it("shadows direct fetch attempts with a clear error", () => {
const compiled = compileJsx(`
fetch("https://example.com");
function App() {
return ;
}
`);
const result = evaluateComponent(compiled, {});
expect(result).toEqual({
error:
"Evaluation error: fetch is disabled in generated UI. Use tools.* via useQuery/useMutation.",
});
});
});