Howto test RJS templates?

Hi,

The following code works, but I don't know how to test ist properly:

In the view there is a simple link_to_remote:

<div id="create">     <%= link_to_remote "Create New", :url => new_category_url %> </div>

Essentially, when I click on this link the "div" box gets hidden with a

page.hide "create"

How do I test this? I have so far the following test:

class CreateCategoriesTest < ActionController::IntegrationTest   def test_create_category       get 'categories'       assert_select "#create", "Create New"       xml_http_request new_category_path       assert_response :success       # ???   end end

How can I test, that the "#create" element is hidden?

TIA and regards,      chris

Using standard ruby functional tests, you can only check tht the correct signal was sent to the server to hide the "#create" element.

  If you want to test, in the browser, that the element is really hidden, then you'll need to use a browser-oriented testing framework like Selenium.

  Cheers,     Tyler

Well, there are steps available to help test RJS, but there is no be-all end-all testing solution, because in the end it is javascript and you can’t run it.

Check out:

ARTS: http://glu.ttono.us/articles/2006/05/29/guide-test-driven-rjs-with-arts

There’s also #assert_select_rjs if you’re on Rails 1.2+, but I’m not sure how to really use this: http://api.rubyonrails.org/classes/ActionController/Assertions/SelectorAssertions.html#M000209

As an example. your simple one-line RJS is testable in ARTS:

assert_rjs :hide, ‘create’

In the end, if you want to fully test your javascript interactions, you’ll need a browser testing solution like Selenium, or lighter-weight Systir + Watir ( http://atomicobject.com/pages/System+Testing+in+Ruby)

Jason