blob: bbbf1ce1151b8f7ee81e063f2c1c25f778974b1c [file] [log] [blame]
/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
'use strict'
var UsergridQuery = require('../../lib/query')
describe('_type', function() {
it('_type should equal "cats" when passing "type" as a parameter to UsergridQuery', function() {
var query = new UsergridQuery('cats')
query.should.have.property('_type').equal('cats')
})
it('_type should equal "cats" when calling .type() builder method', function() {
var query = new UsergridQuery().type('cats')
query.should.have.property('_type').equal('cats')
})
it('_type should equal "cats" when calling .collection() builder method', function() {
var query = new UsergridQuery().collection('cats')
query.should.have.property('_type').equal('cats')
})
})
describe('_limit', function() {
it('_limit should equal 2 when setting .limit(2)', function() {
var query = new UsergridQuery('cats').limit(2)
query.should.have.property('_limit').equal(2)
})
it('_limit should equal 10 when setting .limit(10)', function() {
var query = new UsergridQuery('cats').limit(10)
query.should.have.property('_limit').equal(10)
})
})
describe('_ql', function() {
it('should equal \'select *\' if query or sort are empty or underfined', function() {
var query = new UsergridQuery('cats')
query.should.have.property('_ql').equal('select *')
})
it('should support complex builder pattern syntax (chained constructor methods)', function() {
var query = new UsergridQuery('cats')
.gt('weight', 2.4)
.contains('color', 'bl*')
.not
.eq('color', 'blue')
.or
.eq('color', 'orange')
query.should.have.property('_ql').equal("select * where weight > 2.4 and color contains 'bl*' and not color = 'blue' or color = 'orange'")
})
it('and operator should be implied when joining multiple conditions', function() {
var query1 = new UsergridQuery('cats')
.gt('weight', 2.4)
.contains('color', 'bl*')
query1.should.have.property('_ql').equal("select * where weight > 2.4 and color contains 'bl*'")
var query2 = new UsergridQuery('cats')
.gt('weight', 2.4)
.and
.contains('color', 'bl*')
query2.should.have.property('_ql').equal("select * where weight > 2.4 and color contains 'bl*'")
})
it('not operator should precede conditional statement', function() {
var query = new UsergridQuery('cats')
.not
.eq('color', 'white')
query.should.have.property('_ql').equal("select * where not color = 'white'")
})
it('fromString should set _ql directly, bypassing builder pattern methods', function() {
var q = "where color = 'black' or color = 'orange'"
var query = new UsergridQuery('cats')
.fromString(q)
query.should.have.property('_ql').equal(q)
})
it('string values should be contained in single quotes', function() {
var query = new UsergridQuery('cats')
.eq('color', 'black')
query.should.have.property('_ql').equal("select * where color = 'black'")
})
it('boolean values should not be contained in single quotes', function() {
var query = new UsergridQuery('cats')
.eq('longHair', true)
query.should.have.property('_ql').equal("select * where longHair = true")
})
it('float values should not be contained in single quotes', function() {
var query = new UsergridQuery('cats')
.lt('weight', 18)
query.should.have.property('_ql').equal("select * where weight < 18")
})
it('integer values should not be contained in single quotes', function() {
var query = new UsergridQuery('cats')
.gte('weight', 2)
query.should.have.property('_ql').equal("select * where weight >= 2")
})
it('uuid values should not be contained in single quotes', function() {
var query = new UsergridQuery('cats')
.eq('uuid', 'a61e29ba-944f-11e5-8690-fbb14f62c803')
query.should.have.property('_ql').equal("select * where uuid = a61e29ba-944f-11e5-8690-fbb14f62c803")
})
})