UNPKG

ts-simple-ast

Version:

TypeScript compiler wrapper for AST navigation and code generation.

63 lines (61 loc) 4.15 kB
"use strict"; 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