diff --git a/README.md b/README.md
index a3a7eab..d66714f 100644
--- a/README.md
+++ b/README.md
@@ -21,18 +21,21 @@ user.limit(10).fetch();
```
```JavaScript
+// Fetch User model and include related role and organization
var user = new User({'id': 1});
-user.include('role', 'organization').fetch();
+user.includeRelated('role', 'organization').fetch();
```
```JavaScript
-var user = new User({'id': 1});
-user.where({
+// Fetch User models when user's role is editor or author
+var users = new UserCollection();
+users.when({
role: ['editor', 'author']
}).fetch();
```
```JavaScript
+// Fetch 10 User models that are on the
var users = new UserCollection();
users.limit(10).skip(2).fetch();
```
diff --git a/dist/backbone.querybuilder.min.js b/dist/backbone.querybuilder.min.js
index 89561e6..2379cb6 100644
--- a/dist/backbone.querybuilder.min.js
+++ b/dist/backbone.querybuilder.min.js
@@ -1 +1 @@
-/*! backbone.includes - v0.1.1 - 2014-03-24 */(function(e,t){"use strict";if("function"==typeof define&&define.amd)define(["backbone","underscore"],function(e,r){return t(e,r)});else if("undefined"!=typeof exports){var r=require("underscore"),i=require("backbone");module.exports=t(i,r)}else e.querybuilder=t(e.Backbone,e._)})(this,function(e,t){"use strict";var r={provider:null,setProvider:function(e){this.provider=e}},i={include:function(){var e=[].slice.call(arguments),r=[];return t.each(e,function(e){r.push({field:e})}),this._rbQueryData=this._rbQueryData||{},this._rbQueryData.include=r,this},where:function(e){var r=[];return t.each(e,function(e,i){"string"==typeof e||"number"==typeof e?r.push({field:i,operator:"=",value:e}):"[object Array]"===toString.call(e)?r.push({field:i,operator:"in",value:e}):"object"==typeof e&&r.push({field:i,operator:t.keys(e)[0],value:t.values(e)[0]})}),this._rbQueryData=this._rbQueryData||{},this._rbQueryData.where=r,this},limit:function(e){return this._rbQueryData=this._rbQueryData||{},this._rbQueryData.limit=e,this},skip:function(e){return this._rbQueryData=this._rbQueryData||{},this._rbQueryData.skip=e,this},sortBy:function(e,r){var i,a;return"string"==typeof e?(i=e,a=r||"asc"):"object"==typeof e&&(i=t.keys(e)[0],a=t.values(e)[0]),this._rbQueryData=this._rbQueryData||{},this._rbQueryData.sortBy=this._rbQueryData.sortBy||[],this._rbQueryData.sortBy.push({field:i,direction:a}),this},sync:function(i,a,u){var s=r.provider.getFields(this._rbQueryData);return this._rbQueryData={},u.data=t.extend(s,u.data||{}),e.sync.call(this,i,a,u)}};return t.extend(e.Model.prototype,i),t.extend(e.Collection.prototype,i),r});
\ No newline at end of file
+/*! backbone.includes - v0.1.1 - 2014-03-26 */(function(e,r){"use strict";if("function"==typeof define&&define.amd)define(["backbone","underscore"],function(e,t){return r(e,t)});else if("undefined"!=typeof exports){var t=require("underscore"),i=require("backbone");module.exports=r(i,t)}else e.querybuilder=r(e.Backbone,e._)})(this,function(e,r){"use strict";var t={provider:null,setProvider:function(t){this.provider=t,r.extend(e.Model.prototype,i),r.extend(e.Collection.prototype,i)}},i={include:function(){var e=[].slice.call(arguments),t=[];return r.each(e,function(e){t.push({field:e})}),this._rbQueryData=this._rbQueryData||{},this._rbQueryData.include=t,this},when:function(e){var t=[];return r.each(e,function(e,i){"string"==typeof e||"number"==typeof e?t.push({field:i,operator:"=",value:e}):"[object Array]"===toString.call(e)?t.push({field:i,operator:"in",value:e}):"object"==typeof e&&t.push({field:i,operator:r.keys(e)[0],value:r.values(e)[0]})}),this._rbQueryData=this._rbQueryData||{},this._rbQueryData.when=t,this},limit:function(e){return this._rbQueryData=this._rbQueryData||{},this._rbQueryData.limit=e,this},skip:function(e){return this._rbQueryData=this._rbQueryData||{},this._rbQueryData.skip=e,this},orderBy:function(e,t){var i,a;return"string"==typeof e?(i=e,a=t||"asc"):"object"==typeof e&&(i=r.keys(e)[0],a=r.values(e)[0]),this._rbQueryData=this._rbQueryData||{},this._rbQueryData.orderBy=this._rbQueryData.orderBy||[],this._rbQueryData.orderBy.push({field:i,direction:a}),this},sync:function(i,a,u){var n=t.provider.getFields(this._rbQueryData);return this._rbQueryData={},u.data=r.extend(n,u.data||{}),e.sync.call(this,i,a,u)}};return t});
\ No newline at end of file
diff --git a/src/backbone.querybuilder.js b/src/backbone.querybuilder.js
index bd77d80..3ec9ffe 100644
--- a/src/backbone.querybuilder.js
+++ b/src/backbone.querybuilder.js
@@ -27,8 +27,18 @@
var QueryBuilder = {
provider: null,
+
+ /*
+ * When provider is set then update Backbone Model and Collection prototypes
+ * to have new querybuilder methods.
+ */
setProvider: function (provider) {
this.provider = provider;
+ _.extend(Backbone.Model.prototype, QueryBuilderMixin);
+ _.extend(Backbone.Collection.prototype, QueryBuilderMixin);
+ },
+ getMixin: function () {
+ return QueryBuilderMixin;
}
};
@@ -37,25 +47,25 @@
* Includes additional related objects with the returned data
*
* @example
- * this.model.include('role', 'organization')
- * this.model.include('organization.owner')
+ * this.model.includeRelated('role', 'organization')
+ * this.model.includeRelated('organization.owner')
* this.model.incldue('organization.owner.role', 'organization.staff')
*
- * @method include
+ * @method includeRelated
* @return {object} Reference to current object
*/
- include: function () {
+ includeRelated: function () {
var options = [].slice.call(arguments),
- includeData = [];
+ includeRelatedData = [];
- _.each(options, function (includeItem) {
- includeData.push({
- field: includeItem
+ _.each(options, function (includeRelatedItem) {
+ includeRelatedData.push({
+ field: includeRelatedItem
});
});
this._rbQueryData = this._rbQueryData || {};
- this._rbQueryData['include'] = includeData;
+ this._rbQueryData['includeRelated'] = includeRelatedData;
return this;
},
@@ -64,36 +74,36 @@
* Includes additional related objects with the returned data
*
* @example
- * this.model.where({
+ * this.model.when({
* role: {
* '=': 'editor'
* }
* })
- * this.model.include('organization.owner')
+ * this.model.includeRelated('organization.owner')
* this.model.incldue('organization.owner.role', 'organization.staff')
*
- * @method where
+ * @method when
* @param {object} options used to build the queries
* @return {object} Reference to current object
*/
- where: function (options) {
- var whereData = [];
+ when: function (options) {
+ var whenData = [];
_.each(options, function (value, key) {
if (typeof value === 'string' || typeof value === "number") {
- whereData.push({
+ whenData.push({
field: key,
operator: '=',
value: value
});
} else if (toString.call(value) === '[object Array]') {
- whereData.push({
+ whenData.push({
field: key,
operator: 'in',
value: value
});
} else if (typeof value === 'object') {
- whereData.push({
+ whenData.push({
field: key,
operator: _.keys(value)[0],
value: _.values(value)[0]
@@ -102,7 +112,7 @@
});
this._rbQueryData = this._rbQueryData || {};
- this._rbQueryData['where'] = whereData;
+ this._rbQueryData['when'] = whenData;
return this;
},
@@ -111,8 +121,8 @@
* Includes additional related objects with the returned data
*
* @example
- * this.model.include('role', 'organization')
- * this.model.include('organization.owner')
+ * this.model.includeRelatedRelated('role', 'organization')
+ * this.model.includeRelated('organization.owner')
* this.model.incldue('organization.owner.role', 'organization.staff')
*
* @method limit
@@ -129,8 +139,8 @@
* Includes additional related objects with the returned data
*
* @example
- * this.model.include('role', 'organization')
- * this.model.include('organization.owner')
+ * this.model.includeRelated('role', 'organization')
+ * this.model.includeRelated('organization.owner')
* this.model.incldue('organization.owner.role', 'organization.staff')
*
* @method skip
@@ -148,14 +158,14 @@
* can be called multiple times for each additonal sort item.
*
* @example
- * this.model.include('role', 'organization')
- * this.model.include('organization.owner')
+ * this.model.includeRelated('role', 'organization')
+ * this.model.includeRelated('organization.owner')
* this.model.incldue('organization.owner.role', 'organization.staff')
*
- * @method sortBy
+ * @method orderBy
* @return {object} Reference to current object
*/
- sortBy: function (options, order) {
+ orderBy: function (options, order) {
var fieldName,
direction;
@@ -168,8 +178,8 @@
}
this._rbQueryData = this._rbQueryData || {};
- this._rbQueryData['sortBy'] = this._rbQueryData['sortBy'] || [];
- this._rbQueryData['sortBy'].push({
+ this._rbQueryData['orderBy'] = this._rbQueryData['orderBy'] || [];
+ this._rbQueryData['orderBy'].push({
field: fieldName,
direction: direction
});
@@ -178,7 +188,7 @@
},
/**
- * Overrides backbone sync to include data built by methods
+ * Overrides backbone sync to includeRelated data built by methods
*/
sync: function (method, item, options) {
var queryFields = QueryBuilder.provider.getFields(this._rbQueryData);
@@ -192,8 +202,5 @@
}
};
- _.extend(Backbone.Model.prototype, QueryBuilderMixin);
- _.extend(Backbone.Collection.prototype, QueryBuilderMixin);
-
return QueryBuilder;
}));
\ No newline at end of file
diff --git a/src/earthling.dataprovider.js b/src/earthling.dataprovider.js
index c3323c5..af266c0 100644
--- a/src/earthling.dataprovider.js
+++ b/src/earthling.dataprovider.js
@@ -25,18 +25,18 @@
"use strict";
var conversionMethods = {
- include: function (queryData) {
- var includeFields = _.map(queryData['include'], function (obj) {
+ includeRelated: function (queryData) {
+ var includeRelatedFields = _.map(queryData['includeRelated'], function (obj) {
return _.values(obj)[0];
});
return {
- 'with': includeFields.join()
+ 'with': includeRelatedFields.join()
};
},
- where: function (queryData) {
- var whereData = {},
+ when: function (queryData) {
+ var whenData = {},
comparisons = {
'=': 'eq',
'>': 'gt',
@@ -45,16 +45,16 @@
'like': 'like'
};
- _.each(queryData['where'], function (item) {
+ _.each(queryData['when'], function (item) {
if (comparisons[item.operator]) {
- whereData[item.field] = comparisons[item.operator] + ':' + item.value;
+ whenData[item.field] = comparisons[item.operator] + ':' + item.value;
} else {
- whereData[item.field] = item.value;
+ whenData[item.field] = item.value;
}
});
- return whereData;
+ return whenData;
},
limit: function (queryData) {
@@ -70,14 +70,14 @@
};
},
- sortBy: function (queryData) {
- var sortByData = _.map(queryData['sortBy'], function (item) {
+ orderBy: function (queryData) {
+ var orderByData = _.map(queryData['orderBy'], function (item) {
var direction = (item.direction === 'asc') ? '' : '-';
return direction + item.field;
});
return {
- orderBy: sortByData.join()
+ orderBy: orderByData.join()
};
}
};
diff --git a/test/index.html b/test/index.html
index 0635237..68e7e64 100644
--- a/test/index.html
+++ b/test/index.html
@@ -11,10 +11,13 @@
+
+
+
diff --git a/test/spec/backbone-compatibility.js b/test/spec/backbone-compatibility.js
new file mode 100644
index 0000000..5cdcc4f
--- /dev/null
+++ b/test/spec/backbone-compatibility.js
@@ -0,0 +1,71 @@
+/* global test, module, ok */
+(function (Backbone, _, querybuilder) {
+ "use strict";
+
+ var user,
+ users,
+ User,
+ UserCollection,
+ bbMixin = querybuilder.getMixin(),
+ expectedCollisions = ['sync'];
+
+ module("Backbone Mixin", {
+ setup: function() {
+ User = Backbone.Model.extend({
+ urlRoot: '/api/user'
+ });
+
+ UserCollection = Backbone.Collection.extend({
+ model: User,
+ url: '/api/user'
+ });
+ }
+ });
+
+ test("Backbone Model: unexpected method collisions", _.keys(bbMixin).length - expectedCollisions.length, function () {
+ var prop;
+ user = new User();
+
+ _.indexOf(expectedCollisions, prop);
+
+ for (prop in bbMixin) {
+ if (_.indexOf(expectedCollisions, prop) !== -1) {
+ continue;
+ }
+
+ ok(typeof user[prop] === 'undefined', 'Backbone.Model already has method ' + prop);
+ }
+ });
+
+ test("Backbone Model: expected method collisions", expectedCollisions.length, function () {
+ var i = 0;
+ user = new User();
+
+ for (; i < expectedCollisions.length; i++) {
+ ok(expectedCollisions[i] !== 'undefined', 'Backbone.Model does not have method ' + expectedCollisions[i]);
+ }
+ });
+
+ test("Backbone Collection: unexpected method collisions", _.keys(bbMixin).length - expectedCollisions.length, function () {
+ var prop;
+ users = new UserCollection();
+
+ for (prop in bbMixin) {
+ if (_.indexOf(expectedCollisions, prop) !== -1) {
+ continue;
+ }
+
+ ok(typeof users[prop] === 'undefined', 'Backbone.Collection already has method ' + prop);
+ }
+ });
+
+ test("Backbone Collection: expected method collisions", expectedCollisions.length, function () {
+ var i = 0;
+ users = new UserCollection();
+
+ for (; i < expectedCollisions.length; i++) {
+ ok(expectedCollisions[i] !== 'undefined', 'Backbone.Model does not have method ' + expectedCollisions[i]);
+ }
+ });
+
+})(window.Backbone, window._, window.querybuilder);
\ No newline at end of file
diff --git a/test/spec/earthling.provider.js b/test/spec/earthling.provider.js
index 07df455..0869f2d 100644
--- a/test/spec/earthling.provider.js
+++ b/test/spec/earthling.provider.js
@@ -1,5 +1,5 @@
/* global test, module, sinon, equal */
-(function (Backbone, _) {
+(function (Backbone, _, querybuilder, earthlingDataProvider) {
"use strict";
var server,
@@ -34,14 +34,14 @@
}
});
- test("include: single option", 1, function() {
+ test("includeRelated: single option", 1, function() {
var requestUrl = "/api/user/1?with=" + encodeURIComponent("role");
this.setServerData(requestUrl);
user = new User({'id': 1});
user
- .include('role')
+ .includeRelated('role')
.fetch({
complete: function () {
equal(requestUrl, this.url);
@@ -51,14 +51,14 @@
server.respond();
});
- test("include: multiple options", 1, function () {
+ test("includeRelated: multiple options", 1, function () {
var requestUrl = "/api/user/1?with=" + encodeURIComponent("role,organization");
this.setServerData(requestUrl);
user = new User({'id': 1});
user
- .include('role', 'organization')
+ .includeRelated('role', 'organization')
.fetch({
complete: function () {
equal(requestUrl, this.url);
@@ -68,14 +68,14 @@
server.respond();
});
- test("include: 2 level deep relationship", 1, function () {
+ test("includeRelated: 2 level deep relationship", 1, function () {
var requestUrl = "/api/user/1?with=" + encodeURIComponent("organization.owner");
this.setServerData(requestUrl);
user = new User({'id': 1});
user
- .include('organization.owner')
+ .includeRelated('organization.owner')
.fetch({
complete: function () {
equal(requestUrl, this.url);
@@ -85,14 +85,14 @@
server.respond();
});
- test("include: 3 level deep relationship", 1, function () {
+ test("includeRelated: 3 level deep relationship", 1, function () {
var requestUrl = "/api/user/1?with=" + encodeURIComponent("organization.owner.role");
this.setServerData(requestUrl);
user = new User({'id': 1});
user
- .include('organization.owner.role')
+ .includeRelated('organization.owner.role')
.fetch({
complete: function () {
equal(requestUrl, this.url);
@@ -102,14 +102,14 @@
server.respond();
});
- test("include: multiple option deep relationship", 1, function () {
+ test("includeRelated: multiple option deep relationship", 1, function () {
var requestUrl = "/api/user/1?with=" + encodeURIComponent("organization.owner,organization.staff");
this.setServerData(requestUrl);
user = new User({'id': 1});
user
- .include('organization.owner', 'organization.staff')
+ .includeRelated('organization.owner', 'organization.staff')
.fetch({
complete: function () {
equal(requestUrl, this.url);
@@ -119,14 +119,14 @@
server.respond();
});
- test("where: single field equal", 1, function () {
+ test("when: single field equal", 1, function () {
var requestUrl = "/api/user?role=" + encodeURIComponent("eq:editor");
this.setServerData(requestUrl);
users = new UserCollection();
users
- .where({
+ .when({
role: {
'=': 'editor'
}
@@ -140,14 +140,14 @@
server.respond();
});
- test("where: single field equal shorthand", 1, function () {
+ test("when: single field equal shorthand", 1, function () {
var requestUrl = "/api/user?role=" + encodeURIComponent("eq:editor");
this.setServerData(requestUrl);
users = new UserCollection();
users
- .where({
+ .when({
role: 'editor'
})
.fetch({
@@ -159,14 +159,14 @@
server.respond();
});
- test("where: multiple fields", 1, function () {
+ test("when: multiple fields", 1, function () {
var requestUrl = "/api/user?role=" + encodeURIComponent("eq:editor") + "&createdBy=" + encodeURIComponent("eq:4");
this.setServerData(requestUrl);
users = new UserCollection();
users
- .where({
+ .when({
role: 'editor',
createdBy: 4
})
@@ -179,14 +179,14 @@
server.respond();
});
- test("where: like field", 1, function () {
+ test("when: like field", 1, function () {
var requestUrl = "/api/user?firstName=" + encodeURIComponent("like:Joh*");
this.setServerData(requestUrl);
users = new UserCollection();
users
- .where({
+ .when({
firstName: {
'like': 'Joh*'
}
@@ -200,14 +200,14 @@
server.respond();
});
- test("where: in list", 1, function () {
+ test("when: in list", 1, function () {
var requestUrl = "/api/user?role=" + encodeURIComponent("in:editor,author");
this.setServerData(requestUrl);
users = new UserCollection();
users
- .where({
+ .when({
role: {
'in': ['editor', 'author']
}
@@ -221,14 +221,14 @@
server.respond();
});
- test("where: in list shorthand", 1, function () {
+ test("when: in list shorthand", 1, function () {
var requestUrl = "/api/user?role=" + encodeURIComponent("in:editor,author");
this.setServerData(requestUrl);
users = new UserCollection();
users
- .where({
+ .when({
role: ['editor', 'author']
})
.fetch({
@@ -240,14 +240,14 @@
server.respond();
});
- test("where: greater than", 1, function () {
+ test("when: greater than", 1, function () {
var requestUrl = "/api/user?createdAt=" + encodeURIComponent("gt:10");
this.setServerData(requestUrl);
users = new UserCollection();
users
- .where({
+ .when({
createdAt: {
'>': 10
}
@@ -261,14 +261,14 @@
server.respond();
});
- test("where: greater than", 1, function () {
+ test("when: greater than", 1, function () {
var requestUrl = "/api/user?createdAt=" + encodeURIComponent("lt:10");
this.setServerData(requestUrl);
users = new UserCollection();
users
- .where({
+ .when({
createdAt: {
'<': 10
}
@@ -282,14 +282,14 @@
server.respond();
});
- test("where: deep relationship field", 1, function () {
+ test("when: deep relationship field", 1, function () {
var requestUrl = "/api/user?organization.type=" + encodeURIComponent("eq:facility");
this.setServerData(requestUrl);
users = new UserCollection();
users
- .where({
+ .when({
'organization.type': {
'=': 'facility'
}
@@ -303,14 +303,14 @@
server.respond();
});
- test("where: deep relationship field shorthand", 1, function () {
+ test("when: deep relationship field shorthand", 1, function () {
var requestUrl = "/api/user?organization.type=" + encodeURIComponent("eq:facility");
this.setServerData(requestUrl);
users = new UserCollection();
users
- .where({
+ .when({
'organization.type': 'facility'
})
.fetch({
@@ -360,14 +360,14 @@
});
// Dan has completed interface on first30
- test("sortBy: single field shorthand", 1, function () {
+ test("orderBy: single field shorthand", 1, function () {
var requestUrl = "/api/user?orderBy=" + encodeURIComponent("lastName");
this.setServerData(requestUrl);
users = new UserCollection();
users
- .sortBy('lastName')
+ .orderBy('lastName')
.fetch({
complete: function () {
equal(requestUrl, this.url);
@@ -378,14 +378,14 @@
});
// Dan has completed interface on first30
- test("sortBy: single field ascending", 1, function () {
+ test("orderBy: single field ascending", 1, function () {
var requestUrl = "/api/user?orderBy=" + encodeURIComponent("lastName");
this.setServerData(requestUrl);
users = new UserCollection();
users
- .sortBy({
+ .orderBy({
lastName: 'asc'
})
.fetch({
@@ -398,14 +398,14 @@
});
// Dan has completed interface on first30
- test("sortBy: single field descending", 1, function () {
+ test("orderBy: single field descending", 1, function () {
var requestUrl = "/api/user?orderBy=" + encodeURIComponent("-lastName");
this.setServerData(requestUrl);
users = new UserCollection();
users
- .sortBy({
+ .orderBy({
lastName: 'desc'
})
.fetch({
@@ -418,17 +418,17 @@
});
//TODO: Figure out order of importance for sort fields
- test("sortBy: multiple fields", 1, function () {
+ test("orderBy: multiple fields", 1, function () {
var requestUrl = "/api/user?orderBy=" + encodeURIComponent("-lastName,firstName");
this.setServerData(requestUrl);
users = new UserCollection();
users
- .sortBy({
+ .orderBy({
lastName: 'desc'
})
- .sortBy({
+ .orderBy({
firstName: 'asc'
})
.fetch({
@@ -440,6 +440,4 @@
server.respond();
});
-
-
-})(window.Backbone, window._);
\ No newline at end of file
+})(window.Backbone, window._, window.querybuilder, window.earthlingDataProvider);
\ No newline at end of file
diff --git a/test/spec/interface.js b/test/spec/interface.js
index 2bc952e..e88a9f2 100644
--- a/test/spec/interface.js
+++ b/test/spec/interface.js
@@ -1,5 +1,5 @@
/* global test, module, deepEqual */
-(function (Backbone, _) {
+(function (Backbone, _, querybuilder, earthlingDataProvider) {
"use strict";
var user,
@@ -18,17 +18,18 @@
url: '/api/user'
});
+ querybuilder.setProvider(window.earthlingDataProvider);
}
});
- test("include: single option", 1, function() {
+ test("includeRelated: single option", 1, function() {
user = new User({'id': 1});
user
- .include('role');
+ .includeRelated('role');
deepEqual(user._rbQueryData, {
- include: [
+ includeRelated: [
{
field: 'role'
}
@@ -36,13 +37,13 @@
});
});
- test("include: multiple options", 1, function () {
+ test("includeRelated: multiple options", 1, function () {
user = new User({'id': 1});
user
- .include('role', 'organization');
+ .includeRelated('role', 'organization');
deepEqual(user._rbQueryData, {
- include: [
+ includeRelated: [
{
field: 'role'
},
@@ -53,13 +54,13 @@
});
});
- test("include: 2 level deep relationship", 1, function () {
+ test("includeRelated: 2 level deep relationship", 1, function () {
user = new User({'id': 1});
user
- .include('organization.owner');
+ .includeRelated('organization.owner');
deepEqual(user._rbQueryData, {
- include: [
+ includeRelated: [
{
field: 'organization.owner'
}
@@ -67,13 +68,13 @@
});
});
- test("include: 3 level deep relationship", 1, function () {
+ test("includeRelated: 3 level deep relationship", 1, function () {
user = new User({'id': 1});
user
- .include('organization.owner.role');
+ .includeRelated('organization.owner.role');
deepEqual(user._rbQueryData, {
- include: [
+ includeRelated: [
{
field: 'organization.owner.role'
}
@@ -81,13 +82,13 @@
});
});
- test("include: multiple option deep relationship", 1, function () {
+ test("includeRelated: multiple option deep relationship", 1, function () {
user = new User({'id': 1});
user
- .include('organization.owner', 'organization.staff');
+ .includeRelated('organization.owner', 'organization.staff');
deepEqual(user._rbQueryData, {
- include: [
+ includeRelated: [
{
field: 'organization.owner'
},
@@ -98,17 +99,17 @@
});
});
- test("where: single field equal", 1, function () {
+ test("when: single field equal", 1, function () {
users = new UserCollection();
users
- .where({
+ .when({
role: {
'=': 'editor'
}
});
deepEqual(users._rbQueryData, {
- where: [
+ when: [
{
field: 'role',
operator: '=',
@@ -118,15 +119,15 @@
});
});
- test("where: single field equal shorthand", 1, function () {
+ test("when: single field equal shorthand", 1, function () {
users = new UserCollection();
users
- .where({
+ .when({
role: 'editor'
});
deepEqual(users._rbQueryData, {
- where: [
+ when: [
{
field: 'role',
operator: '=',
@@ -136,16 +137,16 @@
});
});
- test("where: multiple fields", 1, function () {
+ test("when: multiple fields", 1, function () {
users = new UserCollection();
users
- .where({
+ .when({
role: 'editor',
createdBy: 4
});
deepEqual(users._rbQueryData, {
- where: [
+ when: [
{
field: 'role',
operator: '=',
@@ -160,17 +161,17 @@
});
});
- test("where: like field", 1, function () {
+ test("when: like field", 1, function () {
users = new UserCollection();
users
- .where({
+ .when({
firstName: {
'like': 'Joh*'
}
});
deepEqual(users._rbQueryData, {
- where: [
+ when: [
{
field: 'firstName',
operator: 'like',
@@ -180,17 +181,17 @@
});
});
- test("where: in list", 1, function () {
+ test("when: in list", 1, function () {
users = new UserCollection();
users
- .where({
+ .when({
role: {
'in': ['editor', 'author']
}
});
deepEqual(users._rbQueryData, {
- where: [
+ when: [
{
field: 'role',
operator: 'in',
@@ -200,15 +201,15 @@
});
});
- test("where: in list shorthand", 1, function () {
+ test("when: in list shorthand", 1, function () {
users = new UserCollection();
users
- .where({
+ .when({
role: ['editor', 'author']
});
deepEqual(users._rbQueryData, {
- where: [
+ when: [
{
field: 'role',
operator: 'in',
@@ -218,17 +219,17 @@
});
});
- test("where: greater than", 1, function () {
+ test("when: greater than", 1, function () {
users = new UserCollection();
users
- .where({
+ .when({
createdAt: {
'>': 10
}
});
deepEqual(users._rbQueryData, {
- where: [
+ when: [
{
field: 'createdAt',
operator: '>',
@@ -238,17 +239,17 @@
});
});
- test("where: greater than", 1, function () {
+ test("when: greater than", 1, function () {
users = new UserCollection();
users
- .where({
+ .when({
createdAt: {
'<': 10
}
});
deepEqual(users._rbQueryData, {
- where: [
+ when: [
{
field: 'createdAt',
operator: '<',
@@ -258,17 +259,17 @@
});
});
- test("where: deep relationship field", 1, function () {
+ test("when: deep relationship field", 1, function () {
users = new UserCollection();
users
- .where({
+ .when({
'organization.type': {
'=': 'facility'
}
});
deepEqual(users._rbQueryData, {
- where: [
+ when: [
{
field: 'organization.type',
operator: '=',
@@ -278,15 +279,15 @@
});
});
- test("where: deep relationship field shorthand", 1, function () {
+ test("when: deep relationship field shorthand", 1, function () {
users = new UserCollection();
users
- .where({
+ .when({
'organization.type': 'facility'
});
deepEqual(users._rbQueryData, {
- where: [
+ when: [
{
field: 'organization.type',
operator: '=',
@@ -321,13 +322,13 @@
});
// Dan has completed interface on first30
- test("sortBy: single field shorthand", 1, function () {
+ test("orderBy: single field shorthand", 1, function () {
users = new UserCollection();
users
- .sortBy('lastName');
+ .orderBy('lastName');
deepEqual(users._rbQueryData, {
- sortBy: [
+ orderBy: [
{
field: 'lastName',
direction: 'asc'
@@ -337,15 +338,15 @@
});
// Dan has completed interface on first30
- test("sortBy: single field ascending", 1, function () {
+ test("orderBy: single field ascending", 1, function () {
users = new UserCollection();
users
- .sortBy({
+ .orderBy({
lastName: 'asc'
});
deepEqual(users._rbQueryData, {
- sortBy: [
+ orderBy: [
{
field: 'lastName',
direction: 'asc'
@@ -355,15 +356,15 @@
});
// Dan has completed interface on first30
- test("sortBy: single field descending", 1, function () {
+ test("orderBy: single field descending", 1, function () {
users = new UserCollection();
users
- .sortBy({
+ .orderBy({
lastName: 'desc'
});
deepEqual(users._rbQueryData, {
- sortBy: [
+ orderBy: [
{
field: 'lastName',
direction: 'desc'
@@ -373,18 +374,18 @@
});
//TODO: Figure out order of importance for sort fields
- test("sortBy: multiple fields", 1, function () {
+ test("orderBy: multiple fields", 1, function () {
users = new UserCollection();
users
- .sortBy({
+ .orderBy({
lastName: 'desc'
})
- .sortBy({
+ .orderBy({
firstName: 'asc'
});
deepEqual(users._rbQueryData, {
- sortBy: [
+ orderBy: [
{
field: 'lastName',
direction: 'desc'
@@ -399,4 +400,4 @@
-})(window.Backbone, window._);
\ No newline at end of file
+})(window.Backbone, window._, window.querybuilder, window.earthlingDataProvider);
\ No newline at end of file