aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test
diff options
context:
space:
mode:
authorPratik Naik <pratiknaik@gmail.com>2010-01-17 21:34:26 +0530
committerPratik Naik <pratiknaik@gmail.com>2010-01-17 21:34:41 +0530
commitf0cde5be541e1f3877a15fb5d39c87a487a14381 (patch)
tree6abf7fcf3f868e3ad827f6b5ca9f6e1f3618d4bf /activerecord/test
parent5a6596787b9489c62d149b61935057cee3dcf61a (diff)
downloadrails-f0cde5be541e1f3877a15fb5d39c87a487a14381.tar.gz
rails-f0cde5be541e1f3877a15fb5d39c87a487a14381.tar.bz2
rails-f0cde5be541e1f3877a15fb5d39c87a487a14381.zip
Make sure named_scope names are not used as method names already
Diffstat (limited to 'activerecord/test')
-rw-r--r--activerecord/test/cases/named_scope_test.rb16
-rw-r--r--activerecord/test/models/post.rb4
2 files changed, 13 insertions, 7 deletions
diff --git a/activerecord/test/cases/named_scope_test.rb b/activerecord/test/cases/named_scope_test.rb
index 5d9232bc52..6f84e12a49 100644
--- a/activerecord/test/cases/named_scope_test.rb
+++ b/activerecord/test/cases/named_scope_test.rb
@@ -150,13 +150,13 @@ class NamedScopeTest < ActiveRecord::TestCase
end
def test_named_scopes_honor_current_scopes_from_when_defined
- assert !Post.ranked_by_comments.limit(5).empty?
- assert !authors(:david).posts.ranked_by_comments.limit(5).empty?
- assert_not_equal Post.ranked_by_comments.limit(5), authors(:david).posts.ranked_by_comments.limit(5)
+ assert !Post.ranked_by_comments.limit_by(5).empty?
+ assert !authors(:david).posts.ranked_by_comments.limit_by(5).empty?
+ assert_not_equal Post.ranked_by_comments.limit_by(5), authors(:david).posts.ranked_by_comments.limit_by(5)
assert_not_equal Post.top(5), authors(:david).posts.top(5)
# Oracle sometimes sorts differently if WHERE condition is changed
- assert_equal authors(:david).posts.ranked_by_comments.limit(5).sort_by(&:id), authors(:david).posts.top(5).sort_by(&:id)
- assert_equal Post.ranked_by_comments.limit(5), Post.top(5)
+ assert_equal authors(:david).posts.ranked_by_comments.limit_by(5).sort_by(&:id), authors(:david).posts.top(5).sort_by(&:id)
+ assert_equal Post.ranked_by_comments.limit_by(5), Post.top(5)
end
def test_active_records_have_scope_named__all__
@@ -374,6 +374,12 @@ class NamedScopeTest < ActiveRecord::TestCase
Comment.for_first_post.for_first_author.all
end
end
+
+ def test_named_scopes_with_reserved_names
+ [:where, :with_scope].each do |protected_method|
+ assert_raises(ArgumentError) { Topic.named_scope protected_method }
+ end
+ end
end
class DynamicScopeMatchTest < ActiveRecord::TestCase
diff --git a/activerecord/test/models/post.rb b/activerecord/test/models/post.rb
index 7392515ec7..662f75c39f 100644
--- a/activerecord/test/models/post.rb
+++ b/activerecord/test/models/post.rb
@@ -1,7 +1,7 @@
class Post < ActiveRecord::Base
named_scope :containing_the_letter_a, :conditions => "body LIKE '%a%'"
named_scope :ranked_by_comments, :order => "comments_count DESC"
- named_scope :limit, lambda {|limit| {:limit => limit} }
+ named_scope :limit_by, lambda {|limit| {:limit => limit} }
named_scope :with_authors_at_address, lambda { |address| {
:conditions => [ 'authors.author_address_id = ?', address.id ],
:joins => 'JOIN authors ON authors.id = posts.author_id'
@@ -73,7 +73,7 @@ class Post < ActiveRecord::Base
has_many :impatient_people, :through => :skimmers, :source => :person
def self.top(limit)
- ranked_by_comments.limit(limit)
+ ranked_by_comments.limit_by(limit)
end
def self.reset_log