Test Driven RJS with “ARTS: Another RJS Testing System”

Kevin Clark looked at his options for testing his RJS (Javascript templates for Rails) templates but wasn't happy with the limited options, so he rolled his own testing system as a Rails plugin. It's called ARTS (Another RJS Testing System) and is available here. It's pretty neat, and if your app uses a lot of RJS templates, you're going to want it. Here's an example of a test using ARTS:

def test_create_rjsxhr:post,:create,:post=>{:title=>"Yet Another Post",:body=>"This is yet another post"}assert_rjs:insert_html,:bottom,'posts'assert_rjs:visual_effect,:highlight,"post_#{assigns(:post).id}"end

Here are some general examples of how powerful it is:

assert_rjs:alert,'Hi!'assert_rjs:assign,'a','2'assert_rjs:call,'foo','bar','baz'assert_rjs:draggable,'draggable_item'assert_rjs:drop_receiving,'receiving_item'assert_rjs:hide,"post_1","post_2","post_3"assert_rjs:insert_html,:bottom,'posts',"Here's text from insert_html"assert_rjs:redirect_to,:action=>'list'assert_rjs:remove,"post_1","post_2","post_3"assert_rjs:replace,:bottom,'This is something to replace'assert_rjs:replace_html,"This is something for replace_html"assert_rjs:show,"post_1","post_2","post_3"assert_rjs:sortable,'sortable_item'assert_rjs:toggle,"post_1","post_2","post_3"assert_rjs:visual_effect,:highlight,"posts",:duration=>'1.0'