Update vendors.

This commit is contained in:
John-David Dalton
2015-12-29 00:25:14 -06:00
parent 560ddac75a
commit 20906c7bf7
12 changed files with 727 additions and 734 deletions

View File

@@ -31,7 +31,7 @@
root.Backbone = factory(root, {}, root._, (root.jQuery || root.Zepto || root.ender || root.$));
}
}(function(root, Backbone, _, $) {
})(function(root, Backbone, _, $) {
// Initial Setup
// -------------
@@ -619,8 +619,8 @@
// the model will be valid when the attributes, if any, are set.
if (attrs && !wait) {
if (!this.set(attrs, options)) return false;
} else {
if (!this._validate(attrs, options)) return false;
} else if (!this._validate(attrs, options)) {
return false;
}
// After a successful server-side save, the client is (optionally)
@@ -840,7 +840,7 @@
var remove = options.remove;
var sort = false;
var sortable = this.comparator && (at == null) && options.sort !== false;
var sortable = this.comparator && at == null && options.sort !== false;
var sortAttr = _.isString(this.comparator) ? this.comparator : null;
// Turn bare objects into model references, and prevent invalid models
@@ -1802,7 +1802,7 @@
// fragment to store history.
} else if (this._wantsHashChange) {
this._updateHash(this.location, fragment, options.replace);
if (this.iframe && (fragment !== this.getHash(this.iframe.contentWindow))) {
if (this.iframe && fragment !== this.getHash(this.iframe.contentWindow)) {
var iWindow = this.iframe.contentWindow;
// Opening and closing the iframe tricks IE7 and earlier to push a
@@ -1894,4 +1894,4 @@
return Backbone;
}));
});

View File

