Hi there,

I've been getting into RSpec recently and I must say what a fantastic  
product I think it is.  But, I've hit a bit of a problem.  In my  
ApplicationHelper I have a method which changes the view_paths in a  
controller so a partial can be rendered from a different base  
directory.  It simply takes an array of view_paths that a partial  
could be in, updates the view_paths for the controller doing the  
initial rendering, does the rendering, then removes the paths at the  
end.  Here's the code:

module ApplicationHelper
   def render_partial_with_alternate_view_paths(view_paths, options =  
{})
     view_path_removes = view_paths.inject([]){ |rp, path|  
self.view_paths.include?(path) ? rp : rp.push(path) }
     self.view_paths = self.view_paths + view_path_removes
     returning render( options ) do
       self.view_paths = self.view_paths - view_path_removes
     end
   end
end

I've tried writing specifications for this in the helper, the view  
and the controller parts, but get different errors each time.  the  
closest I've managed to get so far is:

   it "should render a partial from a path in the supplied view_paths  
and leave view_paths the same afterwards" do
     options = {:partial => 'application/pod', :locals => {:the_value  
=> "sent value"}, :layout => 'application/layout' }
     original_paths = ["/path/to/rails_app/app/views"]
     extra_paths = ["/path/to/rails_app/spec/views"]
     all_paths = original_paths + extra_paths
     self.should_receive(:view_paths).and_return(original_paths,  
original_paths, all_paths)
     self.should_receive(:view_paths=).with(all_paths).once.ordered
     self.should_receive(:view_paths=).with(original_paths).once.ordered
     self.should_receive(:render)
     render_partial_with_alternate_view_paths(extra_paths, options)
   end

I've put this code in a helper spec, but I can't check what the  
partial has rendered.  I'm really confused and can't work out where  
the spec should go and what bits should be mocked out and how.

Any help would be gratefully appreciated.

Thanks,

Ant
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to