diff --git a/app/controllers/aspects_controller.rb b/app/controllers/aspects_controller.rb index 7913862bb0b2be102bf1fe84bb85d37a59ba7195..73b23724b002878e00de0d3eb8c83922599aa31f 100644 --- a/app/controllers/aspects_controller.rb +++ b/app/controllers/aspects_controller.rb @@ -44,14 +44,20 @@ class AspectsController < ApplicationController end def destroy - @aspect = current_user.aspects.where(:id => params[:id]).first + @aspect = current_user.aspects.where(id: params[:id]).first begin + if current_user.auto_follow_back && @aspect.id == current_user.auto_follow_back_aspect.id + current_user.update(auto_follow_back: false, auto_follow_back_aspect: nil) + flash[:notice] = I18n.t "aspects.destroy.success_auto_follow_back", name: @aspect.name + else + flash[:notice] = I18n.t "aspects.destroy.success", name: @aspect.name + end @aspect.destroy - flash[:notice] = I18n.t 'aspects.destroy.success', :name => @aspect.name rescue ActiveRecord::StatementInvalid => e - flash[:error] = I18n.t 'aspects.destroy.failure', :name => @aspect.name + flash[:error] = I18n.t "aspects.destroy.failure", name: @aspect.name end + if request.referer.include?('contacts') redirect_to contacts_path else diff --git a/config/locales/diaspora/en.yml b/config/locales/diaspora/en.yml index a0d4635eaae497ff6c57119285b1d35368be24e2..11f51b90f4dafec89456e17db40660e35b07a1d4 100644 --- a/config/locales/diaspora/en.yml +++ b/config/locales/diaspora/en.yml @@ -215,7 +215,8 @@ en: failure: "Aspect creation failed." destroy: success: "%{name} was successfully removed." - failure: "%{name} is not empty and could not be removed." + success_auto_follow_back: "%{name} was successfully removed. You used this aspect to automatically follow back users. Check your user settings to select a new auto follow back aspect." + failure: "%{name} could not be removed." update: success: "Your aspect, %{name}, has been successfully edited." failure: "Your aspect, %{name}, had too long name to be saved." diff --git a/spec/controllers/aspects_controller_spec.rb b/spec/controllers/aspects_controller_spec.rb index fa375516c3172a7142635802d3dc118612a7bc35..ea4ec0501f682bc39a8b164cad3f9dc86984e57e 100644 --- a/spec/controllers/aspects_controller_spec.rb +++ b/spec/controllers/aspects_controller_spec.rb @@ -112,6 +112,54 @@ describe AspectsController, :type => :controller do end end + describe "#destroy" do + before do + @alices_aspect_1 = alice.aspects.create(name: "Contacts") + end + + context "with no auto follow back aspect" do + it "destoys the aspect" do + expect(alice.aspects.to_a).to include @alices_aspect_1 + post :destroy, id: @alices_aspect_1.id + expect(alice.reload.aspects.to_a).not_to include @alices_aspect_1 + end + + it "renders a flash message on success" do + post :destroy, id: @alices_aspect_1.id + expect(flash[:notice]).to eq(I18n.t("aspects.destroy.success", name: @alices_aspect_1.name)) + expect(flash[:error]).to be_blank + end + end + + context "with the aspect set as auto follow back" do + before do + alice.auto_follow_back = true + alice.auto_follow_back_aspect = @alices_aspect_1 + alice.save + end + + it "destoys the aspect" do + expect(alice.aspects.to_a).to include @alices_aspect_1 + post :destroy, id: @alices_aspect_1.id + expect(alice.reload.aspects.to_a).not_to include @alices_aspect_1 + end + + it "disables auto follow back" do + expect(alice.auto_follow_back).to be(true) + expect(alice.auto_follow_back_aspect).to eq(@alices_aspect_1) + post :destroy, id: @alices_aspect_1.id + expect(alice.auto_follow_back).to be(false) + expect(alice.auto_follow_back_aspect).to eq(nil) + end + + it "renders a flash message telling you to set a new auto follow back aspect" do + post :destroy, id: @alices_aspect_1.id + expect(flash[:notice]).to eq(I18n.t("aspects.destroy.success_auto_follow_back", name: @alices_aspect_1.name)) + expect(flash[:error]).to be_blank + end + end + end + describe "#toggle_contact_visibility" do it 'sets contacts visible' do @alices_aspect_1.contacts_visible = false