@@ -2,7 +2,7 @@
var a, b, c, d, e, col, otherCol;
QUnit.module("Backbone.Collection", {
QUnit.module('Backbone.Collection', {
beforeEach: function(assert) {
a = new Backbone.Model({id: 3, label: 'a'});
@@ -16,7 +16,7 @@
});
QUnit.test("new and sort", function(assert) {
QUnit.test('new and sort', function(assert) {
assert.expect(6);
var counter = 0;
col.on('sort', function(){ counter++; });
@@ -34,7 +34,7 @@
assert.equal(col.length, 4);
});
QUnit.test("String comparator.", function(assert) {
QUnit.test('String comparator.', function(assert) {
assert.expect(1);
var collection = new Backbone.Collection([
{id: 3},
@@ -44,7 +44,7 @@
assert.deepEqual(collection.pluck('id'), [1, 2, 3]);
});
QUnit.test("new and parse", function(assert) {
QUnit.test('new and parse', function(assert) {
assert.expect(3);
var Collection = Backbone.Collection.extend({
parse: function(data) {
@@ -60,7 +60,7 @@
assert.strictEqual(collection.last().get('a'), 4);
});
QUnit.test("clone preserves model and comparator", function(assert) {
QUnit.test('clone preserves model and comparator', function(assert) {
assert.expect(3);
var Model = Backbone.Model.extend();
var comparator = function(model){ return model.id; };
@@ -75,7 +75,7 @@
assert.strictEqual(collection.comparator, comparator);
});
QUnit.test("get", function(assert) {
QUnit.test('get', function(assert) {
assert.expect(6);
assert.equal(col.get(0), d);
assert.equal(col.get(d.clone()), d);
@@ -85,7 +85,7 @@
assert.equal(col.get(col.first().cid), col.first());
});
QUnit.test("get with non-default ids", function(assert) {
QUnit.test('get with non-default ids', function(assert) {
assert.expect(5);
var MongoModel = Backbone.Model.extend({idAttribute: '_id'});
var model = new MongoModel({_id: 100});
@@ -106,7 +106,7 @@
assert.equal(collection.get(1).id, 1);
});
QUnit.test("update index when id changes", function(assert) {
QUnit.test('update index when id changes', function(assert) {
assert.expect(4);
var col = new Backbone.Collection();
col.add([
@@ -121,18 +121,18 @@
assert.equal(col.get(101).get('name'), 'dalmatians');
});
QUnit.test("at", function(assert) {
QUnit.test('at', function(assert) {
assert.expect(2);
assert.equal(col.at(2), c);
assert.equal(col.at(-2), c);
});
QUnit.test("pluck", function(assert) {
QUnit.test('pluck', function(assert) {
assert.expect(1);
assert.equal(col.pluck('label').join(' '), 'a b c d');
});
QUnit.test("add", function(assert) {
QUnit.test('add', function(assert) {
assert.expect(14);
var added, opts, secondAdded;
added = opts = secondAdded = null;
@@ -176,7 +176,7 @@
assert.equal(addCount, 7);
});
QUnit.test("add multiple models", function(assert) {
QUnit.test('add multiple models', function(assert) {
assert.expect(6);
var col = new Backbone.Collection([{at: 0}, {at: 1}, {at: 9}]);
col.add([{at: 2}, {at: 3}, {at: 4}, {at: 5}, {at: 6}, {at: 7}, {at: 8}], {at: 2});
@@ -185,7 +185,7 @@
}
});
QUnit.test("add; at should have preference over comparator", function(assert) {
QUnit.test('add; at should have preference over comparator', function(assert) {
assert.expect(1);
var Col = Backbone.Collection.extend({
comparator: function(a, b) {
@@ -199,7 +199,7 @@
assert.equal(col.pluck('id').join(' '), '3 1 2');
});
QUnit.test("add; at should add to the end if the index is out of bounds", function(assert) {
QUnit.test('add; at should add to the end if the index is out of bounds', function(assert) {
assert.expect(1);
var col = new Backbone.Collection([{id: 2}, {id: 3}]);
col.add(new Backbone.Model({id: 1}), {at: 5});
@@ -220,7 +220,7 @@
assert.equal(col.length, 1);
});
QUnit.test("merge in duplicate models with {merge: true}", function(assert) {
QUnit.test('merge in duplicate models with {merge: true}', function(assert) {
assert.expect(3);
var col = new Backbone.Collection;
col.add([{id: 1, name: 'Moe'}, {id: 2, name: 'Curly'}, {id: 3, name: 'Larry'}]);
@@ -232,7 +232,7 @@
assert.equal(col.first().get('name'), 'Tim');
});
QUnit.test("add model to multiple collections", function(assert) {
QUnit.test('add model to multiple collections', function(assert) {
assert.expect(10);
var counter = 0;
var e = new Backbone.Model({id: 10, label: 'e'});
@@ -261,7 +261,7 @@
assert.equal(e.collection, colE);
});
QUnit.test("add model with parse", function(assert) {
QUnit.test('add model with parse', function(assert) {
assert.expect(1);
var Model = Backbone.Model.extend({
parse: function(obj) {
@@ -276,7 +276,7 @@
assert.equal(col.at(0).get('value'), 2);
});
QUnit.test("add with parse and merge", function(assert) {
QUnit.test('add with parse and merge', function(assert) {
var collection = new Backbone.Collection();
collection.parse = function(attrs) {
return _.map(attrs, function(model) {
@@ -289,7 +289,7 @@
assert.equal(collection.first().get('name'), 'Alf');
});
QUnit.test("add model to collection with sort()-style comparator", function(assert) {
QUnit.test('add model to collection with sort()-style comparator', function(assert) {
assert.expect(3);
var col = new Backbone.Collection;
col.comparator = function(a, b) {
@@ -306,7 +306,7 @@
assert.equal(col.indexOf(tom), 2);
});
QUnit.test("comparator that depends on `this`", function(assert) {
QUnit.test('comparator that depends on `this`', function(assert) {
assert.expect(2);
var col = new Backbone.Collection;
col.negative = function(num) {
@@ -324,7 +324,7 @@
assert.deepEqual(col.pluck('id'), [1, 2, 3]);
});
QUnit.test("remove", function(assert) {
QUnit.test('remove', function(assert) {
assert.expect(12);
var removed = null;
var result = null;
@@ -352,11 +352,11 @@
assert.deepEqual(result, [], 'returns empty array when nothing removed');
});
QUnit.test("add and remove return values", function(assert) {
QUnit.test('add and remove return values', function(assert) {
assert.expect(13);
var Even = Backbone.Model.extend({
validate: function(attrs) {
if (attrs.id % 2 !== 0) return "odd";
if (attrs.id % 2 !== 0) return 'odd';
}
});
var col = new Backbone.Collection;
@@ -386,14 +386,14 @@
assert.equal(list[1], null);
});
QUnit.test("shift and pop", function(assert) {
QUnit.test('shift and pop', function(assert) {
assert.expect(2);
var col = new Backbone.Collection([{a: 'a'}, {b: 'b'}, {c: 'c'}]);
assert.equal(col.shift().get('a'), 'a');
assert.equal(col.pop().get('c'), 'c');
});
QUnit.test("slice", function(assert) {
QUnit.test('slice', function(assert) {
assert.expect(2);
var col = new Backbone.Collection([{a: 'a'}, {b: 'b'}, {c: 'c'}]);
var array = col.slice(1, 3);
@@ -401,7 +401,7 @@
assert.equal(array[0].get('b'), 'b');
});
QUnit.test("events are unbound on remove", function(assert) {
QUnit.test('events are unbound on remove', function(assert) {
assert.expect(3);
var counter = 0;
var dj = new Backbone.Model();
@@ -415,7 +415,7 @@
assert.equal(counter, 1);
});
QUnit.test("remove in multiple collections", function(assert) {
QUnit.test('remove in multiple collections', function(assert) {
assert.expect(7);
var modelData = {
id: 5,
@@ -440,7 +440,7 @@
assert.equal(passed, true);
});
QUnit.test("remove same model in multiple collection", function(assert) {
QUnit.test('remove same model in multiple collection', function(assert) {
assert.expect(16);
var counter = 0;
var e = new Backbone.Model({id: 5, title: 'Othello'});
@@ -475,7 +475,7 @@
assert.equal(counter, 2);
});
QUnit.test("model destroy removes from all collections", function(assert) {
QUnit.test('model destroy removes from all collections', function(assert) {
assert.expect(3);
var e = new Backbone.Model({id: 5, title: 'Othello'});
e.sync = function(method, model, options) { options.success(); };
@@ -487,10 +487,10 @@
assert.equal(undefined, e.collection);
});
QUnit.test("Collection: non-persisted model destroy removes from all collections", function(assert) {
QUnit.test('Collection: non-persisted model destroy removes from all collections', function(assert) {
assert.expect(3);
var e = new Backbone.Model({title: 'Othello'});
e.sync = function(method, model, options) { throw "should not be called"; };
e.sync = function(method, model, options) { throw 'should not be called'; };
var colE = new Backbone.Collection([e]);
var colF = new Backbone.Collection([e]);
e.destroy();
@@ -499,7 +499,7 @@
assert.equal(undefined, e.collection);
});
QUnit.test("fetch", function(assert) {
QUnit.test('fetch', function(assert) {
assert.expect(4);
var collection = new Backbone.Collection;
collection.url = '/test';
@@ -512,7 +512,7 @@
assert.equal(this.syncArgs.options.parse, false);
});
QUnit.test("fetch with an error response triggers an error event", function(assert) {
QUnit.test('fetch with an error response triggers an error event', function(assert) {
assert.expect(1);
var collection = new Backbone.Collection();
collection.on('error', function() {
@@ -522,7 +522,7 @@
collection.fetch();
});
QUnit.test("#3283 - fetch with an error response calls error with context", function(assert) {
QUnit.test('#3283 - fetch with an error response calls error with context', function(assert) {
assert.expect(1);
var collection = new Backbone.Collection();
var obj = {};
@@ -538,7 +538,7 @@
collection.fetch(options);
});
QUnit.test("ensure fetch only parses once", function(assert) {
QUnit.test('ensure fetch only parses once', function(assert) {
assert.expect(1);
var collection = new Backbone.Collection;
var counter = 0;
@@ -552,7 +552,7 @@
assert.equal(counter, 1);
});
QUnit.test("create", function(assert) {
QUnit.test('create', function(assert) {
assert.expect(4);
var collection = new Backbone.Collection;
collection.url = '/test';
@@ -563,11 +563,11 @@
assert.equal(model.collection, collection);
});
QUnit.test("create with validate:true enforces validation", function(assert) {
QUnit.test('create with validate:true enforces validation', function(assert) {
assert.expect(3);
var ValidatingModel = Backbone.Model.extend({
validate: function(attrs) {
return "fail";
return 'fail';
}
});
var ValidatingCollection = Backbone.Collection.extend({
@@ -575,13 +575,13 @@
});
var col = new ValidatingCollection();
col.on('invalid', function(collection, error, options) {
assert.equal(error, "fail");
assert.equal(error, 'fail');
assert.equal(options.validationError, 'fail');
});
assert.equal(col.create({"foo":"bar"}, {validate:true}), false);
assert.equal(col.create({'foo': 'bar'}, {validate: true}), false);
});
QUnit.test("create will pass extra options to success callback", function(assert) {
QUnit.test('create will pass extra options to success callback', function(assert) {
assert.expect(1);
var Model = Backbone.Model.extend({
sync: function(method, model, options) {
@@ -598,14 +598,14 @@
var collection = new Collection;
var success = function(model, response, options) {
assert.ok(options.specialSync, "Options were passed correctly to callback");
assert.ok(options.specialSync, 'Options were passed correctly to callback');
};
collection.create({}, {success: success});
this.ajaxSettings.success();
});
QUnit.test("create with wait:true should not call collection.parse", function(assert) {
QUnit.test('create with wait:true should not call collection.parse', function(assert) {
assert.expect(0);
var Collection = Backbone.Collection.extend({
url: '/test',
@@ -620,22 +620,22 @@
this.ajaxSettings.success();
});
QUnit.test("a failing create returns model with errors", function(assert) {
QUnit.test('a failing create returns model with errors', function(assert) {
var ValidatingModel = Backbone.Model.extend({
validate: function(attrs) {
return "fail";
return 'fail';
}
});
var ValidatingCollection = Backbone.Collection.extend({
model: ValidatingModel
});
var col = new ValidatingCollection();
var m = col.create({"foo":"bar"});
var m = col.create({foo: 'bar'});
assert.equal(m.validationError, 'fail');
assert.equal(col.length, 1);
});
QUnit.test("initialize", function(assert) {
QUnit.test('initialize', function(assert) {
assert.expect(1);
var Collection = Backbone.Collection.extend({
initialize: function() {
@@ -646,12 +646,12 @@
assert.equal(coll.one, 1);
});
QUnit.test("toJSON", function(assert) {
QUnit.test('toJSON', function(assert) {
assert.expect(1);
assert.equal(JSON.stringify(col), '[{"id":3,"label":"a"},{"id":2,"label":"b"},{"id":1,"label":"c"},{"id":0,"label":"d"}]');
});
QUnit.test("where and findWhere", function(assert) {
QUnit.test('where and findWhere', function(assert) {
assert.expect(8);
var model = new Backbone.Model({a: 1});
var coll = new Backbone.Collection([
@@ -671,13 +671,13 @@
assert.equal(coll.findWhere({a: 4}), void 0);
});
QUnit.test("Underscore methods", function(assert) {
QUnit.test('Underscore methods', function(assert) {
assert.expect(21);
assert.equal(col.map(function(model){ return model.get('label'); }).join(' '), 'a b c d');
assert.equal(col.some(function(model){ return model.id === 100; }), false);
assert.equal(col.some(function(model){ return model.id === 0; }), true);
assert.equal(col.reduce(function(a, b) {return a.id > b.id ? a : b}).id, 3);
assert.equal(col.reduceRight(function(a, b) {return a.id > b.id ? a : b}).id, 3);
assert.equal(col.reduce(function(a, b) {return a.id > b.id ? a : b;}).id, 3);
assert.equal(col.reduceRight(function(a, b) {return a.id > b.id ? a : b;}).id, 3);
assert.equal(col.indexOf(b), 1);
assert.equal(col.size(), 4);
assert.equal(col.rest().length, 3);
@@ -703,7 +703,7 @@
assert.ok(col.indexBy('id')[first.id] === first);
});
QUnit.test("Underscore methods with object-style and property-style iteratee", function(assert) {
QUnit.test('Underscore methods with object-style and property-style iteratee', function(assert) {
assert.expect(26);
var model = new Backbone.Model({a: 4, b: 1, e: 3});
var coll = new Backbone.Collection([
@@ -740,7 +740,7 @@
assert.equal(coll.findLastIndex({b: 9}), -1);
});
QUnit.test("reset", function(assert) {
QUnit.test('reset', function(assert) {
assert.expect(16);
var resetCount = 0;
var models = col.models;
@@ -772,54 +772,54 @@
assert.equal(resetCount, 6);
});
QUnit.test ("reset with different values", function(assert) {
QUnit.test('reset with different values', function(assert) {
var col = new Backbone.Collection({id: 1});
col.reset({id: 1, a: 1});
assert.equal(col.get(1).get('a'), 1);
});
QUnit.test("same references in reset", function(assert) {
QUnit.test('same references in reset', function(assert) {
var model = new Backbone.Model({id: 1});
var collection = new Backbone.Collection({id: 1});
collection.reset(model);
assert.equal(collection.get(1), model);
});
QUnit.test("reset passes caller options", function(assert) {
QUnit.test('reset passes caller options', function(assert) {
assert.expect(3);
var Model = Backbone.Model.extend({
initialize: function(attrs, options) {
this.model_parameter = options.model_parameter;
this.modelParameter = options.modelParameter;
}
});
var col = new (Backbone.Collection.extend({model: Model}))();
col.reset([{ astring: "green", anumber: 1 }, { astring: "blue", anumber: 2 }], { model_parameter: 'model parameter' });
col.reset([{astring: 'green', anumber: 1}, {astring: 'blue', anumber: 2}], {modelParameter: 'model parameter'});
assert.equal(col.length, 2);
col.each(function(model) {
assert.equal(model.model_parameter, 'model parameter');
assert.equal(model.modelParameter, 'model parameter');
});
});
QUnit.test("reset does not alter options by reference", function(assert) {
QUnit.test('reset does not alter options by reference', function(assert) {
assert.expect(2);
var col = new Backbone.Collection([{id: 1}]);
var origOpts = {};
col.on("reset", function(col, opts){
col.on('reset', function(col, opts){
assert.equal(origOpts.previousModels, undefined);
assert.equal(opts.previousModels[0].id, 1);
});
col.reset([], origOpts);
});
QUnit.test("trigger custom events on models", function(assert) {
QUnit.test('trigger custom events on models', function(assert) {
assert.expect(1);
var fired = null;
a.on("custom", function() { fired = true; });
a.trigger("custom");
a.on('custom', function() { fired = true; });
a.trigger('custom');
assert.equal(fired, true);
});
QUnit.test("add does not alter arguments", function(assert) {
QUnit.test('add does not alter arguments', function(assert) {
assert.expect(2);
var attrs = {};
var models = [attrs];
@@ -828,7 +828,7 @@
assert.ok(attrs === models[0]);
});
QUnit.test("#714: access `model.collection` in a brand new model.", function(assert) {
QUnit.test('#714: access `model.collection` in a brand new model.', function(assert) {
assert.expect(2);
var collection = new Backbone.Collection;
collection.url = '/test';
@@ -843,7 +843,7 @@
collection.create({prop: 'value'});
});
QUnit.test("#574, remove its own reference to the .models array.", function(assert) {
QUnit.test('#574, remove its own reference to the .models array.', function(assert) {
assert.expect(2);
var col = new Backbone.Collection([
{id: 1}, {id: 2}, {id: 3}, {id: 4}, {id: 5}, {id: 6}
@@ -853,7 +853,7 @@
assert.equal(col.length, 0);
});
QUnit.test("#861, adding models to a collection which do not pass validation, with validate:true", function(assert) {
QUnit.test('#861, adding models to a collection which do not pass validation, with validate:true', function(assert) {
assert.expect(2);
var Model = Backbone.Model.extend({
validate: function(attrs) {
@@ -866,13 +866,13 @@
});
var collection = new Collection;
collection.on("invalid", function() { assert.ok(true); });
collection.on('invalid', function() { assert.ok(true); });
collection.add([{id: 1}, {id: 2}, {id: 3}, {id: 4}, {id: 5}, {id: 6}], {validate: true});
assert.deepEqual(collection.pluck("id"), [1, 2, 4, 5, 6]);
assert.deepEqual(collection.pluck('id'), [1, 2, 4, 5, 6]);
});
QUnit.test("Invalid models are discarded with validate:true.", function(assert) {
QUnit.test('Invalid models are discarded with validate:true.', function(assert) {
assert.expect(5);
var collection = new Backbone.Collection;
collection.on('test', function() { assert.ok(true); });
@@ -888,7 +888,7 @@
assert.equal(collection.length, 1);
});
QUnit.test("multiple copies of the same model", function(assert) {
QUnit.test('multiple copies of the same model', function(assert) {
assert.expect(3);
var col = new Backbone.Collection();
var model = new Backbone.Model();
@@ -899,14 +899,14 @@
assert.equal(col.last().id, 1);
});
QUnit.test("#964 - collection.get return inconsistent", function(assert) {
QUnit.test('#964 - collection.get return inconsistent', function(assert) {
assert.expect(2);
var c = new Backbone.Collection();
assert.ok(c.get(null) === undefined);
assert.ok(c.get() === undefined);
});
QUnit.test("#1112 - passing options.model sets collection.model", function(assert) {
QUnit.test('#1112 - passing options.model sets collection.model', function(assert) {
assert.expect(2);
var Model = Backbone.Model.extend({});
var c = new Backbone.Collection([{id: 1}], {model: Model});
@@ -914,7 +914,7 @@
assert.ok(c.at(0) instanceof Model);
});
QUnit.test("null and undefined are invalid ids.", function(assert) {
QUnit.test('null and undefined are invalid ids.', function(assert) {
assert.expect(2);
var model = new Backbone.Model({id: 1});
var collection = new Backbone.Collection([model]);
@@ -925,7 +925,7 @@
assert.ok(!collection.get('undefined'));
});
QUnit.test("falsy comparator", function(assert) {
QUnit.test('falsy comparator', function(assert) {
assert.expect(4);
var Col = Backbone.Collection.extend({
comparator: function(model){ return model.id; }
@@ -940,7 +940,7 @@
assert.ok(colUndefined.comparator);
});
QUnit.test("#1355 - `options` is passed to success callbacks", function(assert) {
QUnit.test('#1355 - `options` is passed to success callbacks', function(assert) {
assert.expect(2);
var m = new Backbone.Model({x: 1});
var col = new Backbone.Collection();
@@ -982,7 +982,7 @@
collection.off();
});
QUnit.test("#3283 - fetch, create calls success with context", function(assert) {
QUnit.test('#3283 - fetch, create calls success with context', function(assert) {
assert.expect(2);
var collection = new Backbone.Collection;
collection.url = '/test';
@@ -1001,7 +1001,7 @@
collection.create({id: 1}, options);
});
QUnit.test("#1447 - create with wait adds model.", function(assert) {
QUnit.test('#1447 - create with wait adds model.', function(assert) {
assert.expect(1);
var collection = new Backbone.Collection;
var model = new Backbone.Model;
@@ -1010,7 +1010,7 @@
collection.create(model, {wait: true});
});
QUnit.test("#1448 - add sorts collection after merge.", function(assert) {
QUnit.test('#1448 - add sorts collection after merge.', function(assert) {
assert.expect(1);
var collection = new Backbone.Collection([
{id: 1, x: 1},
@@ -1021,7 +1021,7 @@
assert.deepEqual(collection.pluck('id'), [2, 1]);
});
QUnit.test("#1655 - groupBy can be used with a string argument.", function(assert) {
QUnit.test('#1655 - groupBy can be used with a string argument.', function(assert) {
assert.expect(3);
var collection = new Backbone.Collection([{x: 1}, {x: 2}]);
var grouped = collection.groupBy('x');
@@ -1030,7 +1030,7 @@
assert.strictEqual(grouped[2][0].get('x'), 2);
});
QUnit.test("#1655 - sortBy can be used with a string argument.", function(assert) {
QUnit.test('#1655 - sortBy can be used with a string argument.', function(assert) {
assert.expect(1);
var collection = new Backbone.Collection([{x: 3}, {x: 1}, {x: 2}]);
var values = _.map(collection.sortBy('x'), function(model) {
@@ -1039,7 +1039,7 @@
assert.deepEqual(values, [1, 2, 3]);
});
QUnit.test("#1604 - Removal during iteration.", function(assert) {
QUnit.test('#1604 - Removal during iteration.', function(assert) {
assert.expect(0);
var collection = new Backbone.Collection([{}, {}]);
collection.on('add', function() {
@@ -1048,7 +1048,7 @@
collection.add({}, {at: 0});
});
QUnit.test("#1638 - `sort` during `add` triggers correctly.", function(assert) {
QUnit.test('#1638 - `sort` during `add` triggers correctly.', function(assert) {
var collection = new Backbone.Collection;
collection.comparator = function(model) { return model.get('x'); };
var added = [];
@@ -1061,7 +1061,7 @@
assert.deepEqual(added, [1, 2]);
});
QUnit.test("fetch parses models by default", function(assert) {
QUnit.test('fetch parses models by default', function(assert) {
assert.expect(1);
var model = {};
var Collection = Backbone.Collection.extend({
@@ -1088,7 +1088,7 @@
c.add({id: 4});
});
QUnit.test("#1407 parse option on constructor parses collection and models", function(assert) {
QUnit.test('#1407 parse option on constructor parses collection and models', function(assert) {
assert.expect(2);
var model = {
namespace: [{id: 1}, {id: 2}]
@@ -1110,7 +1110,7 @@
assert.equal(c.at(0).get('name'), 'test');
});
QUnit.test("#1407 parse option on reset parses collection and models", function(assert) {
QUnit.test('#1407 parse option on reset parses collection and models', function(assert) {
assert.expect(2);
var model = {
namespace: [{id: 1}, {id: 2}]
@@ -1134,17 +1134,17 @@
});
QUnit.test("Reset includes previous models in triggered event.", function(assert) {
QUnit.test('Reset includes previous models in triggered event.', function(assert) {
assert.expect(1);
var model = new Backbone.Model();
var collection = new Backbone.Collection([model])
.on('reset', function(collection, options) {
deepEqual(options.previousModels, [model]);
assert.deepEqual(options.previousModels, [model]);
});
collection.reset([]);
});
QUnit.test("set", function(assert) {
QUnit.test('set', function(assert) {
var m1 = new Backbone.Model();
var m2 = new Backbone.Model({id: 2});
var m3 = new Backbone.Model();
@@ -1197,7 +1197,7 @@
assert.strictEqual(c.length, 1);
});
QUnit.test("set with only cids", function(assert) {
QUnit.test('set with only cids', function(assert) {
assert.expect(3);
var m1 = new Backbone.Model;
var m2 = new Backbone.Model;
@@ -1210,16 +1210,16 @@
assert.equal(c.length, 2);
});
QUnit.test("set with only idAttribute", function(assert) {
QUnit.test('set with only idAttribute', function(assert) {
assert.expect(3);
var m1 = {_id: 1};
var m2 = {_id: 2};
var col = Backbone.Collection.extend({
var Col = Backbone.Collection.extend({
model: Backbone.Model.extend({
idAttribute: '_id'
})
});
var c = new col;
var c = new Col;
c.set([m1, m2]);
assert.equal(c.length, 2);
c.set([m1]);
@@ -1228,7 +1228,7 @@
assert.equal(c.length, 2);
});
QUnit.test("set + merge with default values defined", function(assert) {
QUnit.test('set + merge with default values defined', function(assert) {
var Model = Backbone.Model.extend({
defaults: {
key: 'value'
@@ -1264,7 +1264,7 @@
assert.deepEqual(collection.pluck('id'), [2, 1]);
});
QUnit.test("`set` and model level `parse`", function(assert) {
QUnit.test('`set` and model level `parse`', function(assert) {
var Model = Backbone.Model.extend({});
var Collection = Backbone.Collection.extend({
model: Model,
@@ -1279,7 +1279,7 @@
assert.equal(collection.first(), model);
});
QUnit.test("`set` data is only parsed once", function(assert) {
QUnit.test('`set` data is only parsed once', function(assert) {
var collection = new Backbone.Collection();
collection.model = Backbone.Model.extend({
parse: function(data) {
@@ -1310,7 +1310,7 @@
assert.deepEqual(collection.models, [one, two, three]);
});
QUnit.test("#1894 - Push should not trigger a sort", function(assert) {
QUnit.test('#1894 - Push should not trigger a sort', function(assert) {
assert.expect(0);
var Collection = Backbone.Collection.extend({
comparator: 'id',
@@ -1319,7 +1319,7 @@
new Collection().push({id: 1});
});
QUnit.test("#2428 - push duplicate models, return the correct one", function(assert) {
QUnit.test('#2428 - push duplicate models, return the correct one', function(assert) {
assert.expect(1);
var col = new Backbone.Collection;
var model1 = col.push({id: 101});
@@ -1327,7 +1327,7 @@
assert.ok(model2.cid == model1.cid);
});
QUnit.test("`set` with non-normal id", function(assert) {
QUnit.test('`set` with non-normal id', function(assert) {
var Collection = Backbone.Collection.extend({
model: Backbone.Model.extend({idAttribute: '_id'})
});
@@ -1336,7 +1336,7 @@
assert.equal(collection.first().get('a'), 1);
});
QUnit.test("#1894 - `sort` can optionally be turned off", function(assert) {
QUnit.test('#1894 - `sort` can optionally be turned off', function(assert) {
assert.expect(0);
var Collection = Backbone.Collection.extend({
comparator: 'id',
@@ -1345,7 +1345,7 @@
new Collection().add({id: 1}, {sort: false});
});
QUnit.test("#1915 - `parse` data in the right order in `set`", function(assert) {
QUnit.test('#1915 - `parse` data in the right order in `set`', function(assert) {
var collection = new (Backbone.Collection.extend({
parse: function(data) {
assert.strictEqual(data.status, 'ok');
@@ -1356,7 +1356,7 @@
collection.set(res, {parse: true});
});
QUnit.test("#1939 - `parse` is passed `options`", function(assert) {
QUnit.test('#1939 - `parse` is passed `options`', function(assert) {
var done = assert.async();
assert.expect(1);
var collection = new (Backbone.Collection.extend({
@@ -1377,7 +1377,7 @@
Backbone.ajax = ajax;
});
QUnit.test("fetch will pass extra options to success callback", function(assert) {
QUnit.test('fetch will pass extra options to success callback', function(assert) {
assert.expect(1);
var SpecialSyncCollection = Backbone.Collection.extend({
url: '/test',
@@ -1390,19 +1390,19 @@
var collection = new SpecialSyncCollection();
var onSuccess = function(collection, resp, options) {
assert.ok(options.specialSync, "Options were passed correctly to callback");
assert.ok(options.specialSync, 'Options were passed correctly to callback');
};
collection.fetch({success: onSuccess});
this.ajaxSettings.success();
});
QUnit.test("`add` only `sort`s when necessary", function(assert) {
QUnit.test('`add` only `sort`s when necessary', function(assert) {
assert.expect(2);
var collection = new (Backbone.Collection.extend({
comparator: 'a'
}))([{id: 1}, {id: 2}, {id: 3}]);
collection.on('sort', function () { ok(true); });
collection.on('sort', function() { assert.ok(true); });
collection.add({id: 4}); // do sort, new model
collection.add({id: 1, a: 1}, {merge: true}); // do sort, comparator change
collection.add({id: 1, b: 1}, {merge: true}); // don't sort, no comparator change
@@ -1411,14 +1411,14 @@
collection.add(collection.models, {merge: true}); // don't sort
});
QUnit.test("`add` only `sort`s when necessary with comparator function", function(assert) {
QUnit.test('`add` only `sort`s when necessary with comparator function', function(assert) {
assert.expect(3);
var collection = new (Backbone.Collection.extend({
comparator: function(a, b) {
return a.get('a') > b.get('a') ? 1 : (a.get('a') < b.get('a') ? -1 : 0);
}
}))([{id: 1}, {id: 2}, {id: 3}]);
collection.on('sort', function () { ok(true); });
collection.on('sort', function() { assert.ok(true); });
collection.add({id: 4}); // do sort, new model
collection.add({id: 1, a: 1}, {merge: true}); // do sort, model change
collection.add({id: 1, b: 1}, {merge: true}); // do sort, model change
@@ -1427,7 +1427,7 @@
collection.add(collection.models, {merge: true}); // don't sort
});
QUnit.test("Attach options to collection.", function(assert) {
QUnit.test('Attach options to collection.', function(assert) {
assert.expect(2);
var Model = Backbone.Model;
var comparator = function(){};
@@ -1441,7 +1441,7 @@
assert.ok(collection.comparator === comparator);
});
QUnit.test("Pass falsey for `models` for empty Col with `options`", function(assert) {
QUnit.test('Pass falsey for `models` for empty Col with `options`', function(assert) {
assert.expect(9);
var opts = {a: 1, b: 2};
_.forEach([undefined, null, false], function(falsey) {
@@ -1457,7 +1457,7 @@
});
});
QUnit.test("`add` overrides `set` flags", function(assert) {
QUnit.test('`add` overrides `set` flags', function(assert) {
var collection = new Backbone.Collection();
collection.once('add', function(model, collection, options) {
collection.add({id: 2}, options);
@@ -1466,7 +1466,7 @@
assert.equal(collection.length, 2);
});
QUnit.test("#2606 - Collection#create, success arguments", function(assert) {
QUnit.test('#2606 - Collection#create, success arguments', function(assert) {
assert.expect(1);
var collection = new Backbone.Collection;
collection.url = 'test';
@@ -1478,7 +1478,7 @@
this.ajaxSettings.success('response');
});
QUnit.test("#2612 - nested `parse` works with `Collection#set`", function(assert) {
QUnit.test('#2612 - nested `parse` works with `Collection#set`', function(assert) {
var Job = Backbone.Model.extend({
constructor: function() {
@@ -1614,7 +1614,7 @@
assert.strictEqual(collection.models.length, 0);
});
QUnit.test("create with wait, model instance, #3028", function(assert) {
QUnit.test('create with wait, model instance, #3028', function(assert) {
assert.expect(1);
var collection = new Backbone.Collection();
var model = new Backbone.Model({id: 1});
@@ -1624,7 +1624,7 @@
collection.create(model, {wait: true});
});
QUnit.test("modelId", function(assert) {
QUnit.test('modelId', function(assert) {
var Stooge = Backbone.Model.extend();
var StoogeCollection = Backbone.Collection.extend({model: Stooge});
@@ -1686,7 +1686,7 @@
assert.equal(collection.at(1), collection.get('b-1'));
});
QUnit.test("#3039: adding at index fires with correct at", function(assert) {
QUnit.test('#3039: adding at index fires with correct at', function(assert) {
assert.expect(3);
var col = new Backbone.Collection([{at: 0}, {at: 4}]);
col.on('add', function(model, col, options) {
@@ -1695,7 +1695,7 @@
col.add([{at: 1}, {at: 2}, {at: 3}], {at: 1});
});
QUnit.test("#3039: index is not sent when at is not specified", function(assert) {
QUnit.test('#3039: index is not sent when at is not specified', function(assert) {
assert.expect(2);
var col = new Backbone.Collection([{at: 0}]);
col.on('add', function(model, col, options) {
@@ -1740,58 +1740,58 @@
collection.set([{id: 1}, {id: 2}, {id: 3}]);
});
QUnit.test("add supports negative indexes", function(assert) {
QUnit.test('add supports negative indexes', function(assert) {
assert.expect(1);
var collection = new Backbone.Collection([{id: 1}]);
collection.add([{id: 2}, {id: 3}], {at: -1});
collection.add([{id: 2.5}], {at: -2});
collection.add([{id: 0.5}], {at: -6});
assert.equal(collection.pluck('id').join(','), "0.5,1,2,2.5,3");
assert.equal(collection.pluck('id').join(','), '0.5,1,2,2.5,3');
});
QUnit.test("#set accepts options.at as a string", function(assert) {
QUnit.test('#set accepts options.at as a string', function(assert) {
assert.expect(1);
var collection = new Backbone.Collection([{id: 1}, {id: 2}]);
collection.add([{id: 3}], {at: '1'});
assert.deepEqual(collection.pluck('id'), [1, 3, 2]);
});
QUnit.test("adding multiple models triggers `update` event once", function(assert) {
QUnit.test('adding multiple models triggers `update` event once', function(assert) {
assert.expect(1);
var collection = new Backbone.Collection;
collection.on('update', function() { assert.ok(true); });
collection.add([{id: 1}, {id: 2}, {id: 3}]);
});
QUnit.test("removing models triggers `update` event once", function(assert) {
QUnit.test('removing models triggers `update` event once', function(assert) {
assert.expect(1);
var collection = new Backbone.Collection([{id: 1}, {id: 2}, {id: 3}]);
collection.on('update', function() { assert.ok(true); });
collection.remove([{id: 1}, {id: 2}]);
});
QUnit.test("remove does not trigger `set` when nothing removed", function(assert) {
QUnit.test('remove does not trigger `set` when nothing removed', function(assert) {
assert.expect(0);
var collection = new Backbone.Collection([{id: 1}, {id: 2}]);
collection.on('update', function() { assert.ok(false); });
collection.remove([{id: 3}]);
});
QUnit.test("set triggers `set` event once", function(assert) {
QUnit.test('set triggers `set` event once', function(assert) {
assert.expect(1);
var collection = new Backbone.Collection([{id: 1}, {id: 2}]);
collection.on('update', function() { assert.ok(true); });
collection.set([{id: 1}, {id: 3}]);
});
QUnit.test("set does not trigger `update` event when nothing added nor removed", function(assert) {
QUnit.test('set does not trigger `update` event when nothing added nor removed', function(assert) {
assert.expect(0);
var collection = new Backbone.Collection([{id: 1}, {id: 2}]);
collection.on('update', function() { assert.ok(false); });
collection.set([{id: 1}, {id: 2}]);
});
QUnit.test("#3610 - invoke collects arguments", function(assert) {
QUnit.test('#3610 - invoke collects arguments', function(assert) {
assert.expect(3);
var Model = Backbone.Model.extend({
method: function(a, b, c) {

View File

@@ -1,8 +1,8 @@
(function() {
QUnit.module("Backbone.Events");
QUnit.module('Backbone.Events');
QUnit.test("on and trigger", function(assert) {
QUnit.test('on and trigger', function(assert) {
assert.expect(2);
var obj = {counter: 0};
_.extend(obj, Backbone.Events);
@@ -16,7 +16,7 @@
assert.equal(obj.counter, 5, 'counter should be incremented five times.');
});
QUnit.test("binding and triggering multiple events", function(assert) {
QUnit.test('binding and triggering multiple events', function(assert) {
assert.expect(4);
var obj = {counter: 0};
_.extend(obj, Backbone.Events);
@@ -37,7 +37,7 @@
assert.equal(obj.counter, 5);
});
QUnit.test("binding and triggering with event maps", function(assert) {
QUnit.test('binding and triggering with event maps', function(assert) {
var obj = {counter: 0};
_.extend(obj, Backbone.Events);
@@ -68,7 +68,7 @@
assert.equal(obj.counter, 5);
});
QUnit.test("binding and triggering multiple event names with event maps", function(assert) {
QUnit.test('binding and triggering multiple event names with event maps', function(assert) {
var obj = {counter: 0};
_.extend(obj, Backbone.Events);
@@ -96,7 +96,7 @@
assert.equal(obj.counter, 5);
});
QUnit.test("binding and trigger with event maps context", function(assert) {
QUnit.test('binding and trigger with event maps context', function(assert) {
assert.expect(2);
var obj = {counter: 0};
var context = {};
@@ -110,12 +110,12 @@
obj.off().on({
a: function() {
strictEqual(this, context, 'will not override explicit `context` param');
assert.strictEqual(this, context, 'will not override explicit `context` param');
}
}, this, context).trigger('a');
});
QUnit.test("listenTo and stopListening", function(assert) {
QUnit.test('listenTo and stopListening', function(assert) {
assert.expect(1);
var a = _.extend({}, Backbone.Events);
var b = _.extend({}, Backbone.Events);
@@ -126,7 +126,7 @@
b.trigger('anything');
});
QUnit.test("listenTo and stopListening with event maps", function(assert) {
QUnit.test('listenTo and stopListening with event maps', function(assert) {
assert.expect(4);
var a = _.extend({}, Backbone.Events);
var b = _.extend({}, Backbone.Events);
@@ -141,7 +141,7 @@
b.trigger('event event2');
});
QUnit.test("stopListening with omitted args", function(assert) {
QUnit.test('stopListening with omitted args', function(assert) {
assert.expect(2);
var a = _.extend({}, Backbone.Events);
var b = _.extend({}, Backbone.Events);
@@ -158,7 +158,7 @@
b.trigger('event2');
});
QUnit.test("listenToOnce", function(assert) {
QUnit.test('listenToOnce', function(assert) {
assert.expect(2);
// Same as the previous test, but we use once rather than having to explicitly unbind
var obj = {counterA: 0, counterB: 0};
@@ -172,7 +172,7 @@
assert.equal(obj.counterB, 1, 'counterB should have only been incremented once.');
});
QUnit.test("listenToOnce and stopListening", function(assert) {
QUnit.test('listenToOnce and stopListening', function(assert) {
assert.expect(1);
var a = _.extend({}, Backbone.Events);
var b = _.extend({}, Backbone.Events);
@@ -184,7 +184,7 @@
b.trigger('anything');
});
QUnit.test("listenTo, listenToOnce and stopListening", function(assert) {
QUnit.test('listenTo, listenToOnce and stopListening', function(assert) {
assert.expect(1);
var a = _.extend({}, Backbone.Events);
var b = _.extend({}, Backbone.Events);
@@ -196,7 +196,7 @@
b.trigger('anything');
});
QUnit.test("listenTo and stopListening with event maps", function(assert) {
QUnit.test('listenTo and stopListening with event maps', function(assert) {
assert.expect(1);
var a = _.extend({}, Backbone.Events);
var b = _.extend({}, Backbone.Events);
@@ -207,23 +207,23 @@
b.trigger('change');
});
QUnit.test("listenTo yourself", function(assert) {
QUnit.test('listenTo yourself', function(assert) {
assert.expect(1);
var e = _.extend({}, Backbone.Events);
e.listenTo(e, "foo", function(){ assert.ok(true); });
e.trigger("foo");
e.listenTo(e, 'foo', function(){ assert.ok(true); });
e.trigger('foo');
});
QUnit.test("listenTo yourself cleans yourself up with stopListening", function(assert) {
QUnit.test('listenTo yourself cleans yourself up with stopListening', function(assert) {
assert.expect(1);
var e = _.extend({}, Backbone.Events);
e.listenTo(e, "foo", function(){ assert.ok(true); });
e.trigger("foo");
e.listenTo(e, 'foo', function(){ assert.ok(true); });
e.trigger('foo');
e.stopListening();
e.trigger("foo");
e.trigger('foo');
});
QUnit.test("stopListening cleans up references", function(assert) {
QUnit.test('stopListening cleans up references', function(assert) {
assert.expect(12);
var a = _.extend({}, Backbone.Events);
var b = _.extend({}, Backbone.Events);
@@ -247,7 +247,7 @@
assert.equal(_.size(b._listeners), 0);
});
QUnit.test("stopListening cleans up references from listenToOnce", function(assert) {
QUnit.test('stopListening cleans up references from listenToOnce', function(assert) {
assert.expect(12);
var a = _.extend({}, Backbone.Events);
var b = _.extend({}, Backbone.Events);
@@ -271,7 +271,7 @@
assert.equal(_.size(b._listeners), 0);
});
QUnit.test("listenTo and off cleaning up references", function(assert) {
QUnit.test('listenTo and off cleaning up references', function(assert) {
assert.expect(8);
var a = _.extend({}, Backbone.Events);
var b = _.extend({}, Backbone.Events);
@@ -294,7 +294,7 @@
assert.equal(_.size(b._listeners), 0);
});
QUnit.test("listenTo and stopListening cleaning up references", function(assert) {
QUnit.test('listenTo and stopListening cleaning up references', function(assert) {
assert.expect(2);
var a = _.extend({}, Backbone.Events);
var b = _.extend({}, Backbone.Events);
@@ -306,7 +306,7 @@
assert.equal(_.size(a._listeningTo), 0);
});
QUnit.test("listenToOnce without context cleans up references after the event has fired", function(assert) {
QUnit.test('listenToOnce without context cleans up references after the event has fired', function(assert) {
assert.expect(2);
var a = _.extend({}, Backbone.Events);
var b = _.extend({}, Backbone.Events);
@@ -315,7 +315,7 @@
assert.equal(_.size(a._listeningTo), 0);
});
QUnit.test("listenToOnce with event maps cleans up references", function(assert) {
QUnit.test('listenToOnce with event maps cleans up references', function(assert) {
assert.expect(2);
var a = _.extend({}, Backbone.Events);
var b = _.extend({}, Backbone.Events);
@@ -327,7 +327,7 @@
assert.equal(_.size(a._listeningTo), 1);
});
QUnit.test("listenToOnce with event maps binds the correct `this`", function(assert) {
QUnit.test('listenToOnce with event maps binds the correct `this`', function(assert) {
assert.expect(1);
var a = _.extend({}, Backbone.Events);
var b = _.extend({}, Backbone.Events);
@@ -341,12 +341,12 @@
QUnit.test("listenTo with empty callback doesn't throw an error", function(assert) {
assert.expect(1);
var e = _.extend({}, Backbone.Events);
e.listenTo(e, "foo", null);
e.trigger("foo");
e.listenTo(e, 'foo', null);
e.trigger('foo');
assert.ok(true);
});
QUnit.test("trigger all for each event", function(assert) {
QUnit.test('trigger all for each event', function(assert) {
assert.expect(3);
var a, b, obj = {counter: 0};
_.extend(obj, Backbone.Events);
@@ -361,7 +361,7 @@
assert.equal(obj.counter, 2);
});
QUnit.test("on, then unbind all functions", function(assert) {
QUnit.test('on, then unbind all functions', function(assert) {
assert.expect(1);
var obj = {counter: 0};
_.extend(obj, Backbone.Events);
@@ -373,7 +373,7 @@
assert.equal(obj.counter, 1, 'counter should have only been incremented once.');
});
QUnit.test("bind two callbacks, unbind only one", function(assert) {
QUnit.test('bind two callbacks, unbind only one', function(assert) {
assert.expect(2);
var obj = {counterA: 0, counterB: 0};
_.extend(obj, Backbone.Events);
@@ -387,7 +387,7 @@
assert.equal(obj.counterB, 2, 'counterB should have been incremented twice.');
});
QUnit.test("unbind a callback in the midst of it firing", function(assert) {
QUnit.test('unbind a callback in the midst of it firing', function(assert) {
assert.expect(1);
var obj = {counter: 0};
_.extend(obj, Backbone.Events);
@@ -402,7 +402,7 @@
assert.equal(obj.counter, 1, 'the callback should have been unbound.');
});
QUnit.test("two binds that unbind themeselves", function(assert) {
QUnit.test('two binds that unbind themeselves', function(assert) {
assert.expect(2);
var obj = {counterA: 0, counterB: 0};
_.extend(obj, Backbone.Events);
@@ -417,7 +417,7 @@
assert.equal(obj.counterB, 1, 'counterB should have only been incremented once.');
});
QUnit.test("bind a callback with a supplied context", function(assert) {
QUnit.test('bind a callback with a supplied context', function(assert) {
assert.expect(1);
var TestClass = function() {
return this;
@@ -427,11 +427,11 @@
};
var obj = _.extend({}, Backbone.Events);
obj.on('event', function () { this.assertTrue(); }, (new TestClass));
obj.on('event', function() { this.assertTrue(); }, new TestClass);
obj.trigger('event');
});
QUnit.test("nested trigger with unbind", function(assert) {
QUnit.test('nested trigger with unbind', function(assert) {
assert.expect(1);
var obj = {counter: 0};
_.extend(obj, Backbone.Events);
@@ -443,7 +443,7 @@
assert.equal(obj.counter, 3, 'counter should have been incremented three times');
});
QUnit.test("callback list is not altered during trigger", function(assert) {
QUnit.test('callback list is not altered during trigger', function(assert) {
assert.expect(2);
var counter = 0, obj = _.extend({}, Backbone.Events);
var incr = function(){ counter++; };
@@ -469,12 +469,12 @@
assert.strictEqual(counter, 2);
});
QUnit.test("if no callback is provided, `on` is a noop", function(assert) {
QUnit.test('if no callback is provided, `on` is a noop', function(assert) {
assert.expect(0);
_.extend({}, Backbone.Events).on('test').trigger('test');
});
QUnit.test("if callback is truthy but not a function, `on` should throw an error just like jQuery", function(assert) {
QUnit.test('if callback is truthy but not a function, `on` should throw an error just like jQuery', function(assert) {
assert.expect(1);
var view = _.extend({}, Backbone.Events).on('test', 'noop');
assert.throws(function() {
@@ -482,7 +482,7 @@
});
});
QUnit.test("remove all events for a specific context", function(assert) {
QUnit.test('remove all events for a specific context', function(assert) {
assert.expect(4);
var obj = _.extend({}, Backbone.Events);
obj.on('x y all', function() { assert.ok(true); });
@@ -491,7 +491,7 @@
obj.trigger('x y');
});
QUnit.test("remove all events for a specific callback", function(assert) {
QUnit.test('remove all events for a specific callback', function(assert) {
assert.expect(4);
var obj = _.extend({}, Backbone.Events);
var success = function() { assert.ok(true); };
@@ -502,7 +502,7 @@
obj.trigger('x y');
});
QUnit.test("#1310 - off does not skip consecutive events", function(assert) {
QUnit.test('#1310 - off does not skip consecutive events', function(assert) {
assert.expect(0);
var obj = _.extend({}, Backbone.Events);
obj.on('event', function() { assert.ok(false); }, obj);
@@ -511,7 +511,7 @@
obj.trigger('event');
});
QUnit.test("once", function(assert) {
QUnit.test('once', function(assert) {
assert.expect(2);
// Same as the previous test, but we use once rather than having to explicitly unbind
var obj = {counterA: 0, counterB: 0};
@@ -525,7 +525,7 @@
assert.equal(obj.counterB, 1, 'counterB should have only been incremented once.');
});
QUnit.test("once variant one", function(assert) {
QUnit.test('once variant one', function(assert) {
assert.expect(3);
var f = function(){ assert.ok(true); };
@@ -538,7 +538,7 @@
b.trigger('event');
});
QUnit.test("once variant two", function(assert) {
QUnit.test('once variant two', function(assert) {
assert.expect(3);
var f = function(){ assert.ok(true); };
var obj = _.extend({}, Backbone.Events);
@@ -550,7 +550,7 @@
.trigger('event');
});
QUnit.test("once with off", function(assert) {
QUnit.test('once with off', function(assert) {
assert.expect(0);
var f = function(){ assert.ok(true); };
var obj = _.extend({}, Backbone.Events);
@@ -560,7 +560,7 @@
obj.trigger('event');
});
QUnit.test("once with event maps", function(assert) {
QUnit.test('once with event maps', function(assert) {
var obj = {counter: 0};
_.extend(obj, Backbone.Events);
@@ -587,7 +587,7 @@
assert.equal(obj.counter, 3);
});
QUnit.test("once with off only by context", function(assert) {
QUnit.test('once with off only by context', function(assert) {
assert.expect(0);
var context = {};
var obj = _.extend({}, Backbone.Events);
@@ -596,11 +596,11 @@
obj.trigger('event');
});
QUnit.test("Backbone object inherits Events", function(assert) {
QUnit.test('Backbone object inherits Events', function(assert) {
assert.ok(Backbone.on === Backbone.Events.on);
});
QUnit.test("once with asynchronous events", function(assert) {
QUnit.test('once with asynchronous events', function(assert) {
var done = assert.async();
assert.expect(1);
var func = _.debounce(function() { assert.ok(true); done(); }, 50);
@@ -610,14 +610,14 @@
obj.trigger('async');
});
QUnit.test("once with multiple events.", function(assert) {
QUnit.test('once with multiple events.', function(assert) {
assert.expect(2);
var obj = _.extend({}, Backbone.Events);
obj.once('x y', function() { assert.ok(true); });
obj.trigger('x y');
});
QUnit.test("Off during iteration with once.", function(assert) {
QUnit.test('Off during iteration with once.', function(assert) {
assert.expect(2);
var obj = _.extend({}, Backbone.Events);
var f = function(){ this.off('event', f); };
@@ -629,7 +629,7 @@
obj.trigger('event');
});
QUnit.test("`once` on `all` should work as expected", function(assert) {
QUnit.test('`once` on `all` should work as expected', function(assert) {
assert.expect(1);
Backbone.once('all', function() {
assert.ok(true);
@@ -638,18 +638,18 @@
Backbone.trigger('all');
});
QUnit.test("once without a callback is a noop", function(assert) {
QUnit.test('once without a callback is a noop', function(assert) {
assert.expect(0);
_.extend({}, Backbone.Events).once('event').trigger('event');
});
QUnit.test("listenToOnce without a callback is a noop", function(assert) {
QUnit.test('listenToOnce without a callback is a noop', function(assert) {
assert.expect(0);
var obj = _.extend({}, Backbone.Events);
obj.listenToOnce(obj, 'event').trigger('event');
});
QUnit.test("event functions are chainable", function(assert) {
QUnit.test('event functions are chainable', function(assert) {
var obj = _.extend({}, Backbone.Events);
var obj2 = _.extend({}, Backbone.Events);
var fn = function() {};
@@ -666,7 +666,7 @@
assert.equal(obj, obj.stopListening());
});
QUnit.test("#3448 - listenToOnce with space-separated events", function(assert) {
QUnit.test('#3448 - listenToOnce with space-separated events', function(assert) {
assert.expect(2);
var one = _.extend({}, Backbone.Events);
var two = _.extend({}, Backbone.Events);

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
(function() {
QUnit.module("Backbone.noConflict");
QUnit.module('Backbone.noConflict');
QUnit.test('noConflict', function(assert) {
assert.expect(2);

View File

@@ -40,7 +40,7 @@
});
QUnit.module("Backbone.Router", {
QUnit.module('Backbone.Router', {
setup: function() {
location = new Location('http://example.com');
@@ -74,25 +74,25 @@
count: 0,
routes: {
"noCallback": "noCallback",
"counter": "counter",
"search/:query": "search",
"search/:query/p:page": "search",
"charñ": "charUTF",
"char%C3%B1": "charEscaped",
"contacts": "contacts",
"contacts/new": "newContact",
"contacts/:id": "loadContact",
"route-event/:arg": "routeEvent",
"optional(/:item)": "optionalItem",
"named/optional/(y:z)": "namedOptional",
"splat/*args/end": "splat",
":repo/compare/*from...*to": "github",
"decode/:named/*splat": "decode",
"*first/complex-*part/*rest": "complex",
"query/:entity": "query",
"function/:value": ExternalObject.routingFunction,
"*anything": "anything"
'noCallback': 'noCallback',
'counter': 'counter',
'search/:query': 'search',
'search/:query/p:page': 'search',
'charñ': 'charUTF',
'char%C3%B1': 'charEscaped',
'contacts': 'contacts',
'contacts/new': 'newContact',
'contacts/:id': 'loadContact',
'route-event/:arg': 'routeEvent',
'optional(/:item)': 'optionalItem',
'named/optional/(y:z)': 'namedOptional',
'splat/*args/end': 'splat',
':repo/compare/*from...*to': 'github',
'decode/:named/*splat': 'decode',
'*first/complex-*part/*rest': 'complex',
'query/:entity': 'query',
'function/:value': ExternalObject.routingFunction,
'*anything': 'anything'
},
initialize: function(options) {
@@ -176,12 +176,12 @@
});
QUnit.test("initialize", function(assert) {
QUnit.test('initialize', function(assert) {
assert.expect(1);
assert.equal(router.testing, 101);
});
QUnit.test("routes (simple)", function(assert) {
QUnit.test('routes (simple)', function(assert) {
assert.expect(4);
location.replace('http://example.com#search/news');
Backbone.history.checkUrl();
@@ -191,17 +191,17 @@
assert.equal(lastArgs[0], 'news');
});
QUnit.test("routes (simple, but unicode)", function(assert) {
QUnit.test('routes (simple, but unicode)', function(assert) {
assert.expect(4);
location.replace('http://example.com#search/тест');
Backbone.history.checkUrl();
assert.equal(router.query, "тест");
assert.equal(router.query, 'тест');
assert.equal(router.page, void 0);
assert.equal(lastRoute, 'search');
assert.equal(lastArgs[0], "тест");
assert.equal(lastArgs[0], 'тест');
});
QUnit.test("routes (two part)", function(assert) {
QUnit.test('routes (two part)', function(assert) {
assert.expect(2);
location.replace('http://example.com#search/nyc/p10');
Backbone.history.checkUrl();
@@ -209,32 +209,32 @@
assert.equal(router.page, '10');
});
QUnit.test("routes via navigate", function(assert) {
QUnit.test('routes via navigate', function(assert) {
assert.expect(2);
Backbone.history.navigate('search/manhattan/p20', {trigger: true});
assert.equal(router.query, 'manhattan');
assert.equal(router.page, '20');
});
QUnit.test("routes via navigate with params", function(assert) {
QUnit.test('routes via navigate with params', function(assert) {
assert.expect(1);
Backbone.history.navigate('query/test?a=b', {trigger: true});
assert.equal(router.queryArgs, 'a=b');
});
QUnit.test("routes via navigate for backwards-compatibility", function(assert) {
QUnit.test('routes via navigate for backwards-compatibility', function(assert) {
assert.expect(2);
Backbone.history.navigate('search/manhattan/p20', true);
assert.equal(router.query, 'manhattan');
assert.equal(router.page, '20');
});
QUnit.test("reports matched route via nagivate", function(assert) {
QUnit.test('reports matched route via nagivate', function(assert) {
assert.expect(1);
assert.ok(Backbone.history.navigate('search/manhattan/p20', true));
});
QUnit.test("route precedence via navigate", function(assert){
QUnit.test('route precedence via navigate', function(assert){
assert.expect(6);
// check both 0.9.x and backwards-compatibility options
_.each([{trigger: true}, true], function( options ){
@@ -247,7 +247,7 @@
});
});
QUnit.test("loadUrl is not called for identical routes.", function(assert) {
QUnit.test('loadUrl is not called for identical routes.', function(assert) {
assert.expect(0);
Backbone.history.loadUrl = function(){ assert.ok(false); };
location.replace('http://example.com#route');
@@ -256,14 +256,14 @@
Backbone.history.navigate('/route');
});
QUnit.test("use implicit callback if none provided", function(assert) {
QUnit.test('use implicit callback if none provided', function(assert) {
assert.expect(1);
router.count = 0;
router.navigate('implicit', {trigger: true});
assert.equal(router.count, 1);
});
QUnit.test("routes via navigate with {replace: true}", function(assert) {
QUnit.test('routes via navigate with {replace: true}', function(assert) {
assert.expect(1);
location.replace('http://example.com#start_here');
Backbone.history.checkUrl();
@@ -273,14 +273,14 @@
Backbone.history.navigate('end_here', {replace: true});
});
QUnit.test("routes (splats)", function(assert) {
QUnit.test('routes (splats)', function(assert) {
assert.expect(1);
location.replace('http://example.com#splat/long-list/of/splatted_99args/end');
Backbone.history.checkUrl();
assert.equal(router.args, 'long-list/of/splatted_99args');
});
QUnit.test("routes (github)", function(assert) {
QUnit.test('routes (github)', function(assert) {
assert.expect(3);
location.replace('http://example.com#backbone/compare/1.0...braddunbar:with/slash');
Backbone.history.checkUrl();
@@ -289,7 +289,7 @@
assert.equal(router.to, 'braddunbar:with/slash');
});
QUnit.test("routes (optional)", function(assert) {
QUnit.test('routes (optional)', function(assert) {
assert.expect(2);
location.replace('http://example.com#optional');
Backbone.history.checkUrl();
@@ -299,7 +299,7 @@
assert.equal(router.arg, 'thing');
});
QUnit.test("routes (complex)", function(assert) {
QUnit.test('routes (complex)', function(assert) {
assert.expect(3);
location.replace('http://example.com#one/two/three/complex-part/four/five/six/seven');
Backbone.history.checkUrl();
@@ -308,7 +308,7 @@
assert.equal(router.rest, 'four/five/six/seven');
});
QUnit.test("routes (query)", function(assert) {
QUnit.test('routes (query)', function(assert) {
assert.expect(5);
location.replace('http://example.com#query/mandel?a=b&c=d');
Backbone.history.checkUrl();
@@ -319,14 +319,14 @@
assert.equal(lastArgs[1], 'a=b&c=d');
});
QUnit.test("routes (anything)", function(assert) {
QUnit.test('routes (anything)', function(assert) {
assert.expect(1);
location.replace('http://example.com#doesnt-match-a-route');
Backbone.history.checkUrl();
assert.equal(router.anything, 'doesnt-match-a-route');
});
QUnit.test("routes (function)", function(assert) {
QUnit.test('routes (function)', function(assert) {
assert.expect(3);
router.on('route', function(name) {
assert.ok(name === '');
@@ -337,7 +337,7 @@
assert.equal(ExternalObject.value, 'set');
});
QUnit.test("Decode named parameters, not splats.", function(assert) {
QUnit.test('Decode named parameters, not splats.', function(assert) {
assert.expect(2);
location.replace('http://example.com#decode/a%2Fb/c%2Fd/e');
Backbone.history.checkUrl();
@@ -347,12 +347,12 @@
QUnit.test("fires event when router doesn't have callback on it", function(assert) {
assert.expect(1);
router.on("route:noCallback", function(){ assert.ok(true); });
router.on('route:noCallback', function(){ assert.ok(true); });
location.replace('http://example.com#noCallback');
Backbone.history.checkUrl();
});
QUnit.test("No events are triggered if #execute returns false.", function(assert) {
QUnit.test('No events are triggered if #execute returns false.', function(assert) {
assert.expect(1);
var Router = Backbone.Router.extend({
@@ -383,7 +383,7 @@
Backbone.history.checkUrl();
});
QUnit.test("#933, #908 - leading slash", function(assert) {
QUnit.test('#933, #908 - leading slash', function(assert) {
assert.expect(2);
location.replace('http://example.com/root/foo');
@@ -398,7 +398,7 @@
assert.strictEqual(Backbone.history.getFragment(), 'foo');
});
QUnit.test("#967 - Route callback gets passed encoded values.", function(assert) {
QUnit.test('#967 - Route callback gets passed encoded values.', function(assert) {
assert.expect(3);
var route = 'has%2Fslash/complex-has%23hash/has%20space';
Backbone.history.navigate(route, {trigger: true});
@@ -407,7 +407,7 @@
assert.strictEqual(router.rest, 'has space');
});
QUnit.test("correctly handles URLs with % (#868)", function(assert) {
QUnit.test('correctly handles URLs with % (#868)', function(assert) {
assert.expect(3);
location.replace('http://example.com#search/fat%3A1.5%25');
Backbone.history.checkUrl();
@@ -418,7 +418,7 @@
assert.equal(lastRoute, 'search');
});
QUnit.test("#2666 - Hashes with UTF8 in them.", function(assert) {
QUnit.test('#2666 - Hashes with UTF8 in them.', function(assert) {
assert.expect(2);
Backbone.history.navigate('charñ', {trigger: true});
assert.equal(router.charType, 'UTF');
@@ -426,7 +426,7 @@
assert.equal(router.charType, 'UTF');
});
QUnit.test("#1185 - Use pathname when hashChange is not wanted.", function(assert) {
QUnit.test('#1185 - Use pathname when hashChange is not wanted.', function(assert) {
assert.expect(1);
Backbone.history.stop();
location.replace('http://example.com/path/name#hash');
@@ -436,7 +436,7 @@
assert.strictEqual(fragment, location.pathname.replace(/^\//, ''));
});
QUnit.test("#1206 - Strip leading slash before location.assign.", function(assert) {
QUnit.test('#1206 - Strip leading slash before location.assign.', function(assert) {
assert.expect(1);
Backbone.history.stop();
location.replace('http://example.com/root/');
@@ -448,7 +448,7 @@
Backbone.history.navigate('/fragment');
});
QUnit.test("#1387 - Root fragment without trailing slash.", function(assert) {
QUnit.test('#1387 - Root fragment without trailing slash.', function(assert) {
assert.expect(1);
Backbone.history.stop();
location.replace('http://example.com/root');
@@ -457,7 +457,7 @@
assert.strictEqual(Backbone.history.getFragment(), '');
});
QUnit.test("#1366 - History does not prepend root to fragment.", function(assert) {
QUnit.test('#1366 - History does not prepend root to fragment.', function(assert) {
assert.expect(2);
Backbone.history.stop();
location.replace('http://example.com/root/');
@@ -478,7 +478,7 @@
assert.strictEqual(Backbone.history.fragment, 'x');
});
QUnit.test("Normalize root.", function(assert) {
QUnit.test('Normalize root.', function(assert) {
assert.expect(1);
Backbone.history.stop();
location.replace('http://example.com/root');
@@ -498,7 +498,7 @@
Backbone.history.navigate('fragment');
});
QUnit.test("Normalize root.", function(assert) {
QUnit.test('Normalize root.', function(assert) {
assert.expect(1);
Backbone.history.stop();
location.replace('http://example.com/root#fragment');
@@ -517,7 +517,7 @@
});
});
QUnit.test("Normalize root.", function(assert) {
QUnit.test('Normalize root.', function(assert) {
assert.expect(1);
Backbone.history.stop();
location.replace('http://example.com/root');
@@ -529,7 +529,7 @@
});
});
QUnit.test("Normalize root - leading slash.", function(assert) {
QUnit.test('Normalize root - leading slash.', function(assert) {
assert.expect(1);
Backbone.history.stop();
location.replace('http://example.com/root');
@@ -544,7 +544,7 @@
assert.strictEqual(Backbone.history.root, '/root/');
});
QUnit.test("Transition from hashChange to pushState.", function(assert) {
QUnit.test('Transition from hashChange to pushState.', function(assert) {
assert.expect(1);
Backbone.history.stop();
location.replace('http://example.com/root#x/y');
@@ -563,7 +563,7 @@
});
});
QUnit.test("#1619: Router: Normalize empty root", function(assert) {
QUnit.test('#1619: Router: Normalize empty root', function(assert) {
assert.expect(1);
Backbone.history.stop();
location.replace('http://example.com/');
@@ -578,7 +578,7 @@
assert.strictEqual(Backbone.history.root, '/');
});
QUnit.test("#1619: Router: nagivate with empty root", function(assert) {
QUnit.test('#1619: Router: nagivate with empty root', function(assert) {
assert.expect(1);
Backbone.history.stop();
location.replace('http://example.com/');
@@ -598,7 +598,7 @@
Backbone.history.navigate('fragment');
});
QUnit.test("Transition from pushState to hashChange.", function(assert) {
QUnit.test('Transition from pushState to hashChange.', function(assert) {
assert.expect(1);
Backbone.history.stop();
location.replace('http://example.com/root/x/y?a=b');
@@ -618,7 +618,7 @@
});
});
QUnit.test("#1695 - hashChange to pushState with search.", function(assert) {
QUnit.test('#1695 - hashChange to pushState with search.', function(assert) {
assert.expect(1);
Backbone.history.stop();
location.replace('http://example.com/root#x/y?a=b');
@@ -637,7 +637,7 @@
});
});
QUnit.test("#1746 - Router allows empty route.", function(assert) {
QUnit.test('#1746 - Router allows empty route.', function(assert) {
assert.expect(1);
var Router = Backbone.Router.extend({
routes: {'': 'empty'},
@@ -649,18 +649,18 @@
new Router;
});
QUnit.test("#1794 - Trailing space in fragments.", function(assert) {
QUnit.test('#1794 - Trailing space in fragments.', function(assert) {
assert.expect(1);
var history = new Backbone.History;
assert.strictEqual(history.getFragment('fragment '), 'fragment');
});
QUnit.test("#1820 - Leading slash and trailing space.", 1, function(assert) {
QUnit.test('#1820 - Leading slash and trailing space.', 1, function(assert) {
var history = new Backbone.History;
assert.strictEqual(history.getFragment('/fragment '), 'fragment');
});
QUnit.test("#1980 - Optional parameters.", function(assert) {
QUnit.test('#1980 - Optional parameters.', function(assert) {
assert.expect(2);
location.replace('http://example.com#named/optional/y');
Backbone.history.checkUrl();
@@ -680,13 +680,13 @@
Backbone.history.checkUrl();
});
QUnit.test("#2255 - Extend routes by making routes a function.", function(assert) {
QUnit.test('#2255 - Extend routes by making routes a function.', function(assert) {
assert.expect(1);
var RouterBase = Backbone.Router.extend({
routes: function() {
return {
home: "root",
index: "index.html"
home: 'root',
index: 'index.html'
};
}
});
@@ -694,17 +694,15 @@
var RouterExtended = RouterBase.extend({
routes: function() {
var _super = RouterExtended.__super__.routes;
return _.extend(_super(),
{ show: "show",
search: "search" });
return _.extend(_super(), {show: 'show', search: 'search'});
}
});
var router = new RouterExtended();
assert.deepEqual({home: "root", index: "index.html", show: "show", search: "search"}, router.routes);
assert.deepEqual({home: 'root', index: 'index.html', show: 'show', search: 'search'}, router.routes);
});
QUnit.test("#2538 - hashChange to pushState only if both requested.", function(assert) {
QUnit.test('#2538 - hashChange to pushState only if both requested.', function(assert) {
assert.expect(0);
Backbone.history.stop();
location.replace('http://example.com/root?a=b#x/y');
@@ -934,7 +932,7 @@
Backbone.history.start();
});
QUnit.test("pushState to hashChange with only search params.", function(assert) {
QUnit.test('pushState to hashChange with only search params.', function(assert) {
assert.expect(1);
Backbone.history.stop();
location.replace('http://example.com?a=b');
@@ -948,7 +946,7 @@
Backbone.history.start({pushState: true});
});
QUnit.test("#3123 - History#navigate decodes before comparison.", function(assert) {
QUnit.test('#3123 - History#navigate decodes before comparison.', function(assert) {
assert.expect(1);
Backbone.history.stop();
location.replace('http://example.com/shop/search?keyword=short%20dress');
@@ -1025,7 +1023,7 @@
Backbone.history.start({root: 'root', pushState: true});
});
QUnit.test("roots with regex characters", function(assert) {
QUnit.test('roots with regex characters', function(assert) {
assert.expect(1);
location.replace('http://example.com/x+y.z/foo');
Backbone.history.stop();
@@ -1037,7 +1035,7 @@
Backbone.history.start({root: 'x+y.z', pushState: true});
});
QUnit.test("roots with unicode characters", function(assert) {
QUnit.test('roots with unicode characters', function(assert) {
assert.expect(1);
location.replace('http://example.com/®ooτ/foo');
Backbone.history.stop();
@@ -1049,7 +1047,7 @@
Backbone.history.start({root: '®ooτ', pushState: true});
});
QUnit.test("roots without slash", function(assert) {
QUnit.test('roots without slash', function(assert) {
assert.expect(1);
location.replace('http://example.com/®ooτ');
Backbone.history.stop();

View File

@@ -6,12 +6,12 @@
var library;
var attrs = {
title : "The Tempest",
author : "Bill Shakespeare",
title: 'The Tempest',
author: 'Bill Shakespeare',
length: 123
};
QUnit.module("Backbone.sync", {
QUnit.module('Backbone.sync', {
beforeEach: function(assert) {
library = new Library;
@@ -24,7 +24,7 @@
});
QUnit.test("read", function(assert) {
QUnit.test('read', function(assert) {
assert.expect(4);
library.fetch();
assert.equal(this.ajaxSettings.url, '/library');
@@ -33,7 +33,7 @@
assert.ok(_.isEmpty(this.ajaxSettings.data));
});
QUnit.test("passing data", function(assert) {
QUnit.test('passing data', function(assert) {
assert.expect(3);
library.fetch({data: {a: 'a', one: 1}});
assert.equal(this.ajaxSettings.url, '/library');
@@ -41,7 +41,7 @@
assert.equal(this.ajaxSettings.data.one, 1);
});
QUnit.test("create", function(assert) {
QUnit.test('create', function(assert) {
assert.expect(6);
assert.equal(this.ajaxSettings.url, '/library');
assert.equal(this.ajaxSettings.type, 'POST');
@@ -52,7 +52,7 @@
assert.equal(data.length, 123);
});
QUnit.test("update", function(assert) {
QUnit.test('update', function(assert) {
assert.expect(7);
library.first().save({id: '1-the-tempest', author: 'William Shakespeare'});
assert.equal(this.ajaxSettings.url, '/library/1-the-tempest');
@@ -65,7 +65,7 @@
assert.equal(data.length, 123);
});
QUnit.test("update with emulateHTTP and emulateJSON", function(assert) {
QUnit.test('update with emulateHTTP and emulateJSON', function(assert) {
assert.expect(7);
library.first().save({id: '2-the-tempest', author: 'Tim Shakespeare'}, {
emulateHTTP: true,
@@ -81,7 +81,7 @@
assert.equal(data.length, 123);
});
QUnit.test("update with just emulateHTTP", function(assert) {
QUnit.test('update with just emulateHTTP', function(assert) {
assert.expect(6);
library.first().save({id: '2-the-tempest', author: 'Tim Shakespeare'}, {
emulateHTTP: true
@@ -95,7 +95,7 @@
assert.equal(data.length, 123);
});
QUnit.test("update with just emulateJSON", function(assert) {
QUnit.test('update with just emulateJSON', function(assert) {
assert.expect(6);
library.first().save({id: '2-the-tempest', author: 'Tim Shakespeare'}, {
emulateJSON: true
@@ -109,7 +109,7 @@
assert.equal(data.length, 123);
});
QUnit.test("read model", function(assert) {
QUnit.test('read model', function(assert) {
assert.expect(3);
library.first().save({id: '2-the-tempest', author: 'Tim Shakespeare'});
library.first().fetch();
@@ -118,7 +118,7 @@
assert.ok(_.isEmpty(this.ajaxSettings.data));
});
QUnit.test("destroy", function(assert) {
QUnit.test('destroy', function(assert) {
assert.expect(3);
library.first().save({id: '2-the-tempest', author: 'Tim Shakespeare'});
library.first().destroy({wait: true});
@@ -127,7 +127,7 @@
assert.equal(this.ajaxSettings.data, null);
});
QUnit.test("destroy with emulateHTTP", function(assert) {
QUnit.test('destroy with emulateHTTP', function(assert) {
assert.expect(3);
library.first().save({id: '2-the-tempest', author: 'Tim Shakespeare'});
library.first().destroy({
@@ -139,7 +139,7 @@
assert.equal(JSON.stringify(this.ajaxSettings.data), '{"_method":"DELETE"}');
});
QUnit.test("urlError", function(assert) {
QUnit.test('urlError', function(assert) {
assert.expect(2);
var model = new Backbone.Model();
assert.throws(function() {
@@ -149,14 +149,14 @@
assert.equal(this.ajaxSettings.url, '/one/two');
});
QUnit.test("#1052 - `options` is optional.", function(assert) {
QUnit.test('#1052 - `options` is optional.', function(assert) {
assert.expect(0);
var model = new Backbone.Model();
model.url = '/test';
Backbone.sync('create', model);
});
QUnit.test("Backbone.ajax", function(assert) {
QUnit.test('Backbone.ajax', function(assert) {
assert.expect(1);
Backbone.ajax = function(settings){
assert.strictEqual(settings.url, '/test');
@@ -166,7 +166,7 @@
Backbone.sync('create', model);
});
QUnit.test("Call provided error callback on error.", function(assert) {
QUnit.test('Call provided error callback on error.', function(assert) {
assert.expect(1);
var model = new Backbone.Model;
model.url = '/test';
@@ -204,7 +204,7 @@
assert.strictEqual(this.ajaxSettings.emulateJSON, false);
});
QUnit.test("#1756 - Call user provided beforeSend function.", function(assert) {
QUnit.test('#1756 - Call user provided beforeSend function.', function(assert) {
assert.expect(4);
Backbone.emulateHTTP = true;
var model = new Backbone.Model;

View File

@@ -2,7 +2,7 @@
var view;
QUnit.module("Backbone.View", {
QUnit.module('Backbone.View', {
beforeEach: function(assert) {
$('#qunit-fixture').append(
@@ -18,14 +18,14 @@
});
QUnit.test("constructor", function(assert) {
QUnit.test('constructor', function(assert) {
assert.expect(3);
assert.equal(view.el.id, 'test-view');
assert.equal(view.el.className, 'test-view');
assert.equal(view.el.other, void 0);
});
QUnit.test("$", function(assert) {
QUnit.test('$', function(assert) {
assert.expect(2);
var view = new Backbone.View;
view.setElement('<p><a><b>test</b></a></p>');
@@ -35,7 +35,7 @@
assert.ok(result.length === +result.length);
});
QUnit.test("$el", function(assert) {
QUnit.test('$el', function(assert) {
assert.expect(3);
var view = new Backbone.View;
view.setElement('<p><a><b>test</b></a></p>');
@@ -45,7 +45,7 @@
assert.strictEqual(view.$el[0], view.el);
});
QUnit.test("initialize", function(assert) {
QUnit.test('initialize', function(assert) {
assert.expect(1);
var View = Backbone.View.extend({
initialize: function() {
@@ -56,13 +56,13 @@
assert.strictEqual(new View().one, 1);
});
QUnit.test("render", function(assert) {
QUnit.test('render', function(assert) {
assert.expect(1);
var view = new Backbone.View;
assert.equal(view.render(), view, '#render returns the view instance');
});
QUnit.test("delegateEvents", function(assert) {
QUnit.test('delegateEvents', function(assert) {
assert.expect(6);
var counter1 = 0, counter2 = 0;
@@ -87,7 +87,7 @@
assert.equal(counter2, 3);
});
QUnit.test("delegate", function(assert) {
QUnit.test('delegate', function(assert) {
assert.expect(3);
var view = new Backbone.View({el: '#testElement'});
view.delegate('click', 'h1', function() {
@@ -101,7 +101,7 @@
assert.equal(view.delegate(), view, '#delegate returns the view instance');
});
QUnit.test("delegateEvents allows functions for callbacks", function(assert) {
QUnit.test('delegateEvents allows functions for callbacks', function(assert) {
assert.expect(3);
var view = new Backbone.View({el: '<p></p>'});
view.counter = 0;
@@ -125,14 +125,14 @@
});
QUnit.test("delegateEvents ignore undefined methods", function(assert) {
QUnit.test('delegateEvents ignore undefined methods', function(assert) {
assert.expect(0);
var view = new Backbone.View({el: '<p></p>'});
view.delegateEvents({'click': 'undefinedMethod'});
view.$el.trigger('click');
});
QUnit.test("undelegateEvents", function(assert) {
QUnit.test('undelegateEvents', function(assert) {
assert.expect(7);
var counter1 = 0, counter2 = 0;
@@ -160,7 +160,7 @@
assert.equal(view.undelegateEvents(), view, '#undelegateEvents returns the view instance');
});
QUnit.test("undelegate", function(assert) {
QUnit.test('undelegate', function(assert) {
assert.expect(1);
view = new Backbone.View({el: '#testElement'});
view.delegate('click', function() { assert.ok(false); });
@@ -174,7 +174,7 @@
assert.equal(view.undelegate(), view, '#undelegate returns the view instance');
});
QUnit.test("undelegate with passed handler", function(assert) {
QUnit.test('undelegate with passed handler', function(assert) {
assert.expect(1);
view = new Backbone.View({el: '#testElement'});
var listener = function() { assert.ok(false); };
@@ -184,7 +184,7 @@
view.$el.trigger('click');
});
QUnit.test("undelegate with selector", function(assert) {
QUnit.test('undelegate with selector', function(assert) {
assert.expect(2);
view = new Backbone.View({el: '#testElement'});
view.delegate('click', function() { assert.ok(true); });
@@ -194,7 +194,7 @@
view.$el.trigger('click');
});
QUnit.test("undelegate with handler and selector", function(assert) {
QUnit.test('undelegate with handler and selector', function(assert) {
assert.expect(2);
view = new Backbone.View({el: '#testElement'});
view.delegate('click', function() { assert.ok(true); });
@@ -205,7 +205,7 @@
view.$el.trigger('click');
});
QUnit.test("tagName can be provided as a string", function(assert) {
QUnit.test('tagName can be provided as a string', function(assert) {
assert.expect(1);
var View = Backbone.View.extend({
tagName: 'span'
@@ -214,7 +214,7 @@
assert.equal(new View().el.tagName, 'SPAN');
});
QUnit.test("tagName can be provided as a function", function(assert) {
QUnit.test('tagName can be provided as a function', function(assert) {
assert.expect(1);
var View = Backbone.View.extend({
tagName: function() {
@@ -225,7 +225,7 @@
assert.ok(new View().$el.is('p'));
});
QUnit.test("_ensureElement with DOM node el", function(assert) {
QUnit.test('_ensureElement with DOM node el', function(assert) {
assert.expect(1);
var View = Backbone.View.extend({
el: document.body
@@ -234,25 +234,25 @@
assert.equal(new View().el, document.body);
});
QUnit.test("_ensureElement with string el", function(assert) {
QUnit.test('_ensureElement with string el', function(assert) {
assert.expect(3);
var View = Backbone.View.extend({
el: "body"
el: 'body'
});
assert.strictEqual(new View().el, document.body);
View = Backbone.View.extend({
el: "#testElement > h1"
el: '#testElement > h1'
});
assert.strictEqual(new View().el, $("#testElement > h1").get(0));
assert.strictEqual(new View().el, $('#testElement > h1').get(0));
View = Backbone.View.extend({
el: "#nonexistent"
el: '#nonexistent'
});
assert.ok(!new View().el);
});
QUnit.test("with className and id functions", function(assert) {
QUnit.test('with className and id functions', function(assert) {
assert.expect(2);
var View = Backbone.View.extend({
className: function() {
@@ -267,11 +267,11 @@
assert.strictEqual(new View().el.id, 'id');
});
QUnit.test("with attributes", function(assert) {
QUnit.test('with attributes', function(assert) {
assert.expect(2);
var View = Backbone.View.extend({
attributes: {
id: 'id',
'id': 'id',
'class': 'class'
}
});
@@ -280,7 +280,7 @@
assert.strictEqual(new View().el.id, 'id');
});
QUnit.test("with attributes as a function", function(assert) {
QUnit.test('with attributes as a function', function(assert) {
assert.expect(1);
var View = Backbone.View.extend({
attributes: function() {
@@ -291,7 +291,7 @@
assert.strictEqual(new View().el.className, 'dynamic');
});
QUnit.test("should default to className/id properties", function(assert) {
QUnit.test('should default to className/id properties', function(assert) {
assert.expect(4);
var View = Backbone.View.extend({
className: 'backboneClass',
@@ -309,7 +309,7 @@
assert.strictEqual(view.$el.attr('id'), 'backboneId');
});
QUnit.test("multiple views per element", function(assert) {
QUnit.test('multiple views per element', function(assert) {
assert.expect(3);
var count = 0;
var $el = $('<p></p>');
@@ -324,24 +324,24 @@
});
var view1 = new View;
$el.trigger("click");
$el.trigger('click');
assert.equal(1, count);
var view2 = new View;
$el.trigger("click");
$el.trigger('click');
assert.equal(3, count);
view1.delegateEvents();
$el.trigger("click");
$el.trigger('click');
assert.equal(5, count);
});
QUnit.test("custom events", function(assert) {
QUnit.test('custom events', function(assert) {
assert.expect(2);
var View = Backbone.View.extend({
el: $('body'),
events: {
"fake$event": function() { assert.ok(true); }
fake$event: function() { assert.ok(true); }
}
});
@@ -352,7 +352,7 @@
$('body').trigger('fake$event');
});
QUnit.test("#1048 - setElement uses provided object.", function(assert) {
QUnit.test('#1048 - setElement uses provided object.', function(assert) {
assert.expect(2);
var $el = $('body');
@@ -363,7 +363,7 @@
assert.ok(view.$el === $el);
});
QUnit.test("#986 - Undelegate before changing element.", function(assert) {
QUnit.test('#986 - Undelegate before changing element.', function(assert) {
assert.expect(1);
var button1 = $('<button></button>');
var button2 = $('<button></button>');
@@ -383,7 +383,7 @@
button2.trigger('click');
});
QUnit.test("#1172 - Clone attributes object", function(assert) {
QUnit.test('#1172 - Clone attributes object', function(assert) {
assert.expect(2);
var View = Backbone.View.extend({
attributes: {foo: 'bar'}
@@ -396,7 +396,7 @@
assert.ok(!view2.el.id);
});
QUnit.test("views stopListening", function(assert) {
QUnit.test('views stopListening', function(assert) {
assert.expect(0);
var View = Backbone.View.extend({
initialize: function() {
@@ -415,11 +415,11 @@
view.collection.trigger('x');
});
QUnit.test("Provide function for el.", function(assert) {
QUnit.test('Provide function for el.', function(assert) {
assert.expect(2);
var View = Backbone.View.extend({
el: function() {
return "<p><a></a></p>";
return '<p><a></a></p>';
}
});
@@ -428,7 +428,7 @@
assert.ok(view.$el.has('a'));
});
QUnit.test("events passed in options", function(assert) {
QUnit.test('events passed in options', function(assert) {
assert.expect(1);
var counter = 0;
@@ -449,7 +449,7 @@
assert.equal(counter, 2);
});
QUnit.test("remove", function(assert) {
QUnit.test('remove', function(assert) {
assert.expect(2);
var view = new Backbone.View;
document.body.appendChild(view.el);
@@ -465,7 +465,7 @@
assert.notEqual(view.el.parentNode, document.body);
});
QUnit.test("setElement", function(assert) {
QUnit.test('setElement', function(assert) {
assert.expect(3);
var view = new Backbone.View({
events: {

View File

@@ -67,11 +67,7 @@
var tricks = [
{length: '5'},
{
length: {
valueOf: _.constant(5)
}
},
{length: {valueOf: _.constant(5)}},
{length: Math.pow(2, 53) + 1},
{length: Math.pow(2, 53)},
{length: null},

View File

@@ -90,7 +90,8 @@
});
QUnit.test('bindAll', function(assert) {
var curly = {name: 'curly'}, moe = {
var curly = {name: 'curly'};
var moe = {
name: 'moe',
getName: function() { return 'name: ' + this.name; },
sayHi: function() { return 'hi: ' + this.name; }

View File

@@ -842,14 +842,14 @@
assert.ok(_.find(stooges, _.matcher({hair: false})) === curly, 'returns a predicate that can be used by finding functions.');
assert.ok(_.find(stooges, _.matcher(moe)) === moe, 'can be used to locate an object exists in a collection.');
assert.deepEqual(_.where([null, void 0], {a: 1}), [], 'Do not throw on null values.');
assert.deepEqual(_.filter([null, void 0], _.matcher({a: 1})), [], 'Do not throw on null values.');
assert.deepEqual(_.where([null, void 0], null), [null, void 0], 'null matches null');
assert.deepEqual(_.where([null, void 0], {}), [null, void 0], 'null matches {}');
assert.deepEqual(_.where([{b: 1}], {a: void 0}), [], 'handles undefined values (1683)');
assert.deepEqual(_.filter([null, void 0], _.matcher(null)), [null, void 0], 'null matches null');
assert.deepEqual(_.filter([null, void 0], _.matcher({})), [null, void 0], 'null matches {}');
assert.deepEqual(_.filter([{b: 1}], _.matcher({a: void 0})), [], 'handles undefined values (1683)');
_.each([true, 5, NaN, null, void 0], function(item) {
assert.deepEqual(_.where([{a: 1}], item), [{a: 1}], 'treats primitives as empty');
assert.equal(_.matcher(item)({a: 1}), true, 'treats primitives as empty');
});
function Prototest() {}

View File

@@ -22,16 +22,14 @@
var ArrayProto = Array.prototype, ObjProto = Object.prototype;
// Create quick reference variables for speed access to core prototypes.
var
push = ArrayProto.push,
var push = ArrayProto.push,
slice = ArrayProto.slice,
toString = ObjProto.toString,
hasOwnProperty = ObjProto.hasOwnProperty;
// All **ECMAScript 5** native function implementations that we hope to use
// are declared here.
var
nativeIsArray = Array.isArray,
var nativeIsArray = Array.isArray,
nativeKeys = Object.keys,
nativeCreate = Object.create;