fix for wrapped errors inside success callbacks on save, issue #690

This commit is contained in:
Alex Graul
2011-10-29 15:51:41 -04:00
parent 567e0a3c2d
commit 970ce0762c
2 changed files with 18 additions and 1 deletions

View File

@@ -1147,7 +1147,8 @@
// Wrap an optional error callback with a fallback error event.
var wrapError = function(onError, model, options) {
return function(resp) {
return function(first, second) {
var resp = first === model ? second : first;
if (onError) {
onError(model, resp, options);
} else {

View File

@@ -267,6 +267,22 @@ $(document).ready(function() {
model.set({lastName: 'Hicks'});
});
test("Model: validate after save", function() {
var lastError, model = new Backbone.Model();
model.validate = function(attrs) {
if (attrs.admin) return "Can't change admin status.";
};
model.sync = function(method, model, options) {
options.success.call(this, {admin: true});
};
model.save(null, {error: function(model, error) {
console.log('erroring!');
lastError = error;
}});
equals(lastError, "Can't change admin status.");
});
test("Model: save", function() {
doc.save({title : "Henry V"});
equals(lastRequest[0], 'update');