import { code, namekey, Output } from "@alloy-js/core";
import { expect, it } from "vitest";
import * as ts from "../src/index.js";
import { decl, declMember, declType } from "../src/symbols/index.js";
it("declares variables", () => {
const hi = namekey("hi");
expect(
,
).toRenderTo({
"test1.ts": `
const hi = 12;
console.log(hi);
`,
"test2.ts": `
import { hi } from "./test1.js";
hi;
`,
});
});
it("declares types", () => {
const hi = namekey("hi");
expect(
,
).toRenderTo({
"test1.ts": `
interface hi {
value: number;
}
`,
"test2.ts": `
import type { hi } from "./test1.js";
const test: hi
`,
});
});
it("declares variables", () => {
const hi = namekey("hi");
expect(
,
).toRenderTo({
"test1.ts": `
interface hi {
value: number;
}
`,
"test2.ts": `
import type { hi } from "./test1.js";
const test: hi
`,
});
});
it("declares members", () => {
const publicMember = namekey("publicMember");
const privateMember = namekey("privateMember");
const staticMethod = namekey("staticMethod");
expect(
,
).toRenderTo(`
class Foo {
public publicMember = 12;
#privateMember = 34;
constructor() {
this.publicMember = 24;
this.#privateMember = 10;
}
static $staticMethod() {};
}
Foo.staticMethod();
`);
});