ts-simple-ast
Version:
TypeScript compiler wrapper for AST navigation and code generation.
63 lines (61 loc) • 4.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const ts = require("typescript");
const chai_1 = require("chai");
const testHelpers_1 = require("./../testHelpers");
describe("Identifier", () => {
describe("rename", () => {
it("should rename", () => {
const text = "function myFunction() {} const reference = myFunction;";
const { firstChild, sourceFile } = testHelpers_1.getInfoFromText(text);
firstChild.getNameIdentifier().rename("newFunction");
chai_1.expect(sourceFile.getFullText()).to.equal(text.replace(/myFunction/g, "newFunction"));
});
});
describe("findReferences", () => {
it("should find all the references", () => {
const { firstChild, sourceFile, tsSimpleAst } = testHelpers_1.getInfoFromText("function myFunction() {}\nconst reference = myFunction;");
const secondSourceFile = tsSimpleAst.addSourceFileFromText("second.ts", "const reference2 = myFunction;");
const referencedSymbols = firstChild.getNameIdentifier().findReferences();
chai_1.expect(referencedSymbols.length).to.equal(1);
const referencedSymbol = referencedSymbols[0];
const references = referencedSymbol.getReferences();
// definition
const definition = referencedSymbol.getDefinition();
chai_1.expect(definition.getSourceFile()).to.equal(sourceFile);
chai_1.expect(definition.getContainerName()).to.equal("");
chai_1.expect(definition.getContainerKind()).to.equal("");
chai_1.expect(definition.getKind()).to.equal("function");
chai_1.expect(definition.getName()).to.equal("function myFunction(): void");
chai_1.expect(definition.getTextSpan().getStart()).to.equal(9);
chai_1.expect(definition.getTextSpan().getLength()).to.equal("myFunction".length);
chai_1.expect(definition.getDisplayParts()[0].getText()).to.equal("function"); // only bother testing the first one
chai_1.expect(definition.getDisplayParts()[0].getKind()).to.equal("keyword");
// first reference
chai_1.expect(references[0].getSourceFile()).to.equal(sourceFile);
chai_1.expect(references[0].getTextSpan().getStart()).to.equal(9);
chai_1.expect(references[0].getTextSpan().getLength()).to.equal("myFunction".length);
chai_1.expect(references[0].getIsDefinition()).to.equal(true);
chai_1.expect(references[0].getIsInString()).to.equal(undefined);
chai_1.expect(references[0].getIsWriteAccess()).to.equal(true);
chai_1.expect(references[0].getNode().getParentOrThrow().getKind()).to.equal(ts.SyntaxKind.FunctionDeclaration);
// second reference
chai_1.expect(references[1].getSourceFile()).to.equal(sourceFile);
chai_1.expect(references[1].getTextSpan().getStart()).to.equal(43);
chai_1.expect(references[1].getTextSpan().getLength()).to.equal("myFunction".length);
chai_1.expect(references[1].getIsDefinition()).to.equal(false);
chai_1.expect(references[1].getIsInString()).to.equal(undefined);
chai_1.expect(references[1].getIsWriteAccess()).to.equal(false);
chai_1.expect(references[1].getNode().getParentOrThrow().getKind()).to.equal(ts.SyntaxKind.VariableDeclaration);
// third reference
chai_1.expect(references[2].getSourceFile()).to.equal(secondSourceFile);
chai_1.expect(references[2].getTextSpan().getStart()).to.equal(19);
chai_1.expect(references[2].getTextSpan().getLength()).to.equal("myFunction".length);
chai_1.expect(references[2].getIsDefinition()).to.equal(false);
chai_1.expect(references[2].getIsInString()).to.equal(undefined);
chai_1.expect(references[2].getIsWriteAccess()).to.equal(false);
chai_1.expect(references[2].getNode().getParentOrThrow().getKind()).to.equal(ts.SyntaxKind.VariableDeclaration);
});
});
});
//# sourceMappingURL=identifierTests.js.map