Skip to content
Extraits de code Groupes Projets
Valider 6c5c865b rédigé par Steffen van Bergerem's avatar Steffen van Bergerem Validation de Benjamin Neff
Parcourir les fichiers

Use error message from the server when reshare failed

parent 8078c60c
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -123,8 +123,8 @@ app.models.Post.Interactions = Backbone.Model.extend({ ...@@ -123,8 +123,8 @@ app.models.Post.Interactions = Backbone.Model.extend({
interactions.set({"reshares_count": interactions.get("reshares_count") + 1}); interactions.set({"reshares_count": interactions.get("reshares_count") + 1});
interactions.reshares.trigger("change"); interactions.reshares.trigger("change");
}) })
.fail(function(){ .fail(function(response) {
app.flashMessages.error(Diaspora.I18n.t("reshares.duplicate")); app.flashMessages.handleAjaxError(response);
}); });
app.instrument("track", "Reshare"); app.instrument("track", "Reshare");
......
...@@ -98,8 +98,12 @@ ...@@ -98,8 +98,12 @@
success: function() { success: function() {
Diaspora.Mobile.PostActions.toggleActive(link); Diaspora.Mobile.PostActions.toggleActive(link);
}, },
error: function() { error: function(response) {
alert(Diaspora.I18n.t("failed_to_reshare")); if (response.status === 0) {
alert(Diaspora.I18n.t("errors.connection"));
} else {
alert(response.responseText);
}
}, },
complete: function() { complete: function() {
Diaspora.Mobile.PostActions.hideLoader(link); Diaspora.Mobile.PostActions.hideLoader(link);
......
...@@ -14,7 +14,7 @@ class ResharesController < ApplicationController ...@@ -14,7 +14,7 @@ class ResharesController < ApplicationController
current_user.dispatch_post(@reshare) current_user.dispatch_post(@reshare)
render :json => ExtremePostPresenter.new(@reshare, current_user), :status => 201 render :json => ExtremePostPresenter.new(@reshare, current_user), :status => 201
else else
render :nothing => true, :status => 422 render text: I18n.t("javascripts.failed_to_reshare"), status: 422
end end
end end
......
...@@ -199,7 +199,6 @@ en: ...@@ -199,7 +199,6 @@ en:
hide: "Hide comments" hide: "Hide comments"
no_comments: "There are no comments yet." no_comments: "There are no comments yet."
reshares: reshares:
duplicate: "That good, eh? You’ve already reshared that post!"
successful: "The post was successfully reshared!" successful: "The post was successfully reshared!"
post: "Reshare <%= name %>’s post?" post: "Reshare <%= name %>’s post?"
aspect_navigation: aspect_navigation:
......
...@@ -46,7 +46,7 @@ describe ResharesController, :type => :controller do ...@@ -46,7 +46,7 @@ describe ResharesController, :type => :controller do
it 'doesn\'t allow the user to reshare the post again' do it 'doesn\'t allow the user to reshare the post again' do
post_request! post_request!
expect(response.code).to eq('422') expect(response.code).to eq('422')
expect(response.body.strip).to be_empty expect(response.body).to eq(I18n.t("javascripts.failed_to_reshare"))
end end
end end
......
...@@ -6,6 +6,8 @@ describe("app.models.Post.Interactions", function(){ ...@@ -6,6 +6,8 @@ describe("app.models.Post.Interactions", function(){
this.interactions = this.post.interactions; this.interactions = this.post.interactions;
this.author = factory.author({guid: "loggedInAsARockstar"}); this.author = factory.author({guid: "loggedInAsARockstar"});
loginAs({guid: "loggedInAsARockstar"}); loginAs({guid: "loggedInAsARockstar"});
spec.content().append($("<div id='flash-container'>"));
app.flashMessages = new app.views.FlashMessages({el: spec.content().find("#flash-container")});
this.userLike = new app.models.Like({author : this.author}); this.userLike = new app.models.Like({author : this.author});
}); });
...@@ -110,6 +112,16 @@ describe("app.models.Post.Interactions", function(){ ...@@ -110,6 +112,16 @@ describe("app.models.Post.Interactions", function(){
jasmine.Ajax.requests.mostRecent().respondWith(ajaxSuccess); jasmine.Ajax.requests.mostRecent().respondWith(ajaxSuccess);
expect(this.post.get("participation")).toBeTruthy(); expect(this.post.get("participation")).toBeTruthy();
}); });
it("displays a flash message on errors", function() {
spyOn(app.flashMessages, "handleAjaxError").and.callThrough();
this.interactions.reshare();
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("userLike", function(){ describe("userLike", function(){
......
...@@ -223,10 +223,16 @@ describe("Diaspora.Mobile.PostActions", function(){ ...@@ -223,10 +223,16 @@ describe("Diaspora.Mobile.PostActions", function(){
expect(Diaspora.Mobile.PostActions.toggleActive).toHaveBeenCalledWith(this.reshareLink); expect(Diaspora.Mobile.PostActions.toggleActive).toHaveBeenCalledWith(this.reshareLink);
}); });
it("pops an alert on error", function(){ it("pops an alert on server errors", function() {
this.reshareLink.click(); this.reshareLink.click();
jasmine.Ajax.requests.mostRecent().respondWith({status: 400}); jasmine.Ajax.requests.mostRecent().respondWith({status: 400, responseText: "reshare failed"});
expect(window.alert).toHaveBeenCalledWith(Diaspora.I18n.t("failed_to_reshare")); expect(window.alert).toHaveBeenCalledWith("reshare failed");
});
it("pops an alert on network errors", function() {
this.reshareLink.click();
jasmine.Ajax.requests.mostRecent().abort();
expect(window.alert).toHaveBeenCalledWith(Diaspora.I18n.t("errors.connection"));
}); });
}); });
}); });
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter