Add support for assert_select_rjs with :show and :hide. #7780 [dchelimsky]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6861 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
Marcel Molina 2007-05-26 17:29:23 +00:00
parent dc4d23f2d7
commit 42ebf559cc
3 changed files with 74 additions and 7 deletions

View File

@ -1,5 +1,7 @@
*SVN*
* Add support for assert_select_rjs with :show and :hide. #7780 [dchelimsky]
* Make assert_select's failure messages clearer about what failed. #7779 [dchelimsky]
* Introduce a default respond_to block for custom types. #8174 [Josh Peek]

View File

@ -325,8 +325,8 @@ module ActionController
# 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+, +:remove+ and
# +:insert_html+.
# 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
@ -414,7 +414,7 @@ module ActionController
case rjs_type
when :chained_replace, :chained_replace_html
Regexp.new("\\$\\(\"#{id}\"\\)#{statement}\\(#{RJS_PATTERN_HTML}\\)", Regexp::MULTILINE)
when :remove
when :remove, :show, :hide, :toggle
Regexp.new("#{statement}\\(\"#{id}\"\\)")
else
Regexp.new("#{statement}\\(\"#{id}\", #{RJS_PATTERN_HTML}\\)", Regexp::MULTILINE)
@ -423,7 +423,7 @@ module ActionController
# Duplicate the body since the next step involves destroying it.
matches = nil
case rjs_type
when :remove
when :remove, :show, :hide, :toggle
matches = @response.body.match(pattern)
else
@response.body.gsub(pattern) do |match|
@ -434,7 +434,7 @@ module ActionController
end
end
if matches
if block_given? && rjs_type != :remove
if block_given? && !([:remove, :show, :hide, :toggle].include? rjs_type)
begin
in_scope, @selected = @selected, matches
yield matches
@ -541,6 +541,9 @@ module ActionController
:chained_replace => /\.replace/,
:chained_replace_html => /\.update/,
:remove => /Element\.remove/,
:show => /Element\.show/,
:hide => /Element\.hide/,
:toggle => /Element\.toggle/
}
RJS_INSERTIONS = [:top, :bottom, :before, :after]
RJS_INSERTIONS.each do |insertion|

View File

@ -452,6 +452,69 @@ class AssertSelectTest < Test::Unit::TestCase
end
end
# Simple show
def test_assert_select_rjs_for_show
render_rjs do |page|
page.show "test1"
end
assert_select_rjs :show, "test1"
end
def test_assert_select_rjs_for_show_ignores_block
render_rjs do |page|
page.show "test1"
end
assert_nothing_raised do
assert_select_rjs :show, "test1" do
assert_select "p"
end
end
end
# Simple hide
def test_assert_select_rjs_for_hide
render_rjs do |page|
page.hide "test1"
end
assert_select_rjs :hide, "test1"
end
def test_assert_select_rjs_for_hide_ignores_block
render_rjs do |page|
page.hide "test1"
end
assert_nothing_raised do
assert_select_rjs :hide, "test1" do
assert_select "p"
end
end
end
# Simple toggle
def test_assert_select_rjs_for_toggle
render_rjs do |page|
page.toggle "test1"
end
assert_select_rjs :toggle, "test1"
end
def test_assert_select_rjs_for_toggle_ignores_block
render_rjs do |page|
page.toggle "test1"
end
assert_nothing_raised do
assert_select_rjs :toggle, "test1" do
assert_select "p"
end
end
end
# Non-positioned insert.
def test_assert_select_rjs_for_nonpositioned_insert
render_rjs do |page|
@ -498,8 +561,7 @@ class AssertSelectTest < Test::Unit::TestCase
assert_select "div", 4
end
end
# Simple selection from a single result.
def test_nested_assert_select_rjs_with_single_result
render_rjs do |page|