aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/relations_test.rb
diff options
context:
space:
mode:
authorSantiago Pastorino <santiago@wyeworks.com>2010-11-04 20:48:02 -0200
committerAaron Patterson <aaron.patterson@gmail.com>2010-11-05 11:27:34 -0700
commit3146aa68fd03ea4392b45f1c8771675a9c850471 (patch)
tree6f229814d49e9c9da4bb4a276a5a291b093c50d8 /activerecord/test/cases/relations_test.rb
parentd5e45931a0f3d36515d6048fd9cb13f641018571 (diff)
downloadrails-3146aa68fd03ea4392b45f1c8771675a9c850471.tar.gz
rails-3146aa68fd03ea4392b45f1c8771675a9c850471.tar.bz2
rails-3146aa68fd03ea4392b45f1c8771675a9c850471.zip
Fixes queries using limits and punctuation in order, removes order("col1, col2") usage in favor of order(["col1", "col2"})
[#4597 state:committed]
Diffstat (limited to 'activerecord/test/cases/relations_test.rb')
-rw-r--r--activerecord/test/cases/relations_test.rb23
1 files changed, 22 insertions, 1 deletions
diff --git a/activerecord/test/cases/relations_test.rb b/activerecord/test/cases/relations_test.rb
index f4f3dc4d5a..fbc257195c 100644
--- a/activerecord/test/cases/relations_test.rb
+++ b/activerecord/test/cases/relations_test.rb
@@ -1,4 +1,5 @@
require "cases/helper"
+require 'models/tag'
require 'models/tagging'
require 'models/post'
require 'models/topic'
@@ -17,7 +18,7 @@ require 'models/tyre'
class RelationTest < ActiveRecord::TestCase
fixtures :authors, :topics, :entrants, :developers, :companies, :developers_projects, :accounts, :categories, :categorizations, :posts, :comments,
- :taggings, :cars
+ :tags, :taggings, :cars
def test_bind_values
relation = Post.scoped
@@ -144,6 +145,26 @@ class RelationTest < ActiveRecord::TestCase
assert_equal entrants(:first).name, entrants.first.name
end
+ def test_finding_with_complex_order_and_limit
+ if current_adapter?(:SQLite3Adapter)
+ tags = Tag.includes(:taggings).order("MIN(1,2)").limit(1).to_a
+ else
+ tags = Tag.includes(:taggings).order("LEAST(1,COS(1)*COS(-1)*COS(RADIANS(taggings.super_tag_id)))").limit(1).to_a
+ end
+
+ assert_equal 1, tags.length
+ end
+
+ def test_finding_with_complex_order
+ if current_adapter?(:SQLite3Adapter)
+ tags = Tag.includes(:taggings).order("MIN(1,2)").to_a
+ else
+ tags = Tag.includes(:taggings).order("LEAST(1,COS(1)*COS(-1)*COS(RADIANS(taggings.super_tag_id)))").to_a
+ end
+
+ assert_equal 2, tags.length
+ end
+
def test_finding_with_order_limit_and_offset
entrants = Entrant.order("id ASC").limit(2).offset(1)