Selects content from the RJS response.
Narrowing down
With no arguments, asserts that one or more elements are updated or
inserted by RJS statements.
Use the id argument to narrow down the assertion to only
statements that update or insert an element with that identifier.
Use the first argument to narrow down assertions to only statements of that
type. Possible values are :replace, :replace_html,
:show, :hide, :toggle, :remove and
:insert_html.
Use the argument :insert followed by an insertion position to
narrow down the assertion to only statements that insert elements in that
position. Possible values are :top, :bottom,
:before and :after.
Using the :remove statement, you will be able to pass a block, but
it will be ignored as there is no HTML passed for this statement.
Using blocks
Without a block, assert_select_rjs merely
asserts that the response contains one or more RJS statements that replace
or update content.
With a block, assert_select_rjs also
selects all elements used in these statements and passes them to the block.
Nested assertions are supported.
Calling assert_select_rjs with no
arguments and using nested asserts asserts that the HTML content is
returned by one or more RJS statements. Using assert_select directly
makes the same assertion on the content, but without distinguishing whether
the content is returned in an HTML or JavaScript.
Examples
# Replacing the element foo.
# page.replace 'foo', ...
assert_select_rjs :replace, "foo"
# Replacing with the chained RJS proxy.
# page[:foo].replace ...
assert_select_rjs :chained_replace, 'foo'
# Inserting into the element bar, top position.
assert_select_rjs :insert, :top, "bar"
# Remove the element bar
assert_select_rjs :remove, "bar"
# Changing the element foo, with an image.
assert_select_rjs "foo" do
assert_select "img[src=/images/logo.gif""
end
# RJS inserts or updates a list with four items.
assert_select_rjs do
assert_select "ol>li", 4
end
# The same, but shorter.
assert_select "ol>li", 4