Template.expect_render fails when partial is rendered from a helper

My spec;

describe ‘subnav rendering while logged in’ do

before do
  template.stub!(:logged_in?).and_return(true)
  template.stub!

(:current_profile).at_least(:once).and_return(mock_profile)
end

def do_render
  render "/homepages/show.html.erb"
end

it "should render the logged in partial for homepages" do
  template.expect_render(:partial => 'shared/subnav/home', :locals

=> {:active => :home})
do_render
end

end

passes if I render the partial directly in the view,

render :partial => ‘shared/subnav/home’, :locals => {:active => :home}

but it fails if the partial is rendered by a helper;

module ApplicationHelper
def subnav(partial, args={})
active = args[:active] || :no_highlight
if partial == :home
partial = (logged_in? ? ‘home’ : ‘login’)
end
render :partial => “shared/subnav/#{partial}”, :locals => {:active
=> active}
end
end

Is there any way to check whether the helper renders it?

Is this expected behaviour?

On Fri, Aug 8, 2008 at 3:46 PM, J2M [email protected] wrote:

def do_render

 partial = (logged_in? ? 'home' : 'login')

end
render :partial => “shared/subnav/#{partial}”, :locals => {:active
=> active}
end
end

Is there any way to check whether the helper renders it?

If the code in the subnav method is resulting in what you are assuming
it is, this should work. I’d try putting exactly the same code (with
everything hard coded and no conditional logic) in the subnav method
and see if you get the same result. If you get an error, please copy
the error in your response.

Cheers,
David