query.js
Version:
query.js is an abstract query language which can be mapped to different query language implementation.
118 lines (80 loc) • 3.48 kB
JavaScript
var should = require('chai').should(),
restConditionParser = require("..").Parser.RestConditionParser;
describe('condition parser test', function () {
describe("#and", function(){
var rule = "and";
it("should parse age<4", function(){
var hash = restConditionParser.parse("age<4",rule);
hash.name.should.equal("and");
hash.args.length.should.equal(1);
});
});
describe("#comparison", function(){
var rule = "comparison";
it('should parse "="', function(){
var hash = restConditionParser.parse("a=b", rule);
hash.name.should.equal("eql");
hash.args.length.should.equal(2);
});
it('should parse ">"', function () {
var hash = restConditionParser.parse("a>b", rule);
hash.name.should.equal("gt");
hash.args.length.should.equal(2);
});
it('should parse ">="', function () {
var hash = restConditionParser.parse("a>=b", rule);
hash.name.should.equal("gte");
hash.args.length.should.equal(2);
});
it('should parse "\<"', function () {
var hash = restConditionParser.parse("a\<b", rule);
hash.name.should.equal("lt");
hash.args.length.should.equal(2);
});
it('should parse "\<="', function () {
var hash = restConditionParser.parse("a\<=b", rule);
hash.name.should.equal("lte");
hash.args.length.should.equal(2);
});
});
describe("#parse operator", function () {
var rule = "operator";
it('should parse one operator', function(){
var hash = restConditionParser.parse("eq(field,value)",rule);
hash.name.should.equal('eq');
hash.args.length.should.equal(2);
});
it('should parse a comparison', function(){
var hash = restConditionParser.parse("name=tom",rule);
hash.name.should.equal('eql');
hash.args.length.should.equal(2);
});
it('should parse a "or" group', function(){
var hash = restConditionParser.parse("(eq(name,tom) or eq(age,22) or lt(age,23))", rule);
hash.name.should.equal("or");
hash.args.length.should.equal(3);
});
it('should parse a "and" group', function () {
var hash = restConditionParser.parse("(eq(name,tom) and eq(age,22) and lt(age,23))", rule);
hash.name.should.equal("and");
hash.args.length.should.equal(3);
});
it('should parse a "and" group with comparison', function () {
var hash = restConditionParser.parse("(name=tom and age=22)",rule);
hash.name.should.equal("and");
hash.args.length.should.equal(2);
});
it('should parse a "or" group with comparison', function () {
var hash = restConditionParser.parse("(name=tom or age=22)", rule);
hash.name.should.equal("or");
hash.args.length.should.equal(2);
});
it('should parse a "in" operator', function () {
var hash = restConditionParser.parse("in(a,(1,2,3,4))", rule);
hash.name.should.equal("in");
hash.args.length.should.equal(2);
hash.args[0].should.equal("a");
hash.args[1].length.should.equal(4);
});
});
});