On 26/02/2009, at 11:25 AM, David Chelimsky wrote:
On Thu, Feb 26, 2009 at 10:01 AM, Evgeny Bogdanov
<evgeny.bogda...@gmail.com> wrote:
Could somebody please explain me what I am doing wrong.
I am trying to spec create.rjs file, that is returned from my
controller.
render_template("create.rjs") works just fine,
however have_rjs fails with the following error:
'CommentsController while posting a comment renders a create.rjs
template when comment is successfully created in ajax request' FAILED
No RJS statement that replaces or inserts HTML content.
Thank you!
Evgeny
=====controller
def create
@comment.save
respond_to do |format|
format.js
end
end
=====create.rjs
comment_id = "comment_"+...@comment.id.to_s
page['add_comment'].hide
page.insert_html :top, 'comments_list', :partial => "comments/
comment", :locals => {:comment => @comment, :item => @item}
page.visual_effect :highlight, comment_id, :duration => 1
=====spec file
it "renders a create.rjs template when comment is successfully
created in ajax request" do
request.env["HTTP_ACCEPT"] = "application/javascript"
post :create, :item_id => 1, :item_type => "Space", :comment =>
{:content => "text"}
response.should render_template("create")
response.should have_rjs
end
Controller specs, by default, do not render templates. If you want to
specify the contents of a template from your controller spec, tell it
to integrate_views (hmmm - maybe we should change that to
render_views???)
describe MyController do
integrate_views
it "does something" do
...
end
end
HTH,
David
I'd say it's a matter of perspective. The name "integrate_views" is
suitable from the perspective of the views being integrated into the
execution stack. The name "renders_views" is suitable from the
perspective of identifying that a controller example group renders its
views.
-Nick
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users