On Aug 7, 2014, at 3:30 AM, Javix <[email protected]> wrote:

> 
> 
> On Tuesday, August 5, 2014 3:49:20 PM UTC+2, Vell wrote:
> Hello all,
> 
> I am creating a rails 4.1 engine and am having trouble figuring out how to 
> test the controllers redirect action back to the main_app.root_path. I have 
> been struggling with this for a while and am hoping I can get a little 
> guidance on this.
> 
> Basically if I have a create action such as:
> 
> def create
>   @user = User.new(user_params)
>   if @user.save
>     flash[:success] = "User Saved!"
>     redirect_to main_app.root_path
>   else
>     flash[:error] = "User Not Saved! Check Errors"
>     render :new
>   end
> end
> 
> I get an error that says main_app is nil. I expect this since my spec 
> directory is in the root of my engine. How would I go about testing creating 
> a controller test where I would be able to test redirecting back to routes in 
> the main_app? This should hopefully help me with the next step of integration 
> testing as well.
> 
> Any advice is greatly appreciated.
> 
> Thanks
> 
> To test a redirect you should so smth like that(to be adapted to your 
> fixtures, or FactiryGirl or whatever you use):
> 
> it "redirects to the home page upon save" do
>   post :create, contact: FactoryGirl.attributes_for(:contact)
>   expect(response).to redirect_to root_url #or some other url
> end
> 
> 
> Sure, in your code, main_app is an undefined variable, that's why you're 
> getting Nil.
> 

I was wondring how to make it so that main_app was not nil. The error that was 
given to me by rspec made it clear that main_app was nil. I figured there had 
to be a way to access the main_app's routes that I just wasn't able to figure 
out.

This answer was given to me yesterday (since I was not able to figure this out 
myself). For those that may be interested in how this issue was solved, I 
created a macro with the following in it:

def main_app
  Rails.application.class.routes.url_helpers
end

and that allows me to get to the main_app routes for testing redirects and so 
on.


> -- 
> You received this message because you are subscribed to the Google Groups 
> "rspec" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/rspec/1d9fa996-1f2b-4a0e-883f-7c7a596c6f46%40googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"rspec" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rspec/3E5EE1C7-8D1B-4624-A1E0-A99D9F55EF17%40gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to