Ashley Moran
2007-Aug-21 09:07 UTC
[rspec-users] Render template not matching absolute path
Hi
I have a simple controller method like this:
class StylesheetsController < ApplicationController
layout nil
session :off
def gap
site = Site.find_by_hostname(request.host)
@colours = site.colours
respond_to do |accepts|
accepts.css { render :file => "#{RAILS_ROOT}/app/views/
stylesheets/gap.rcss" }
end
end
end
And I want to test that it renders the gap.rcss file, but my spec,
it "should render the gap.rcss template" do
do_get
response.should render_template("gap.rcss")
end
fails with this error:
Expected "gap.rcss", got
"/Users/ashleymoran/Documents/Development/
YourMoney/trunk/src/config/../app/views/stylesheets/gap.rcss"
I don''t remember this failing in 1.0.5, but it''s been a while
since I
worked on this project so might be just be my bad memory. Am I doing
something wrong or can you not spec "render :file" with
render_template?
Thanks
Ashley
David Chelimsky
2007-Aug-21 13:26 UTC
[rspec-users] Render template not matching absolute path
On 8/21/07, Ashley Moran <work at ashleymoran.me.uk> wrote:> Hi > > I have a simple controller method like this: > > class StylesheetsController < ApplicationController > layout nil > session :off > > def gap > site = Site.find_by_hostname(request.host) > @colours = site.colours > respond_to do |accepts| > accepts.css { render :file => "#{RAILS_ROOT}/app/views/ > stylesheets/gap.rcss" } > end > end > end > > And I want to test that it renders the gap.rcss file, but my spec, > > it "should render the gap.rcss template" do > do_get > response.should render_template("gap.rcss") > end > > fails with this error: > > Expected "gap.rcss", got "/Users/ashleymoran/Documents/Development/ > YourMoney/trunk/src/config/../app/views/stylesheets/gap.rcss" > > I don''t remember this failing in 1.0.5, but it''s been a while since I > worked on this project so might be just be my bad memory. Am I doing > something wrong or can you not spec "render :file" with render_template?This changed in 1.0.0, but not since. Take a look at render_template.rb. render_template supports either a file name, in which case it prepends the controller-based path (i.e. if the controller is ''foo'' and you say ''bar'', it will match ''foo/bar''), or a path. In either case it matches against response.rendered_file - it does not do any real path resolution - it''s just matching strings. HTH, David> > Thanks > Ashley > > > > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users >