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