UNPKG

odatafy-parser

Version:

generate odatafy ast from odata query parameters

145 lines (144 loc) 5.59 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const assert_1 = __importDefault(require("assert")); const computeParser_1 = __importDefault(require("../../src/parsing/computeParser")); const nodes_1 = require("../../src/types/nodes"); function testParsingAndAST(testcase) { it(`should parse ${testcase.type}: ${testcase.input}`, () => { let ast = computeParser_1.default.parse(testcase.input); assert_1.default.deepStrictEqual(ast, testcase.expectedAST); }); } describe('computeParser tests', () => { [{ type: "compute Expression with Identifier", input: "Name as LastName", expectedAST: { nodeType: nodes_1.NodeTypes.ComputeNode, value: [ { nodeType: nodes_1.NodeTypes.ComputeItemNode, commonExpr: { nodeType: "SymbolNode", type: "Identifier", value: "Name" }, computeIdentifier: "LastName" } ] } }, { type: "compute Expression with MathExpression", input: "Age add 1 as NewAge", expectedAST: { nodeType: nodes_1.NodeTypes.ComputeNode, value: [ { nodeType: nodes_1.NodeTypes.ComputeItemNode, commonExpr: { nodeType: "OperatorNode", op: "add", left: { nodeType: "SymbolNode", type: "Identifier", value: "Age" }, right: { nodeType: "ConstantNode", type: "Integer", value: 1 } }, computeIdentifier: "NewAge" } ] } }, { type: "compute Expression with FunctionCall", input: "concat(Name,'Petersen') as LastName", expectedAST: { nodeType: nodes_1.NodeTypes.ComputeNode, value: [ { nodeType: nodes_1.NodeTypes.ComputeItemNode, commonExpr: { nodeType: "FuncNode2Args", func: "concat", args: [ { nodeType: "SymbolNode", type: "Identifier", value: "Name" }, { nodeType: "ConstantNode", type: "String", value: "Petersen" } ] }, computeIdentifier: "LastName" } ] } }, { type: "compute Expression with filterExpression", input: "Age eq 18 as isOfLegalAge", expectedAST: { nodeType: nodes_1.NodeTypes.ComputeNode, value: [ { nodeType: nodes_1.NodeTypes.ComputeItemNode, commonExpr: { nodeType: "OperatorNode", op: "eq", left: { "nodeType": "SymbolNode", "type": "Identifier", "value": "Age" }, right: { nodeType: "ConstantNode", type: "Integer", value: 18 } }, computeIdentifier: "isOfLegalAge" } ] } }, { type: "multiple computeExpressions", input: "Age as Alter,Name as LastName", expectedAST: { nodeType: nodes_1.NodeTypes.ComputeNode, value: [ { nodeType: nodes_1.NodeTypes.ComputeItemNode, commonExpr: { nodeType: "SymbolNode", type: "Identifier", value: "Age" }, computeIdentifier: "Alter" }, { nodeType: nodes_1.NodeTypes.ComputeItemNode, commonExpr: { nodeType: "SymbolNode", type: "Identifier", value: "Name" }, computeIdentifier: "LastName" } ] } }].forEach(testcase => testParsingAndAST(testcase)); });