aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test
diff options
context:
space:
mode:
authorJeremy Kemper <jeremy@bitsweat.net>2006-07-31 06:54:06 +0000
committerJeremy Kemper <jeremy@bitsweat.net>2006-07-31 06:54:06 +0000
commitdd664c33b73adef336c78a5db4b67ad6cbbefb9f (patch)
treef5bf84860c75c7699bc200271e46ca92f964506b /activerecord/test
parent63ad8b4d190bff91df520d529e75ad2b7bd25d53 (diff)
downloadrails-dd664c33b73adef336c78a5db4b67ad6cbbefb9f.tar.gz
rails-dd664c33b73adef336c78a5db4b67ad6cbbefb9f.tar.bz2
rails-dd664c33b73adef336c78a5db4b67ad6cbbefb9f.zip
r4880@ks: jeremy | 2006-07-30 23:52:59 -0700
Only set method_name = md.pre_match if the pre_match is an attribute. Plays nicely with other ? suffixed attribute methods. r4881@ks: jeremy | 2006-07-30 23:53:37 -0700 Heavier testing for attribute method suffixes. git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4635 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activerecord/test')
-rwxr-xr-xactiverecord/test/attribute_methods_test.rb31
1 files changed, 25 insertions, 6 deletions
diff --git a/activerecord/test/attribute_methods_test.rb b/activerecord/test/attribute_methods_test.rb
index 8dcca2fc4a..0fa13c65ca 100755
--- a/activerecord/test/attribute_methods_test.rb
+++ b/activerecord/test/attribute_methods_test.rb
@@ -2,14 +2,30 @@ require 'abstract_unit'
class AttributeMethodsTest < Test::Unit::TestCase
def setup
+ @old_suffixes = ActiveRecord::Base.send(:attribute_method_suffixes).dup
@target = Class.new(ActiveRecord::Base)
@target.table_name = 'topics'
end
+ def teardown
+ ActiveRecord::Base.send(:attribute_method_suffixes).clear
+ ActiveRecord::Base.attribute_method_suffix *@old_suffixes
+ end
+
+
def test_match_attribute_method_query_returns_match_data
assert_not_nil md = @target.match_attribute_method?('title=')
assert_equal 'title', md.pre_match
assert_equal ['='], md.captures
+
+ %w(_hello_world ist! _maybe?).each do |suffix|
+ @target.class_eval "def attribute#{suffix}(*args) args end"
+ @target.attribute_method_suffix suffix
+
+ assert_not_nil md = @target.match_attribute_method?("title#{suffix}")
+ assert_equal 'title', md.pre_match
+ assert_equal [suffix], md.captures
+ end
end
def test_declared_attribute_method_affects_respond_to_and_method_missing
@@ -19,12 +35,15 @@ class AttributeMethodsTest < Test::Unit::TestCase
assert !topic.respond_to?('title_hello_world')
assert_raise(NoMethodError) { topic.title_hello_world }
- @target.class_eval "def attribute_hello_world(*args) args end"
- @target.attribute_method_suffix '_hello_world'
+ %w(_hello_world _it! _candidate= able?).each do |suffix|
+ @target.class_eval "def attribute#{suffix}(*args) args end"
+ @target.attribute_method_suffix suffix
- assert topic.respond_to?('title_hello_world')
- assert_equal ['title'], topic.title_hello_world
- assert_equal ['title', 'a'], topic.title_hello_world('a')
- assert_equal ['title', 1, 2, 3], topic.title_hello_world(1, 2, 3)
+ meth = "title#{suffix}"
+ assert topic.respond_to?(meth)
+ assert_equal ['title'], topic.send(meth)
+ assert_equal ['title', 'a'], topic.send(meth, 'a')
+ assert_equal ['title', 1, 2, 3], topic.send(meth, 1, 2, 3)
+ end
end
end