Commit d7ea298c by Jose Carlos López

Update split export into two functions(criteria, options) && Remove isOr query…

Update split export into two functions(criteria, options) && Remove isOr query param && Remove links
parent bd0db1b3
...@@ -144,7 +144,7 @@ function hasOrdinalKeys(obj) { ...@@ -144,7 +144,7 @@ function hasOrdinalKeys(obj) {
function queryCriteriaToMongo(query, options) { function queryCriteriaToMongo(query, options) {
var options = options || {} var options = options || {}
var p, v, deep var p, v, deep
var hash = query.isOr ? [] : {} var hash = {}
for (var key in query) { for (var key in query) {
if (Object.prototype.hasOwnProperty.call(query,key) && (!options.ignore || options.ignore.indexOf(key) == -1)) { if (Object.prototype.hasOwnProperty.call(query,key) && (!options.ignore || options.ignore.indexOf(key) == -1)) {
deep = (typeof query[key] === 'object' && !hasOrdinalKeys(query[key])) deep = (typeof query[key] === 'object' && !hasOrdinalKeys(query[key]))
...@@ -159,12 +159,10 @@ function queryCriteriaToMongo(query, options) { ...@@ -159,12 +159,10 @@ function queryCriteriaToMongo(query, options) {
} }
if (p) { if (p) {
if (query.isOr) { if (!hash[p.key]) {
var orQuery = {}; hash[p.key] = p.value;
orQuery[p.key] = p.value
hash.push(orQuery)
} else { } else {
hash[p.key] = p.value hash[p.key] = Object.assign(hash[p.key], p.value);
} }
} }
} }
...@@ -199,7 +197,7 @@ function queryOptionsToMongo(query, options) { ...@@ -199,7 +197,7 @@ function queryOptionsToMongo(query, options) {
return hash return hash
} }
module.exports = function(query, options) { function init(query, options) {
query = query || {}; query = query || {};
options = options || {} options = options || {}
...@@ -208,43 +206,22 @@ module.exports = function(query, options) { ...@@ -208,43 +206,22 @@ module.exports = function(query, options) {
} else { } else {
options.ignore = (typeof options.ignore === 'string') ? [options.ignore] : options.ignore options.ignore = (typeof options.ignore === 'string') ? [options.ignore] : options.ignore
} }
options.ignore = options.ignore.concat(['fields', 'omit', 'sort', 'offset', 'limit', 'isOr']) options.ignore = options.ignore.concat(['fields', 'omit', 'sort', 'offset', 'limit'])
if (!options.parser) options.parser = querystring if (!options.parser) options.parser = querystring
if (typeof query === 'string') query = options.parser.parse(query) if (typeof query === 'string') query = options.parser.parse(query)
var criteria = queryCriteriaToMongo(query, options);
if (query.isOr) {
criteria = { $or: criteria};
}
return { return {
criteria: criteria, query: query,
options: queryOptionsToMongo(query, options), options: options,
}
links: function(url, totalCount) { }
var offset = this.options.skip || 0
var limit = Math.min(this.options.limit || 0, totalCount)
var links = {}
var last = {}
if (!limit) return null
options = options || {}
if (offset > 0) { module.exports = {
query.offset = Math.max(offset - limit, 0) q2m: function(query, options) {
links['prev'] = url + '?' + options.parser.stringify(query) var initValues = init(query, options);
query.offset = 0 return queryCriteriaToMongo(initValues.query, initValues.options);
links['first'] = url + '?' + options.parser.stringify(query) },
} o2m: function(query, options) {
if (offset + limit < totalCount) { var initValues = init(query, options);
last.pages = Math.ceil(totalCount / limit) return queryOptionsToMongo(initValues.query, initValues.options);
last.offset = (last.pages - 1) * limit
query.offset = Math.min(offset + limit, last.offset)
links['next'] = url + '?' + options.parser.stringify(query)
query.offset = last.offset
links['last'] = url + '?' + options.parser.stringify(query)
}
return links
}
} }
} }
var assert = require("chai").assert var assert = require("chai").assert
var q2m = require("../index") var q2m = require("../index")
describe("query-to-mongo(query).links =>", function () { /*describe("query-to-mongo(query).links =>", function () {
describe("#links", function () { describe("#links", function () {
var links = q2m("offset=20&limit=10").links('http://localhost', 95) var links = q2m("offset=20&limit=10").links('http://localhost', 95)
it("should create first link", function () { it("should create first link", function () {
...@@ -58,3 +58,4 @@ describe("query-to-mongo(query).links =>", function () { ...@@ -58,3 +58,4 @@ describe("query-to-mongo(query).links =>", function () {
}) })
}) })
}) })
*/
var assert = require("chai").assert var assert = require("chai").assert
var q2m = require("../index") var q2m = require("../index").q2m
var o2m = require("../index").o2m
var qs = require("qs") var qs = require("qs")
describe("query-to-mongo(query,{paser: qs}) =>", function () { describe("query-to-mongo(query,{paser: qs}) =>", function () {
describe(".criteria", function () { describe("", function () {
it("should create criteria", function () { it("should create criteria", function () {
var results = q2m("foo[bar]=value", {parser: qs}) var results = q2m("foo[bar]=value", {parser: qs})
assert.ok(results.criteria) assert.ok(results)
assert.deepEqual(results.criteria, {foo: {bar: "value"}}) assert.deepEqual(results, {foo: {bar: "value"}})
}) })
it("should create numeric criteria", function () { it("should create numeric criteria", function () {
var results = q2m("foo[i]=10&foo[f]=1.2&foo[z]=0", {parser: qs}) var results = q2m("foo[i]=10&foo[f]=1.2&foo[z]=0", {parser: qs})
assert.ok(results.criteria) assert.ok(results)
assert.deepEqual(results.criteria, {foo:{"i": 10, "f": 1.2, "z": 0}}) assert.deepEqual(results, {foo:{"i": 10, "f": 1.2, "z": 0}})
}) })
it("should create boolean criteria", function () { it("should create boolean criteria", function () {
var results = q2m("foo[t]=true&foo[f]=false", {parser: qs}) var results = q2m("foo[t]=true&foo[f]=false", {parser: qs})
assert.ok(results.criteria) assert.ok(results)
assert.deepEqual(results.criteria, {foo:{t: true, f: false}}) assert.deepEqual(results, {foo:{t: true, f: false}})
}) })
it("should create regex criteria", function () { it("should create regex criteria", function () {
var results = q2m("foo[r]=/regex/&foo[ri]=/regexi/i", {parser: qs}) var results = q2m("foo[r]=/regex/&foo[ri]=/regexi/i", {parser: qs})
assert.ok(results.criteria) assert.ok(results)
assert.deepEqual(results.criteria, {foo:{r: /regex/, ri: /regexi/i}}) assert.deepEqual(results, {foo:{r: /regex/, ri: /regexi/i}})
}) })
// can't create comparisons for embedded documents // can't create comparisons for embedded documents
it("shouldn't ignore deep criteria", function () { it("shouldn't ignore deep criteria", function () {
var results = q2m("field=value&foo[envelope]=true", {ignore: ['envelope'], parser: qs}) var results = q2m("field=value&foo[envelope]=true", {ignore: ['envelope'], parser: qs})
assert.ok(results.criteria) assert.ok(results)
assert.deepEqual(results.criteria, {field: "value", foo: {envelope: true}}) assert.deepEqual(results, {field: "value", foo: {envelope: true}})
}) })
it("should create string criteria when forced with a quote", function () { it("should create string criteria when forced with a quote", function () {
var results = q2m("a='10'&b=\'11\'&c='a,b'&d=10,11&z=\"that's all folks\"", {parser: qs}) var results = q2m("a='10'&b=\'11\'&c='a,b'&d=10,11&z=\"that's all folks\"", {parser: qs})
assert.ok(results.criteria) assert.ok(results)
assert.deepEqual(results.criteria, {a: "10", b: "11", c: "a,b", d: {$in: [10, 11]}, z: "that's all folks"}) assert.deepEqual(results, {a: "10", b: "11", c: "a,b", d: {$in: [10, 11]}, z: "that's all folks"})
}) })
}) })
describe(".options", function () { describe(".options", function () {
it("should create paging options", function () { it("should create paging options", function () {
var results = q2m("offset=8&limit=16", {parser: qs}) var results = o2m("offset=8&limit=16", {parser: qs})
assert.ok(results.options) assert.ok(results)
assert.deepEqual(results.options, {skip: 8, limit: 16}) assert.deepEqual(results, {skip: 8, limit: 16})
}) })
it("should create field option", function () { it("should create field option", function () {
var results = q2m("fields=a,b,c", {parser: qs}) var results = o2m("fields=a,b,c", {parser: qs})
assert.ok(results.options) assert.ok(results)
assert.deepEqual(results.options, {fields: {a:true, b:true, c:true}}) assert.deepEqual(results, {fields: {a:true, b:true, c:true}})
}) })
it("should create sort option", function () { it("should create sort option", function () {
var results = q2m("sort=a,+b,-c", {parser: qs}) var results = o2m("sort=a,+b,-c", {parser: qs})
assert.ok(results.options) assert.ok(results)
assert.deepEqual(results.options, {sort: {a:1, b:1, c:-1}}) assert.deepEqual(results, {sort: {a:1, b:1, c:-1}})
}) })
it("should limit queries", function () { it("should limit queries", function () {
var results = q2m("limit=100", {maxLimit: 50, parser: qs}) var results = o2m("limit=100", {maxLimit: 50, parser: qs})
assert.ok(results.options) assert.ok(results)
assert.deepEqual(results.options, {limit: 50}) assert.deepEqual(results, {limit: 50})
}) })
}) })
describe("#links", function () { /* describe("#links", function () {
var links = q2m("foo[bar]=baz&offset=20&limit=10", {maxLimit: 50, parser: qs}).links('http://localhost', 100) var links = q2m("foo[bar]=baz&offset=20&limit=10", {maxLimit: 50, parser: qs}).links('http://localhost', 100)
it("should create first link", function () { it("should create first link", function () {
assert.equal(links.first, "http://localhost?foo%5Bbar%5D=baz&offset=0&limit=10") assert.equal(links.first, "http://localhost?foo%5Bbar%5D=baz&offset=0&limit=10")
...@@ -74,5 +75,5 @@ describe("query-to-mongo(query,{paser: qs}) =>", function () { ...@@ -74,5 +75,5 @@ describe("query-to-mongo(query,{paser: qs}) =>", function () {
it("should create last link", function () { it("should create last link", function () {
assert.equal(links.last, "http://localhost?foo%5Bbar%5D=baz&offset=90&limit=10") assert.equal(links.last, "http://localhost?foo%5Bbar%5D=baz&offset=90&limit=10")
}) })
}) })*/
}) })
var assert = require("chai").assert var assert = require("chai").assert
var q2m = require("../index") var q2m = require("../index").q2m;
var o2m = require("../index").o2m;
var ObjectID = require('bson').ObjectID; var ObjectID = require('bson').ObjectID;
describe("query-to-mongo(query) =>", function () { describe("query-to-mongo(query) =>", function () {
describe(".criteria", function () { describe(".criteria", function () {
it("should create criteria", function () { it("should create criteria", function () {
var results = q2m("field=value") var results = q2m("field=value")
assert.ok(results.criteria) assert.ok(results)
assert.deepEqual(results.criteria, {field: "value"}) assert.deepEqual(results, {field: "value"})
}) })
it("should create numeric criteria", function () { it("should create numeric criteria", function () {
var results = q2m("i=10&f=1.2&z=0") var results = q2m("i=10&f=1.2&z=0")
assert.ok(results.criteria) assert.ok(results)
assert.deepEqual(results.criteria, {"i": 10, "f": 1.2, "z": 0}) assert.deepEqual(results, {"i": 10, "f": 1.2, "z": 0})
}) })
it("should create boolean criteria", function () { it("should create boolean criteria", function () {
var results = q2m("t=true&f=false") var results = q2m("t=true&f=false")
assert.ok(results.criteria) assert.ok(results)
assert.deepEqual(results.criteria, {t: true, f: false}) assert.deepEqual(results, {t: true, f: false})
}) })
it("should create regex criteria", function () { it("should create regex criteria", function () {
var results = q2m("r=/regex/&ri=/regexi/i") var results = q2m("r=/regex/&ri=/regexi/i")
assert.ok(results.criteria) assert.ok(results)
assert.deepEqual(results.criteria, {r: /regex/, ri: /regexi/i}) assert.deepEqual(results, {r: /regex/, ri: /regexi/i})
}) })
it("should create Date criteria from YYYY-MM", function () { it("should create Date criteria from YYYY-MM", function () {
var results = q2m("d=2010-04") var results = q2m("d=2010-04")
assert.ok(results.criteria) assert.ok(results)
assert.ok(results.criteria.d instanceof Date, 'instanceof Date') assert.ok(results.d instanceof Date, 'instanceof Date')
assert.deepEqual(results.criteria, {d: new Date(Date.UTC(2010, 3, 1))}) assert.deepEqual(results, {d: new Date(Date.UTC(2010, 3, 1))})
}) })
it("should create Date criteria from YYYY-MM-DD", function () { it("should create Date criteria from YYYY-MM-DD", function () {
var results = q2m("d=2010-04-01"), expect var results = q2m("d=2010-04-01"), expect
assert.ok(results.criteria) assert.ok(results)
assert.ok(results.criteria.d instanceof Date, 'instanceof Date') assert.ok(results.d instanceof Date, 'instanceof Date')
assert.deepEqual(results.criteria, {d: new Date(Date.UTC(2010, 3, 1))}) assert.deepEqual(results, {d: new Date(Date.UTC(2010, 3, 1))})
}) })
it("should create Date criteria from YYYY-MM-DDThh:mmZ", function () { it("should create Date criteria from YYYY-MM-DDThh:mmZ", function () {
var results = q2m("d=2010-04-01T12:00Z") var results = q2m("d=2010-04-01T12:00Z")
assert.ok(results.criteria) assert.ok(results)
assert.ok(results.criteria.d instanceof Date, 'instanceof Date') assert.ok(results.d instanceof Date, 'instanceof Date')
assert.deepEqual(results.criteria, {d: new Date(Date.UTC(2010, 3, 1, 12, 0))}) assert.deepEqual(results, {d: new Date(Date.UTC(2010, 3, 1, 12, 0))})
}) })
it("should create Date criteria from YYYY-MM-DDThh:mm:ssZ", function () { it("should create Date criteria from YYYY-MM-DDThh:mm:ssZ", function () {
var results = q2m("d=2010-04-01T12:00:30Z") var results = q2m("d=2010-04-01T12:00:30Z")
assert.ok(results.criteria) assert.ok(results)
assert.ok(results.criteria.d instanceof Date, 'instanceof Date') assert.ok(results.d instanceof Date, 'instanceof Date')
assert.deepEqual(results.criteria, {d: new Date(Date.UTC(2010, 3, 1, 12, 0, 30))}) assert.deepEqual(results, {d: new Date(Date.UTC(2010, 3, 1, 12, 0, 30))})
}) })
it("should create Date criteria from YYYY-MM-DDThh:mm:ss.sZ", function () { it("should create Date criteria from YYYY-MM-DDThh:mm:ss.sZ", function () {
var results = q2m("d=2010-04-01T12:00:30.250Z") var results = q2m("d=2010-04-01T12:00:30.250Z")
assert.ok(results.criteria) assert.ok(results)
assert.ok(results.criteria.d instanceof Date, 'instanceof Date') assert.ok(results.d instanceof Date, 'instanceof Date')
assert.deepEqual(results.criteria, {d: new Date(Date.UTC(2010, 3, 1, 12, 0, 30, 250))}) assert.deepEqual(results, {d: new Date(Date.UTC(2010, 3, 1, 12, 0, 30, 250))})
}) })
it("should create Date criteria from YYYY-MM-DDThh:mm:ss.s-hh:mm", function () { it("should create Date criteria from YYYY-MM-DDThh:mm:ss.s-hh:mm", function () {
var results = q2m("d=2010-04-01T11:00:30.250-01:00") var results = q2m("d=2010-04-01T11:00:30.250-01:00")
assert.ok(results.criteria) assert.ok(results)
assert.ok(results.criteria.d instanceof Date, 'instanceof Date') assert.ok(results.d instanceof Date, 'instanceof Date')
assert.deepEqual(results.criteria, {d: new Date(Date.UTC(2010, 3, 1, 12, 0, 30, 250))}) assert.deepEqual(results, {d: new Date(Date.UTC(2010, 3, 1, 12, 0, 30, 250))})
}) })
it("should create Date criteria from YYYY-MM-DDThh:mm:ss.s+hh:mm", function () { it("should create Date criteria from YYYY-MM-DDThh:mm:ss.s+hh:mm", function () {
var results = q2m(encodeURIComponent("d=2010-04-01T13:00:30.250+01:00")) var results = q2m(encodeURIComponent("d=2010-04-01T13:00:30.250+01:00"))
assert.ok(results.criteria) assert.ok(results)
assert.ok(results.criteria.d instanceof Date, 'instanceof Date') assert.ok(results.d instanceof Date, 'instanceof Date')
assert.deepEqual(results.criteria, {d: new Date(Date.UTC(2010, 3, 1, 12, 0, 30, 250))}) assert.deepEqual(results, {d: new Date(Date.UTC(2010, 3, 1, 12, 0, 30, 250))})
}) })
it("should create $gt criteria", function () { it("should create $gt criteria", function () {
var results = q2m("field>value") var results = q2m("field>value")
assert.ok(results.criteria) assert.ok(results)
assert.deepEqual(results.criteria, {field: {"$gt": "value"}}) assert.deepEqual(results, {field: {"$gt": "value"}})
}) })
it("should create $lt criteria", function () { it("should create $lt criteria", function () {
var results = q2m("field<value") var results = q2m("field<value")
assert.ok(results.criteria) assert.ok(results)
assert.deepEqual(results.criteria, {field: {"$lt": "value"}}) assert.deepEqual(results, {field: {"$lt": "value"}})
}) })
it("should create $gte criteria", function () { it("should create $gte criteria", function () {
var results = q2m("field>=value") var results = q2m("field>=value")
assert.ok(results.criteria) assert.ok(results)
assert.deepEqual(results.criteria, {field: {"$gte": "value"}}) assert.deepEqual(results, {field: {"$gte": "value"}})
}) })
it("should create $lte criteria", function () { it("should create $lte criteria", function () {
var results = q2m("field<=value") var results = q2m("field<=value")
assert.ok(results.criteria) assert.ok(results)
assert.deepEqual(results.criteria, {field: {"$lte": "value"}}) assert.deepEqual(results, {field: {"$lte": "value"}})
}) })
it("should create $ne criteria", function () { it("should create $ne criteria", function () {
var results = q2m("field!=value") var results = q2m("field!=value")
assert.ok(results.criteria) assert.ok(results)
assert.deepEqual(results.criteria, {field: {"$ne": "value"}}) assert.deepEqual(results, {field: {"$ne": "value"}})
}) })
it("should create $in criteria", function () { it("should create $in criteria", function () {
var results = q2m("field=a&field=b") var results = q2m("field=a&field=b")
assert.ok(results.criteria) assert.ok(results)
assert.deepEqual(results.criteria, {field: {"$in": ["a","b"]}}) assert.deepEqual(results, {field: {"$in": ["a","b"]}})
}) })
it("should create $nin criteria", function () { it("should create $nin criteria", function () {
var results = q2m("field!=a&field!=b") var results = q2m("field!=a&field!=b")
assert.ok(results.criteria) assert.ok(results)
assert.deepEqual(results.criteria, {field: {"$nin": ["a","b"]}}) assert.deepEqual(results, {field: {"$nin": ["a","b"]}})
})
it("should create mixed criteria", function () {
var results = q2m("field!=10&field!=20&field>3")
assert.ok(results)
assert.deepEqual(results, {field: {"$nin": [10,20], "$gt": 3}})
})
it("should create range criteria",function () {
var results = q2m("field>=10&field<=20")
assert.ok(results)
assert.deepEqual(results, {field: {"$gte": 10, "$lte": 20}})
}) })
it("should ignore criteria", function () { it("should ignore criteria", function () {
var results = q2m("field=value&envelope=true&&offset=0&limit=10&fields=id&sort=name", { ignore: ['envelope']}) var results = q2m("field=value&envelope=true&&offset=0&limit=10&fields=id&sort=name", { ignore: ['envelope']})
assert.ok(results.criteria) assert.ok(results)
assert.notOk(results.criteria.envelope, "envelope") assert.notOk(results.envelope, "envelope")
assert.notOk(results.criteria.skip, "offset") assert.notOk(results.skip, "offset")
assert.notOk(results.criteria.limit, "limit") assert.notOk(results.limit, "limit")
assert.notOk(results.criteria.fields, "fields") assert.notOk(results.fields, "fields")
assert.notOk(results.criteria.sort, "sort") assert.notOk(results.sort, "sort")
assert.deepEqual(results.criteria, {field: "value"}) assert.deepEqual(results, {field: "value"})
}) })
it("should create $exists true criteria", function () { it("should create $exists true criteria", function () {
var results = q2m("a&b=10&c", { ignore: ['c']}) var results = q2m("a&b=10&c", { ignore: ['c']})
assert.ok(results.criteria) assert.ok(results)
assert.deepEqual(results.criteria, {a: {"$exists": true}, b: 10}) assert.deepEqual(results, {a: {"$exists": true}, b: 10})
}) })
it("should create $exists false criteria", function () { it("should create $exists false criteria", function () {
var results = q2m("!a&b=10&c", { ignore: ['c']}) var results = q2m("!a&b=10&c", { ignore: ['c']})
assert.ok(results.criteria) assert.ok(results)
assert.deepEqual(results.criteria, {a: {"$exists": false}, b: 10}) assert.deepEqual(results, {a: {"$exists": false}, b: 10})
}) })
it("should create $type criteria with BSON type number", function () { it("should create $type criteria with BSON type number", function () {
var results = q2m("field:type=2") var results = q2m("field:type=2")
assert.ok(results.criteria) assert.ok(results)
assert.deepEqual(results.criteria, {field: {$type: 2} }) assert.deepEqual(results, {field: {$type: 2} })
}) })
it("should create $type criteria with BSON type name", function () { it("should create $type criteria with BSON type name", function () {
var results = q2m("field:type=string") var results = q2m("field:type=string")
assert.ok(results.criteria) assert.ok(results)
assert.deepEqual(results.criteria, {field: {$type: "string"} }) assert.deepEqual(results, {field: {$type: "string"} })
}) })
it("should create $size criteria", function () { it("should create $size criteria", function () {
var results = q2m("array:size=2") var results = q2m("array:size=2")
assert.ok(results.criteria) assert.ok(results)
assert.deepEqual(results.criteria, {array: {$size: 2} }) assert.deepEqual(results, {array: {$size: 2} })
}) })
it("should create $all criteria", function () { it("should create $all criteria", function () {
var results = q2m("array:all=50,60") var results = q2m("array:all=50,60")
assert.ok(results.criteria) assert.ok(results)
assert.deepEqual(results.criteria, {array: {$all: [50, 60]} }) assert.deepEqual(results, {array: {$all: [50, 60]} })
}) })
it("should create forced string criteria", function () { it("should create forced string criteria", function () {
var results = q2m("s='a,b'") var results = q2m("s='a,b'")
assert.ok(results.criteria) assert.ok(results)
assert.deepEqual(results.criteria, {s: "a,b"}) assert.deepEqual(results, {s: "a,b"})
}) })
it("should create numeric criteria from YYYY exception", function () { it("should create numeric criteria from YYYY exception", function () {
var results = q2m("d=2016") var results = q2m("d=2016")
assert.ok(results.criteria) assert.ok(results)
assert.deepEqual(results.criteria, {d: 2016}) assert.deepEqual(results, {d: 2016})
}) })
it("should create mongo objectID criteria", function () { it("should create mongo objectID criteria", function () {
var results = q2m("d=574553013b58d8582cdb1d5f") var results = q2m("d=574553013b58d8582cdb1d5f")
assert.ok(results.criteria) assert.ok(results)
assert.deepEqual(results.criteria, {d: ObjectID('574553013b58d8582cdb1d5f')}) assert.deepEqual(results, {d: ObjectID('574553013b58d8582cdb1d5f')})
})
it("should create or criteria", function () {
var results = q2m("isOr=true&a>3&a<8")
assert.ok(results.criteria)
assert.deepEqual(results.criteria, { $or: [{ a: { $gt: 3 }}, { a: { $lt: 8 } }]})
}) })
}) })
describe(".options", function () { describe(".options", function () {
it("should create paging options", function () { it("should create paging options", function () {
var results = q2m("offset=8&limit=16") var results = o2m("offset=8&limit=16")
assert.ok(results.options) assert.ok(results)
assert.deepEqual(results.options, {skip: 8, limit: 16}) assert.deepEqual(results, {skip: 8, limit: 16})
}) })
it("should create field option", function () { it("should create field option", function () {
var results = q2m("fields=a,b,c") var results = o2m("fields=a,b,c")
assert.ok(results.options) assert.ok(results)
assert.deepEqual(results.options, {fields: {a:true, b:true, c:true}}) assert.deepEqual(results, {fields: {a:true, b:true, c:true}})
}) })
it("should create omit option", function () { it("should create omit option", function () {
var results = q2m("omit=b") var results = o2m("omit=b")
assert.ok(results.options) assert.ok(results)
assert.deepEqual(results.options, {fields: {b:false}}) assert.deepEqual(results, {fields: {b:false}})
}) })
it("should create omit option", function () { it("should create omit option", function () {
var results = q2m("omit=b") var results = o2m("omit=b")
assert.ok(results.options) assert.ok(results)
assert.deepEqual(results.options, {fields: {b:false}}) assert.deepEqual(results, {fields: {b:false}})
}) })
it("should create sort option", function () { it("should create sort option", function () {
var results = q2m("sort=a,+b,-c") var results = o2m("sort=a,+b,-c")
assert.ok(results.options) assert.ok(results)
assert.deepEqual(results.options, {sort: {a:1, b:1, c:-1}}) assert.deepEqual(results, {sort: {a:1, b:1, c:-1}})
}) })
it("should limit queries", function () { it("should limit queries", function () {
var results = q2m("limit=100", {maxLimit: 50}) var results = o2m("limit=100", {maxLimit: 50})
assert.ok(results.options) assert.ok(results)
assert.deepEqual(results.options, {limit: 50}) assert.deepEqual(results, {limit: 50})
}) })
}) })
}) })
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment