UNPKG

odatafy-parser

Version:

generate odatafy ast from odata query parameters

208 lines (207 loc) 7.78 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 orderbyParser_1 = __importDefault(require("../../src/parsing/orderbyParser")); const nodes_1 = require("../../src/types/nodes"); function testParsingAndAST(testcase) { it(`should parse ${testcase.type}: ${testcase.input}`, () => { let ast = orderbyParser_1.default.parse(testcase.input); assert_1.default.deepStrictEqual(ast, testcase.expectedAST); }); } function testError(testcase) { it(`should throw Error because of ${testcase.type}`, () => { assert_1.default.throws(() => { orderbyParser_1.default.parse(testcase.input); }); }); } describe('Orderby Parser tests', () => { describe('positive Tests', () => { [{ type: "single default asc", input: "Country/Name", expectedAST: { nodeType: nodes_1.NodeTypes.OrderbyNode, value: [ { nodeType: nodes_1.NodeTypes.OrderbyItemNode, type: "asc", value: "Country/Name" } ] } }, { type: "multi default asc", input: "Country/Name,City,Street", expectedAST: { nodeType: nodes_1.NodeTypes.OrderbyNode, value: [ { nodeType: nodes_1.NodeTypes.OrderbyItemNode, type: "asc", value: "Country/Name" }, { nodeType: nodes_1.NodeTypes.OrderbyItemNode, "type": "asc", "value": "City" }, { nodeType: nodes_1.NodeTypes.OrderbyItemNode, "type": "asc", "value": "Street" } ] } }, { type: "single specified asc", input: "Country/Name asc", expectedAST: { nodeType: nodes_1.NodeTypes.OrderbyNode, value: [ { nodeType: nodes_1.NodeTypes.OrderbyItemNode, type: "asc", value: "Country/Name" } ] } }, { type: "multi specified asc", input: "Country/Name asc,City asc,Street asc", expectedAST: { nodeType: nodes_1.NodeTypes.OrderbyNode, value: [ { nodeType: nodes_1.NodeTypes.OrderbyItemNode, type: "asc", value: "Country/Name" }, { nodeType: nodes_1.NodeTypes.OrderbyItemNode, "type": "asc", "value": "City" }, { nodeType: nodes_1.NodeTypes.OrderbyItemNode, "type": "asc", "value": "Street" } ] } }, { type: "single specified desc", input: "Country/Name desc", expectedAST: { nodeType: nodes_1.NodeTypes.OrderbyNode, value: [ { nodeType: nodes_1.NodeTypes.OrderbyItemNode, type: "desc", value: "Country/Name" } ] } }, { type: "multi specified desc", input: "Country/Name desc,City desc,Street desc", expectedAST: { nodeType: nodes_1.NodeTypes.OrderbyNode, value: [ { nodeType: nodes_1.NodeTypes.OrderbyItemNode, type: "desc", value: "Country/Name" }, { nodeType: nodes_1.NodeTypes.OrderbyItemNode, "type": "desc", "value": "City" }, { nodeType: nodes_1.NodeTypes.OrderbyItemNode, "type": "desc", "value": "Street" } ] } }, { type: "default asc and specified desc", input: "Country/Name,Street desc", expectedAST: { nodeType: nodes_1.NodeTypes.OrderbyNode, value: [ { nodeType: nodes_1.NodeTypes.OrderbyItemNode, type: "asc", value: "Country/Name" }, { nodeType: nodes_1.NodeTypes.OrderbyItemNode, type: "desc", value: "Street" } ] } }, { type: "specified asc and desc", input: "Country/Name asc,Street desc", expectedAST: { nodeType: nodes_1.NodeTypes.OrderbyNode, value: [ { nodeType: nodes_1.NodeTypes.OrderbyItemNode, type: "asc", value: "Country/Name" }, { nodeType: nodes_1.NodeTypes.OrderbyItemNode, type: "desc", value: "Street" } ] } }, { type: "default asc and specified asc", input: "Country/Name,Street asc", expectedAST: { nodeType: nodes_1.NodeTypes.OrderbyNode, value: [ { nodeType: nodes_1.NodeTypes.OrderbyItemNode, type: "asc", value: "Country/Name" }, { nodeType: nodes_1.NodeTypes.OrderbyItemNode, type: "asc", value: "Street" } ] } } ].forEach(testParsingAndAST); }), describe('error tests', () => { [{ type: 'Wrong Expression I', input: ',' }, { type: 'Wrong Expression II', input: '_test, asc/d' }].forEach(testError); }); });