Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

use ARel factory methods for building AST nodes

This abstracts us from the actual construction of the nodes
  • Loading branch information...
commit c7191e31957a4c8adca492a3f0ce1909a7b68e23 1 parent e209723
@tenderlove tenderlove authored
View
4 activerecord/test/cases/relation/predicate_builder_test.rb
@@ -5,10 +5,10 @@ module ActiveRecord
class PredicateBuilderTest < ActiveRecord::TestCase
def test_registering_new_handlers
PredicateBuilder.register_handler(Regexp, proc do |column, value|
- Arel::Nodes::InfixOperation.new('~', column, value.source)
+ Arel::Nodes::InfixOperation.new('~', column, Arel.sql(value.source))
end)
- assert_match %r{["`]topics["`].["`]title["`] ~ 'rails'}i, Topic.where(title: /rails/).to_sql
+ assert_match %r{["`]topics["`].["`]title["`] ~ rails}i, Topic.where(title: /rails/).to_sql
end
end
end
View
30 activerecord/test/cases/relation/where_chain_test.rb
@@ -12,13 +12,13 @@ def setup
end
def test_not_eq
- expected = Arel::Nodes::NotEqual.new(Post.arel_table[@name], 'hello')
+ expected = Post.arel_table[@name].not_eq('hello')
relation = Post.where.not(title: 'hello')
assert_equal([expected], relation.where_values)
end
def test_not_null
- expected = Arel::Nodes::NotEqual.new(Post.arel_table[@name], nil)
+ expected = Post.arel_table[@name].not_eq(nil)
relation = Post.where.not(title: nil)
assert_equal([expected], relation.where_values)
end
@@ -30,13 +30,13 @@ def test_not_with_nil
end
def test_not_in
- expected = Arel::Nodes::NotIn.new(Post.arel_table[@name], %w[hello goodbye])
+ expected = Post.arel_table[@name].not_in(%w[hello goodbye])
relation = Post.where.not(title: %w[hello goodbye])
assert_equal([expected], relation.where_values)
end
def test_association_not_eq
- expected = Arel::Nodes::NotEqual.new(Comment.arel_table[@name], 'hello')
+ expected = Comment.arel_table[@name].not_eq('hello')
relation = Post.joins(:comments).where.not(comments: {title: 'hello'})
assert_equal(expected.to_sql, relation.where_values.first.to_sql)
end
@@ -44,20 +44,20 @@ def test_association_not_eq
def test_not_eq_with_preceding_where
relation = Post.where(title: 'hello').where.not(title: 'world')
- expected = Arel::Nodes::Equality.new(Post.arel_table[@name], 'hello')
+ expected = Post.arel_table[@name].eq('hello')
assert_equal(expected, relation.where_values.first)
- expected = Arel::Nodes::NotEqual.new(Post.arel_table[@name], 'world')
+ expected = Post.arel_table[@name].not_eq('world')
assert_equal(expected, relation.where_values.last)
end
def test_not_eq_with_succeeding_where
relation = Post.where.not(title: 'hello').where(title: 'world')
- expected = Arel::Nodes::NotEqual.new(Post.arel_table[@name], 'hello')
+ expected = Post.arel_table[@name].not_eq('hello')
assert_equal(expected, relation.where_values.first)
- expected = Arel::Nodes::Equality.new(Post.arel_table[@name], 'world')
+ expected = Post.arel_table[@name].eq('world')
assert_equal(expected, relation.where_values.last)
end
@@ -76,17 +76,17 @@ def test_not_eq_with_array_parameter
def test_chaining_multiple
relation = Post.where.not(author_id: [1, 2]).where.not(title: 'ruby on rails')
- expected = Arel::Nodes::NotIn.new(Post.arel_table['author_id'], [1, 2])
+ expected = Post.arel_table['author_id'].not_in([1, 2])
assert_equal(expected, relation.where_values[0])
- expected = Arel::Nodes::NotEqual.new(Post.arel_table[@name], 'ruby on rails')
+ expected = Post.arel_table[@name].not_eq('ruby on rails')
assert_equal(expected, relation.where_values[1])
end
def test_rewhere_with_one_condition
relation = Post.where(title: 'hello').where(title: 'world').rewhere(title: 'alone')
- expected = Arel::Nodes::Equality.new(Post.arel_table[@name], 'alone')
+ expected = Post.arel_table[@name].eq('alone')
assert_equal 1, relation.where_values.size
assert_equal expected, relation.where_values.first
end
@@ -94,8 +94,8 @@ def test_rewhere_with_one_condition
def test_rewhere_with_multiple_overwriting_conditions
relation = Post.where(title: 'hello').where(body: 'world').rewhere(title: 'alone', body: 'again')
- title_expected = Arel::Nodes::Equality.new(Post.arel_table['title'], 'alone')
- body_expected = Arel::Nodes::Equality.new(Post.arel_table['body'], 'again')
+ title_expected = Post.arel_table['title'].eq('alone')
+ body_expected = Post.arel_table['body'].eq('again')
assert_equal 2, relation.where_values.size
assert_equal title_expected, relation.where_values.first
@@ -105,8 +105,8 @@ def test_rewhere_with_multiple_overwriting_conditions
def test_rewhere_with_one_overwriting_condition_and_one_unrelated
relation = Post.where(title: 'hello').where(body: 'world').rewhere(title: 'alone')
- title_expected = Arel::Nodes::Equality.new(Post.arel_table['title'], 'alone')
- body_expected = Arel::Nodes::Equality.new(Post.arel_table['body'], 'world')
+ title_expected = Post.arel_table['title'].eq('alone')
+ body_expected = Post.arel_table['body'].eq('world')
assert_equal 2, relation.where_values.size
assert_equal body_expected, relation.where_values.first
Please sign in to comment.
Something went wrong with that request. Please try again.