import { code, Output, refkey } from "@alloy-js/core"; import { describe, expect, it } from "vitest"; import * as jv from "../src/components/index.js"; import { TestPackage } from "./utils.js"; it("declares basic empty function", () => { expect( {code` class Test { ${( System.out.println("Test"); )} } `} , ).toRenderTo(` package me.test.code; class Test { public void testMethod() { System.out.println("Test"); } } `); }); it("declares bodyless function", () => { expect( {code` class Test { ${()} } `} , ).toRenderTo(` package me.test.code; class Test { public void testMethod(); } `); }); describe("can throw errors", () => { it("of generic Exception", () => { expect( {code` class Test { ${()} } `} , ).toRenderTo(` package me.test.code; class Test { public void testMethod() throws Exception; } `); }); it("of custom Exception", () => { expect( {code` class Test { ${()} } `} {code` public class CustomError extends Exception { } `} , ).toRenderTo({ "me/test/code/Test.java": ` package me.test.code; import me.test.code.errors.CustomError; class Test { public void testMethod() throws CustomError; } `, "me/test/code/errors/CustomError.java": expect.any(String), }); }); }); it("declares return type", () => { expect( {code` class Test { ${( System.out.println("Test"); return "Test"; )} } `} , ).toRenderTo(` package me.test.code; class Test { public String testMethod() { System.out.println("Test"); return "Test"; } } `); }); it("declares parameters", () => { expect( {code` public class Model { } `} {code` public class Test { ${( System.out.println("Test"); )} } `} , ).toRenderTo({ "me/test/code/Model.java": expect.any(String), "me/test/code/imports/Test.java": ` package me.test.code.imports; import me.test.code.Model; public class Test { public void testMethod(Model myModel, String name) { System.out.println("Test"); } } `, }); }); it("defines generics", () => { expect( {code` public class Model { } `} {code` public class Test { ${( System.out.println("Test"); )} } `} , ).toRenderTo({ "me/test/code/Model.java": expect.any(String), "me/test/code/imports/Test.java": ` package me.test.code.imports; import me.test.code.Model; public class Test { public void testMethod() { System.out.println("Test"); } } `, }); });