aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test
diff options
context:
space:
mode:
authorYves Senn <yves.senn@gmail.com>2015-12-28 09:26:35 +0100
committerYves Senn <yves.senn@gmail.com>2015-12-28 09:34:35 +0100
commit0d2675f84f54504e5ba25b2f53b00bac239ef393 (patch)
tree26cb45aacbba3a7c03d117ab82f9ad03e4fa5b6c /activerecord/test
parent4b1f67a11a6fd5680a7ce37b695a4d86e6a2c302 (diff)
parentb42c3255bf22e54f459751d5370e8befc33e84ea (diff)
downloadrails-0d2675f84f54504e5ba25b2f53b00bac239ef393.tar.gz
rails-0d2675f84f54504e5ba25b2f53b00bac239ef393.tar.bz2
rails-0d2675f84f54504e5ba25b2f53b00bac239ef393.zip
Merge pull request #22053 from Empact/first-loaded
Fix #first(limit) to take advantage of #loaded? records if available
Diffstat (limited to 'activerecord/test')
-rw-r--r--activerecord/test/cases/relations_test.rb29
1 files changed, 26 insertions, 3 deletions
diff --git a/activerecord/test/cases/relations_test.rb b/activerecord/test/cases/relations_test.rb
index 7149c7d072..0638edacbd 100644
--- a/activerecord/test/cases/relations_test.rb
+++ b/activerecord/test/cases/relations_test.rb
@@ -111,15 +111,38 @@ class RelationTest < ActiveRecord::TestCase
def test_loaded_first
topics = Topic.all.order('id ASC')
+ topics.to_a # force load
- assert_queries(1) do
- topics.to_a # force load
- 2.times { assert_equal "The First Topic", topics.first.title }
+ assert_no_queries do
+ assert_equal "The First Topic", topics.first.title
end
assert topics.loaded?
end
+ def test_loaded_first_with_limit
+ topics = Topic.all.order('id ASC')
+ topics.to_a # force load
+
+ assert_no_queries do
+ assert_equal ["The First Topic",
+ "The Second Topic of the day"], topics.first(2).map(&:title)
+ end
+
+ assert topics.loaded?
+ end
+
+ def test_first_get_more_than_available
+ topics = Topic.all.order('id ASC')
+ unloaded_first = topics.first(10)
+ topics.to_a # force load
+
+ assert_no_queries do
+ loaded_first = topics.first(10)
+ assert_equal unloaded_first, loaded_first
+ end
+ end
+
def test_reload
topics = Topic.all