Howto test RJS templates?


#1

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:

|


| <%= link_to_remote “Create New”, :url => new_category_url %>
|

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


#2

Christian M. removed_email_address@domain.invalid wrote:

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

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


#3

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