Update vendor/backbone to 1.2.1.

This commit is contained in:
jdalton
2015-06-04 19:27:19 -07:00
parent 7a9011c7e1
commit 9e1f68d9eb
6 changed files with 229 additions and 128 deletions

View File

@@ -298,17 +298,13 @@
deepEqual(col.pluck('id'), [1, 2, 3]);
});
test("remove", 7, function() {
test("remove", 10, function() {
var removed = null;
var otherRemoved = null;
var result = null;
col.on('remove', function(model, col, options) {
removed = model.get('label');
equal(options.index, 3);
});
otherCol.on('remove', function(model, col, options) {
otherRemoved = true;
});
result = col.remove(d);
equal(removed, 'd');
strictEqual(result, d);
@@ -317,7 +313,13 @@
strictEqual(result, undefined);
equal(col.length, 3);
equal(col.first(), a);
equal(otherRemoved, null);
col.off();
result = col.remove([c, d]);
equal(result.length, 1, 'only returns removed models');
equal(result[0], c, 'only returns removed models');
result = col.remove([c, b]);
equal(result.length, 1, 'only returns removed models');
equal(result[0], b, 'only returns removed models');
});
test("add and remove return values", 13, function() {
@@ -559,6 +561,20 @@
});
test("create with wait:true should not call collection.parse", 0, function() {
var Collection = Backbone.Collection.extend({
url: '/test',
parse: function () {
ok(false);
}
});
var collection = new Collection;
collection.create({}, {wait: true});
this.ajaxSettings.success();
});
test("a failing create returns model with errors", function() {
var ValidatingModel = Backbone.Model.extend({
validate: function(attrs) {
@@ -1605,4 +1621,19 @@
collection.set([{id: 1}, {id: 2}]);
});
test("#3610 - invoke collects arguments", 3, function() {
var Model = Backbone.Model.extend({
method: function(a, b, c) {
equal(a, 1);
equal(b, 2);
equal(c, 3);
}
});
var Collection = Backbone.Collection.extend({
model: Model
});
var collection = new Collection([{id: 1}]);
collection.invoke('method', 1, 2, 3);
});
})();

View File

@@ -66,6 +66,24 @@
equal(obj.counter, 5);
});
test("binding and trigger with event maps context", 2, function() {
var obj = { counter: 0 };
var context = {};
_.extend(obj, Backbone.Events);
obj.on({
a: function() {
strictEqual(this, context, 'defaults `context` to `callback` param');
}
}, context).trigger('a');
obj.off().on({
a: function() {
strictEqual(this, context, 'will not override explicit `context` param');
}
}, this, context).trigger('a');
});
test("listenTo and stopListening", 1, function() {
var a = _.extend({}, Backbone.Events);
var b = _.extend({}, Backbone.Events);

View File

@@ -550,6 +550,21 @@
model.destroy(options);
});
test("#3470 - save and fetch with parse false", 2, function() {
var i = 0;
var model = new Backbone.Model();
model.parse = function() {
ok(false);
};
model.sync = function(method, model, options) {
options.success({i: ++i});
};
model.fetch({parse: false});
equal(model.get('i'), i);
model.save(null, {parse: false});
equal(model.get('i'), i);
});
test("save with PATCH", function() {
doc.clear().set({id: 1, a: 1, b: 2, c: 3, d: 4});
doc.save();

View File

@@ -918,7 +918,7 @@
test('#3358 - pushState to hashChange transition with search params', 1, function() {
Backbone.history.stop();
location.replace('/root?foo=bar');
location.replace('http://example.com/root?foo=bar');
location.replace = function(url) {
strictEqual(url, '/root#?foo=bar');
};

View File

@@ -48,6 +48,11 @@
strictEqual(new View().one, 1);
});
test("render", 1, function() {
var view = new Backbone.View;
equal(view.render(), view, '#render returns the view instance');
});
test("delegateEvents", 6, function() {
var counter1 = 0, counter2 = 0;
@@ -72,7 +77,7 @@
equal(counter2, 3);
});
test("delegate", 2, function() {
test("delegate", 3, function() {
var view = new Backbone.View({el: '#testElement'});
view.delegate('click', 'h1', function() {
ok(true);
@@ -81,6 +86,8 @@
ok(true);
});
view.$('h1').trigger('click');
equal(view.delegate(), view, '#delegate returns the view instance');
});
test("delegateEvents allows functions for callbacks", 3, function() {
@@ -112,7 +119,7 @@
view.$el.trigger('click');
});
test("undelegateEvents", 6, function() {
test("undelegateEvents", 7, function() {
var counter1 = 0, counter2 = 0;
var view = new Backbone.View({el: '#testElement'});
@@ -135,9 +142,11 @@
view.$('h1').trigger('click');
equal(counter1, 2);
equal(counter2, 3);
equal(view.undelegateEvents(), view, '#undelegateEvents returns the view instance');
});
test("undelegate", 0, function() {
test("undelegate", 1, function() {
view = new Backbone.View({el: '#testElement'});
view.delegate('click', function() { ok(false); });
view.delegate('click', 'h1', function() { ok(false); });
@@ -146,6 +155,8 @@
view.$('h1').trigger('click');
view.$el.trigger('click');
equal(view.undelegate(), view, '#undelegate returns the view instance');
});
test("undelegate with passed handler", 1, function() {
@@ -387,14 +398,14 @@
equal(counter, 2);
});
test("remove", 1, function() {
test("remove", 2, function() {
var view = new Backbone.View;
document.body.appendChild(view.el);
view.delegate('click', function() { ok(false); });
view.listenTo(view, 'all x', function() { ok(false); });
view.remove();
equal(view.remove(), view, '#remove returns the view instance');
view.$el.trigger('click');
view.trigger('x');
@@ -402,4 +413,25 @@
notEqual(view.el.parentNode, document.body);
});
test("setElement", 3, function() {
var view = new Backbone.View({
events: {
click: function() { ok(false); }
}
});
view.events = {
click: function() { ok(true); }
};
var oldEl = view.el;
var $oldEl = view.$el;
view.setElement(document.createElement('div'));
$oldEl.click();
view.$el.click();
notEqual(oldEl, view.el);
notEqual($oldEl, view.$el);
});
})();