diff options
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) |