diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2011-01-04 20:27:34 -0800 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2011-01-04 20:27:34 -0800 |
commit | f0c4e3713d72a18a4100f85e263014f6e56bfad3 (patch) | |
tree | ccdcde4adb5ebfc4920daff19aa8ad38477b5caf /test/visitors | |
parent | dd1a65456fbfdc1f2a337aca535576d84145dcb6 (diff) | |
download | rails-f0c4e3713d72a18a4100f85e263014f6e56bfad3.tar.gz rails-f0c4e3713d72a18a4100f85e263014f6e56bfad3.tar.bz2 rails-f0c4e3713d72a18a4100f85e263014f6e56bfad3.zip |
Added Arel::Nodes::NamedFunction for representing generic SQL functions
Diffstat (limited to 'test/visitors')
-rw-r--r-- | test/visitors/test_depth_first.rb | 8 | ||||
-rw-r--r-- | test/visitors/test_dot.rb | 19 | ||||
-rw-r--r-- | test/visitors/test_to_sql.rb | 10 |
3 files changed, 36 insertions, 1 deletions
diff --git a/test/visitors/test_depth_first.rb b/test/visitors/test_depth_first.rb index 306605b7c6..6d74926743 100644 --- a/test/visitors/test_depth_first.rb +++ b/test/visitors/test_depth_first.rb @@ -52,10 +52,16 @@ module Arel define_method("test_#{klass.name.gsub('::', '_')}") do func = klass.new(:a, :b) @visitor.accept func - assert_equal [:a, :b, func], @collector.calls + assert_equal [:a, :b, false, func], @collector.calls end end + def test_named_function + func = Arel::Nodes::NamedFunction.new(:a, :b, :c) + @visitor.accept func + assert_equal [:a, :b, false, :c, func], @collector.calls + end + def test_lock lock = Nodes::Lock.new @visitor.accept lock diff --git a/test/visitors/test_dot.rb b/test/visitors/test_dot.rb index 3c7da8958a..2909d87799 100644 --- a/test/visitors/test_dot.rb +++ b/test/visitors/test_dot.rb @@ -7,6 +7,25 @@ module Arel @visitor = Visitors::Dot.new end + # functions + [ + Nodes::Sum, + Nodes::Exists, + Nodes::Max, + Nodes::Min, + Nodes::Avg, + ].each do |klass| + define_method("test_#{klass.name.gsub('::', '_')}") do + op = klass.new(:a, :z) + @visitor.accept op + end + end + + def test_named_function + func = Nodes::NamedFunction.new 'omg', 'omg' + @visitor.accept func + end + # unary ops [ Arel::Nodes::Not, diff --git a/test/visitors/test_to_sql.rb b/test/visitors/test_to_sql.rb index 34ebb2b278..0c7baab923 100644 --- a/test/visitors/test_to_sql.rb +++ b/test/visitors/test_to_sql.rb @@ -15,6 +15,16 @@ module Arel sql.must_be_like '"users".*' end + it 'should visit named functions' do + function = Nodes::NamedFunction.new('omg', [Arel.star]) + assert_equal 'omg(*)', @visitor.accept(function) + end + + it 'works with lists' do + function = Nodes::NamedFunction.new('omg', [Arel.star, Arel.star]) + assert_equal 'omg(*, *)', @visitor.accept(function) + end + describe 'equality' do it 'should handle false' do sql = @visitor.accept Nodes::Equality.new(false, false) |