Skip to content

Commit

Permalink
Merge pull request #3076 from bdvholmes/bug/3067
Browse files Browse the repository at this point in the history
Rely on active model serializer to handle error logic
  • Loading branch information
fivetanley committed May 18, 2015
2 parents 22b0576 + 17a2a18 commit 1f2ed3f
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -142,9 +142,7 @@ var ActiveModelAdapter = RESTAdapter.extend({

if (jqXHR && jqXHR.status === 422) {
var response = Ember.$.parseJSON(jqXHR.responseText);
var errors = response.errors ? response.errors : response;

return new InvalidError(errors);
return new InvalidError(response);
} else {
return error;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
var env, store, adapter, User;
var originalAjax;

module("integration/active_model_adapter_serializer - AMS Adapter and Serializer", {
setup: function() {
originalAjax = Ember.$.ajax;

User = DS.Model.extend({
firstName: DS.attr()
});

env = setupStore({
user: User,
adapter: DS.ActiveModelAdapter
});

store = env.store;
adapter = env.adapter;

env.registry.register('serializer:application', DS.ActiveModelSerializer);
},

teardown: function() {
Ember.$.ajax = originalAjax;
}
});

test('errors are camelCased and are expected under the `errors` property of the payload', function() {
var jqXHR = {
status: 422,
responseText: JSON.stringify({
errors: {
first_name: ["firstName error"]
}
})
};

Ember.$.ajax = function(hash) {
hash.error(jqXHR);
};

var user;
Ember.run(function() {
user = store.push('user', { id: 1 });
});

Ember.run(function() {
user.save().then(null, function() {
var errors = user.get('errors');
ok(errors.has('firstName'), "there are errors for the firstName attribute");
deepEqual(errors.errorsFor('firstName').getEach('message'), ['firstName error']);
});
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -21,25 +21,13 @@ test('buildURL - decamelizes names', function() {
});

test('ajaxError - returns invalid error if 422 response', function() {
var error = new DS.InvalidError({ name: "can't be blank" });

var jqXHR = {
status: 422,
responseText: JSON.stringify({ errors: { name: "can't be blank" } })
};

equal(adapter.ajaxError(jqXHR), error.toString());
});

test('ajaxError - accepts any kind of json on 422', function() {
var error = new DS.InvalidError({ name: "can't be blank" });

var jqXHR = {
status: 422,
responseText: JSON.stringify({ name: "can't be blank" })
};

equal(adapter.ajaxError(jqXHR), error.toString());
equal(adapter.ajaxError(jqXHR).errors.name, "can't be blank");
});

test('ajaxError - returns ajax response if not 422 response', function() {
Expand Down

0 comments on commit 1f2ed3f

Please sign in to comment.