aboutsummaryrefslogtreecommitdiffstats
path: root/test/visitors
diff options
context:
space:
mode:
Diffstat (limited to 'test/visitors')
-rw-r--r--test/visitors/test_depth_first.rb8
-rw-r--r--test/visitors/test_dot.rb19
-rw-r--r--test/visitors/test_to_sql.rb10
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)