aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcel Molina <marcel@vernix.org>2007-05-26 17:29:23 +0000
committerMarcel Molina <marcel@vernix.org>2007-05-26 17:29:23 +0000
commit42ebf559cc6ed80fa3bf55ecc1dea7c9e593f45e (patch)
tree234c07005e9539121aa6d3ec1ddb2b8ffd7b341a
parentdc4d23f2d736a81be36edb0abf42774634741bf3 (diff)
downloadrails-42ebf559cc6ed80fa3bf55ecc1dea7c9e593f45e.tar.gz
rails-42ebf559cc6ed80fa3bf55ecc1dea7c9e593f45e.tar.bz2
rails-42ebf559cc6ed80fa3bf55ecc1dea7c9e593f45e.zip
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
-rw-r--r--actionpack/CHANGELOG2
-rw-r--r--actionpack/lib/action_controller/assertions/selector_assertions.rb13
-rw-r--r--actionpack/test/controller/assert_select_test.rb66
3 files changed, 74 insertions, 7 deletions
diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG
index 9f36aebb49..0258d02b54 100644
--- a/actionpack/CHANGELOG
+++ b/actionpack/CHANGELOG
@@ -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]
diff --git a/actionpack/lib/action_controller/assertions/selector_assertions.rb b/actionpack/lib/action_controller/assertions/selector_assertions.rb
index 048bba153f..8bb3402668 100644
--- a/actionpack/lib/action_controller/assertions/selector_assertions.rb
+++ b/actionpack/lib/action_controller/assertions/selector_assertions.rb
@@ -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|
diff --git a/actionpack/test/controller/assert_select_test.rb b/actionpack/test/controller/assert_select_test.rb
index 36075a0871..b0f3d6cedc 100644
--- a/actionpack/test/controller/assert_select_test.rb
+++ b/actionpack/test/controller/assert_select_test.rb
@@ -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|