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.
