UNPKG

ts-simple-ast

Version:

TypeScript compiler wrapper for AST navigation and code generation.

83 lines (81 loc) 4.18 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const chai_1 = require("chai"); const testHelpers_1 = require("./../testHelpers"); function getInfoFromTextWithFirstMember(text) { const obj = testHelpers_1.getInfoFromText(text); const firstEnumMember = obj.firstChild.getMembers()[0]; return Object.assign({}, obj, { firstEnumMember }); } describe("EnumMember", () => { describe("getValue", () => { describe("number enum", () => { const { firstChild } = getInfoFromTextWithFirstMember("enum MyEnum {myMember1=4,myMember2}"); const members = firstChild.getMembers(); it("should get the correct value for members with an initializer", () => { chai_1.expect(members[0].getValue()).to.equal(4); }); it("should get the correct value for members without an initializer", () => { chai_1.expect(members[1].getValue()).to.equal(5); }); }); describe("string enum", () => { const { firstEnumMember } = getInfoFromTextWithFirstMember("enum MyEnum {member = 'str'}"); it("should get the correct value for member", () => { chai_1.expect(firstEnumMember.getValue()).to.equal("str"); }); }); }); describe("setValue", () => { function doTest(text, value, expected) { const { firstChild, firstEnumMember } = getInfoFromTextWithFirstMember(text); firstEnumMember.setValue(value); chai_1.expect(firstChild.getText()).to.equal(expected); } it("should set the value to a string", () => { doTest("enum MyEnum { member }", "str", `enum MyEnum { member = "str" }`); }); it("should set the value for to a number", () => { doTest("enum MyEnum { member }", 5, `enum MyEnum { member = 5 }`); }); }); describe("remove", () => { it("should remove the member and its comma when its the only member", () => { const { firstEnumMember, firstChild, sourceFile } = getInfoFromTextWithFirstMember("enum MyEnum {\n member,\n}\n"); firstEnumMember.remove(); chai_1.expect(sourceFile.getText()).to.equal("enum MyEnum {\n}\n"); }); it("should remove the member and its comma when it's the first member", () => { const { firstEnumMember, firstChild, sourceFile } = getInfoFromTextWithFirstMember("enum MyEnum {\n member1 = 2,\n member2\n}\n"); firstEnumMember.remove(); chai_1.expect(sourceFile.getText()).to.equal("enum MyEnum {\n member2\n}\n"); }); it("should remove the member when it's the last member", () => { const { firstChild, sourceFile } = getInfoFromTextWithFirstMember("enum MyEnum {\n member1 = 2,\n member2\n}\n"); firstChild.getMembers()[1].remove(); chai_1.expect(sourceFile.getText()).to.equal("enum MyEnum {\n member1 = 2,\n}\n"); }); it("should remove the member when it's in the middle", () => { const { firstChild, sourceFile } = getInfoFromTextWithFirstMember("enum MyEnum {\n member1 = 2,\n member2,\n member3\n}\n"); firstChild.getMembers()[1].remove(); chai_1.expect(sourceFile.getText()).to.equal("enum MyEnum {\n member1 = 2,\n member3\n}\n"); }); }); describe("fill", () => { function doTest(code, structure, expectedCode) { const { firstEnumMember, sourceFile } = getInfoFromTextWithFirstMember(code); firstEnumMember.fill(structure); chai_1.expect(sourceFile.getFullText()).to.equal(expectedCode); } it("should not change anything when nothing was specified", () => { doTest("enum Identifier { member }", {}, "enum Identifier { member }"); }); it("should change when specifying", () => { const structure = { value: 5 }; doTest("enum Identifier { member }", structure, "enum Identifier { member = 5 }"); }); }); }); //# sourceMappingURL=enumMemberTests.js.map