UNPKG

expression-language

Version:

Javascript implementation of symfony/expression-language

55 lines (54 loc) 1.82 kB
"use strict"; 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); } });