ts-simple-ast
Version:
TypeScript compiler wrapper for AST navigation and code generation.
48 lines (46 loc) • 2.84 kB
JavaScript
;
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