UNPKG

trader-server

Version:

OData server for testing strategies, simulating and real trading.

47 lines (40 loc) 1.56 kB
const expect = require("chai").expect; const Parser = require("../lib/parser").Parser; describe("Parser", () => { it("should instantiate odata parser", () => { var parser = new Parser(); var ast = parser.filter("Categories/all(d:d/Title eq 'alma')"); expect( ast.value.value.value.value.next.value.value.predicate.value.value.right .value ).to.equal("Edm.String"); }); it("should parse query string", () => { var parser = new Parser(); var ast = parser.query("$filter=Title eq 'alma'"); expect(ast.value.options[0].type).to.equal("Filter"); }); it("should parse multiple orderby params", () => { var parser = new Parser(); var ast = parser.query("$orderby=foo,bar"); expect(ast.value.options[0].value.items[0].raw).to.equal("foo"); expect(ast.value.options[0].value.items[1].raw).to.equal("bar"); }); it("should parse custom query options", () => { var parser = new Parser(); var ast = parser.query("foo=123&bar=foobar"); expect(ast.value.options[0].value.key).to.equal("foo"); expect(ast.value.options[0].value.value).to.equal("123"); expect(ast.value.options[1].value.key).to.equal("bar"); expect(ast.value.options[1].value.value).to.equal("foobar"); }); it("should throw error parsing invalid custom query options", () => { var parser = new Parser(); var error = false; try{ var ast = parser.query("$foo=123"); error = true; }catch(err){} expect(error).to.be.false; }); });