diff --git a/app/controllers/members_controller.rb b/app/controllers/members_controller.rb index c49a9d77a..fa659a3ea 100644 --- a/app/controllers/members_controller.rb +++ b/app/controllers/members_controller.rb @@ -38,8 +38,7 @@ def unsubscribe session[:member_id] = member.id authenticate_member! - - redirect_to subscriptions_path + redirect_to subscriptions_path unless performed? rescue StandardError redirect_to root_path, notice: 'Your token is invalid. ' end diff --git a/spec/controllers/members_controller_spec.rb b/spec/controllers/members_controller_spec.rb index d54c3fc5e..ab236da23 100644 --- a/spec/controllers/members_controller_spec.rb +++ b/spec/controllers/members_controller_spec.rb @@ -6,6 +6,13 @@ expect(response).to redirect_to(subscriptions_path) end + it 'does not render twice when the member has incomplete details' do + member = Fabricate.build(:member, about_you: nil) + member.save(validate: false) + get :unsubscribe, params: { token: member_token(member) } + expect(response).to redirect_to(edit_member_details_path) + end + it 'redirects to the root path when token is invalid' do get :unsubscribe, params: { token: 'foo' } expect(response).to redirect_to(root_path)