cosmjs-util/packages/cli/src/tsrepl.spec.ts
2020-02-06 17:36:14 +01:00

57 lines
1.6 KiB
TypeScript

import { join } from "path";
import { TsRepl } from "./tsrepl";
const tsConfigPath = join(__dirname, "..", "tsconfig_repl.json");
describe("TsRepl", () => {
it("can be constructed", () => {
const noCode = new TsRepl(tsConfigPath, "");
expect(noCode).toBeTruthy();
const jsCode = new TsRepl(tsConfigPath, "const a = 'foo'");
expect(jsCode).toBeTruthy();
const tsCode = new TsRepl(tsConfigPath, "const a: string = 'foo'");
expect(tsCode).toBeTruthy();
});
it("can be started", async () => {
{
const server = await new TsRepl(tsConfigPath, "").start();
expect(server).toBeTruthy();
}
{
const server = await new TsRepl(tsConfigPath, "const a = 'foo'").start();
expect(server).toBeTruthy();
}
{
const server = await new TsRepl(tsConfigPath, "const a: string = 'foo'").start();
expect(server).toBeTruthy();
}
});
it("errors when starting with broken TypeScript", async () => {
await new TsRepl(tsConfigPath, "const a: string = 123;")
.start()
.then(() => fail("must not resolve"))
.catch(e => expect(e).toMatch(/is not assignable to type 'string'/));
await new TsRepl(tsConfigPath, "const const const;")
.start()
.then(() => fail("must not resolve"))
.catch(e => expect(e).toMatch(/Variable declaration expected./));
});
it("can be started with top level await", async () => {
{
const server = await new TsRepl(tsConfigPath, "await 1").start();
expect(server).toBeTruthy();
}
{
const server = await new TsRepl(tsConfigPath, "await 1 + await 2").start();
expect(server).toBeTruthy();
}
});
});