node-soda2-parser
Version:
Parse Socrata SODA2 API to Abstract Syntax Tree (AST)
51 lines (39 loc) • 1.54 kB
JavaScript
var should = require('should');
var Parser = require('../../index');
function inspect(obj) {
console.log(require('util').inspect(obj, false, 10, true));
}
describe('select test', function() {
it('multiple fields', function() {
var ast = Parser.parse('$select=foo, bar')
ast.columns.length.should.eql(2)
});
it('field alias', function() {
var ast = Parser.parse('$select=foo, bar as baz')
ast.columns[1].as.should.eql('baz')
});
it('functions', function() {
var ast = Parser.parse('$select=count(sheep) as total_sheep, date_trunc_ym(datetime) as month')
ast.columns[0].expr.type.should.eql('aggr_func')
ast.columns[0].expr.name.should.eql('COUNT')
ast.columns[0].as.should.eql('total_sheep')
ast.columns[1].expr.name.should.eql('date_trunc_ym')
});
it('operators', function() {
var ast = Parser.parse('$select=location, depth * 3.28 AS depth_feet, end - start AS duration')
//inspect(ast)
ast.columns[1].expr.operator.should.eql('*')
ast.columns[1].expr.left.column.should.eql('depth')
ast.columns[1].expr.right.value.should.eql(3.28)
ast.columns[2].expr.operator.should.eql('-')
});
it('removes excluded fields', function() {
var ast = Parser.parse('$select=foo&accessType=download&bom=true')
should(ast.where).be.exactly(null)
});
/* http://dev.socrata.com/docs/datatypes/text.html
it('double pipe concatenate', function() {
var ast = Parser.parse('$select=theft_date, dc_dist || dc_num AS dist_dc')
inspect(ast)
})*/
});