From afe77925bad4e542a7e3fcc17c8ee962eeb72bf5 Mon Sep 17 00:00:00 2001 From: Rob Harrington Date: Fri, 17 Apr 2015 10:21:25 +1000 Subject: [PATCH] Allow request to specify a return value when calling user_passwords#edit --- app/controllers/user_passwords_controller.rb | 8 ++++++ .../user_passwords_controller_spec.rb | 25 +++++++++++++------ 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/app/controllers/user_passwords_controller.rb b/app/controllers/user_passwords_controller.rb index ed3be07f35..1870cc8859 100644 --- a/app/controllers/user_passwords_controller.rb +++ b/app/controllers/user_passwords_controller.rb @@ -1,6 +1,8 @@ class UserPasswordsController < Spree::UserPasswordsController layout 'darkswarm' + before_filter :set_admin_redirect, only: :edit + def create self.resource = resource_class.send_reset_password_instructions(params[resource_name]) @@ -18,4 +20,10 @@ class UserPasswordsController < Spree::UserPasswordsController end end end + + private + + def set_admin_redirect + session["spree_user_return_to"] = params[:return_to] if params[:return_to] + end end diff --git a/spec/controllers/user_passwords_controller_spec.rb b/spec/controllers/user_passwords_controller_spec.rb index 25c285e09b..686d46656e 100644 --- a/spec/controllers/user_passwords_controller_spec.rb +++ b/spec/controllers/user_passwords_controller_spec.rb @@ -9,15 +9,26 @@ describe UserPasswordsController do ActionMailer::Base.default_url_options[:host] = "test.host" end - it "returns errors" do - spree_post :create, spree_user: {} - response.should be_success - response.should render_template "spree/user_passwords/new" + describe "create" do + it "returns errors" do + spree_post :create, spree_user: {} + response.should be_success + response.should render_template "spree/user_passwords/new" + end + + it "redirects to login when data is valid" do + spree_post :create, spree_user: { email: user.email} + response.should be_redirect + end end - it "redirects to login when data is valid" do - spree_post :create, spree_user: { email: user.email} - response.should be_redirect + describe "edit" do + context "when given a redirect" do + it "stores the redirect path in 'spree_user_return_to'" do + spree_post :edit, reset_password_token: "token", return_to: "/return_path" + expect(session["spree_user_return_to"]).to eq "/return_path" + end + end end it "renders Darkswarm" do