UNPKG

ts-simple-ast

Version:

TypeScript compiler wrapper for AST navigation and code generation.

48 lines (46 loc) 2.84 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const chai_1 = require("chai"); const testHelpers_1 = require("./../testHelpers"); describe("MethodSignature", () => { function getFirstMethodWithInfo(code) { const opts = testHelpers_1.getInfoFromText(code); return Object.assign({}, opts, { firstMethod: opts.firstChild.getMethods()[0] }); } describe("fill", () => { function doTest(code, structure, expectedCode) { const { firstMethod, sourceFile } = getFirstMethodWithInfo(code); firstMethod.fill(structure); chai_1.expect(sourceFile.getFullText()).to.equal(expectedCode); } it("should not change when nothing is set", () => { doTest("interface Identifier { method(): string; }", {}, "interface Identifier { method(): string; }"); }); it("should change when setting", () => { doTest("interface Identifier { method(): string; }", { returnType: "number" }, "interface Identifier { method(): number; }"); }); }); describe("remove", () => { function doTest(code, nameToRemove, indexToRemove, expectedCode) { const { firstChild, sourceFile } = testHelpers_1.getInfoFromText(code); firstChild.getMethods().filter(m => m.getName() === nameToRemove)[indexToRemove].remove(); chai_1.expect(sourceFile.getFullText()).to.equal(expectedCode); } it("should remove when it's the only member", () => { doTest("interface Identifier {\n member(): string;\n}", "member", 0, "interface Identifier {\n}"); }); it("should remove when it's the first member", () => { doTest("interface Identifier {\n member(): string;\n prop: string;\n member2(): string;\n}", "member", 0, "interface Identifier {\n prop: string;\n member2(): string;\n}"); }); it("should remove when it's the middle member", () => { doTest("interface Identifier {\n member(): string;\n member2(): string;\n member3(): string;\n}", "member2", 0, "interface Identifier {\n member(): string;\n member3(): string;\n}"); }); it("should remove when it's the last member", () => { doTest("interface Identifier {\n member(): string;\n member2(): string;\n}", "member2", 0, "interface Identifier {\n member(): string;\n}"); }); it("should only remove the member signature specified", () => { doTest("interface Identifier {\n member(): string;\n member(param: number): string;\n member(t: string): string;\n}", "member", 1, "interface Identifier {\n member(): string;\n member(t: string): string;\n}"); }); }); }); //# sourceMappingURL=methodSignatureDeclarationTests.js.map