Use error message from the server when like failed

This commit is contained in:
Steffen van Bergerem 2016-11-18 23:27:29 +01:00 committed by Benjamin Neff
parent 6c5c865b15
commit 82e78d3ce8
3 changed files with 13 additions and 3 deletions

View file

@ -72,8 +72,8 @@ app.models.Post.Interactions = Backbone.Model.extend({
self.set({"likes_count" : self.get("likes_count") + 1}); self.set({"likes_count" : self.get("likes_count") + 1});
self.likes.trigger("change"); self.likes.trigger("change");
}, },
error: function() { error: function(model, response) {
app.flashMessages.error(Diaspora.I18n.t("failed_to_like")); app.flashMessages.handleAjaxError(response);
} }
}); });

View file

@ -26,7 +26,7 @@ class LikesController < ApplicationController
format.json { render :json => @like.as_api_response(:backbone), :status => 201 } format.json { render :json => @like.as_api_response(:backbone), :status => 201 }
end end
else else
render :nothing => true, :status => 422 render text: I18n.t("javascripts.failed_to_like"), status: 422
end end
end end

View file

@ -49,6 +49,16 @@ describe("app.models.Post.Interactions", function(){
jasmine.Ajax.requests.mostRecent().respondWith(ajaxSuccess); jasmine.Ajax.requests.mostRecent().respondWith(ajaxSuccess);
expect(this.interactions.likes.trigger).toHaveBeenCalledWith("change"); expect(this.interactions.likes.trigger).toHaveBeenCalledWith("change");
}); });
it("displays a flash message on errors", function() {
spyOn(app.flashMessages, "handleAjaxError").and.callThrough();
this.interactions.like();
jasmine.Ajax.requests.mostRecent().respondWith({status: 400, responseText: "error message"});
expect(app.flashMessages.handleAjaxError).toHaveBeenCalled();
expect(app.flashMessages.handleAjaxError.calls.argsFor(0)[0].responseText).toBe("error message");
expect(spec.content().find(".flash-message")).toBeErrorFlashMessage("error message");
});
}); });
describe("unlike", function(){ describe("unlike", function(){