expression-language
Version:
Javascript implementation of symfony/expression-language
55 lines (54 loc) • 1.82 kB
JavaScript
;
var _Node = _interopRequireDefault(require("../Node"));
var _ConstantNode = _interopRequireDefault(require("../ConstantNode"));
var _Compiler = _interopRequireDefault(require("../../Compiler"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
test("toString", () => {
let node = new _Node.default([new _ConstantNode.default('foo')]);
expect(node.toString()).toBe("Node(\n ConstantNode(value: 'foo')\n)");
});
test("serialization", () => {
let node = new _Node.default({
foo: 'bar'
}, {
bar: 'foo'
});
let serialized = JSON.stringify(node);
let unserialized = Object.assign(new _Node.default(), JSON.parse(serialized));
expect(unserialized).toBeInstanceOf(_Node.default);
expect(unserialized.toString()).toEqual(node.toString());
});
test('compileActuallyCompilesAllNodes', () => {
const compiler = new _Compiler.default({});
const nodes = [];
for (let i = 0; i < 10; i++) {
nodes.push({
compile: jest.fn(),
toString: () => 'MockNode()'
});
}
const parent = new _Node.default(nodes);
parent.compile(compiler);
for (const child of nodes) {
expect(child.compile).toHaveBeenCalledTimes(1);
expect(child.compile).toHaveBeenCalledWith(compiler);
}
});
test('evaluateActuallyEvaluatesAllNodes', () => {
const nodes = [];
for (let i = 1; i <= 3; i++) {
nodes.push({
evaluate: jest.fn().mockReturnValue(i),
toString: () => 'MockNode()'
});
}
const parent = new _Node.default(nodes);
const functions = {};
const values = {};
const result = parent.evaluate(functions, values);
expect(result).toEqual([1, 2, 3]);
for (const child of nodes) {
expect(child.evaluate).toHaveBeenCalledTimes(1);
expect(child.evaluate).toHaveBeenCalledWith(functions, values);
}
});