diff options
author | Yves Senn <yves.senn@gmail.com> | 2015-12-28 09:26:35 +0100 |
---|---|---|
committer | Yves Senn <yves.senn@gmail.com> | 2015-12-28 09:34:35 +0100 |
commit | 0d2675f84f54504e5ba25b2f53b00bac239ef393 (patch) | |
tree | 26cb45aacbba3a7c03d117ab82f9ad03e4fa5b6c /activerecord/test | |
parent | 4b1f67a11a6fd5680a7ce37b695a4d86e6a2c302 (diff) | |
parent | b42c3255bf22e54f459751d5370e8befc33e84ea (diff) | |
download | rails-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.rb | 29 |
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 |