aboutsummaryrefslogtreecommitdiffstats
path: root/test/visitors/test_mysql.rb
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2014-04-08 19:43:42 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2014-04-08 19:43:42 -0700
commit5dceb0e9dc1e1e0abe595194ba1ef9f6112afd05 (patch)
tree503354fdc1efabec91419406382482df97c9a435 /test/visitors/test_mysql.rb
parent3ec26142a9f9f036bc3f763adac8fa38048d0a76 (diff)
downloadrails-5dceb0e9dc1e1e0abe595194ba1ef9f6112afd05.tar.gz
rails-5dceb0e9dc1e1e0abe595194ba1ef9f6112afd05.tar.bz2
rails-5dceb0e9dc1e1e0abe595194ba1ef9f6112afd05.zip
fixing mysql visitor
Diffstat (limited to 'test/visitors/test_mysql.rb')
-rw-r--r--test/visitors/test_mysql.rb18
1 files changed, 11 insertions, 7 deletions
diff --git a/test/visitors/test_mysql.rb b/test/visitors/test_mysql.rb
index 6b62ec133a..8e4b9e6861 100644
--- a/test/visitors/test_mysql.rb
+++ b/test/visitors/test_mysql.rb
@@ -7,14 +7,18 @@ module Arel
@visitor = MySQL.new Table.engine.connection
end
+ def compile node
+ @visitor.accept(node, Collectors::SQLString.new).value
+ end
+
it 'squashes parenthesis on multiple unions' do
subnode = Nodes::Union.new Arel.sql('left'), Arel.sql('right')
node = Nodes::Union.new subnode, Arel.sql('topright')
- assert_equal 1, @visitor.accept(node).scan('(').length
+ assert_equal 1, compile(node).scan('(').length
subnode = Nodes::Union.new Arel.sql('left'), Arel.sql('right')
node = Nodes::Union.new Arel.sql('topleft'), subnode
- assert_equal 1, @visitor.accept(node).scan('(').length
+ assert_equal 1, compile(node).scan('(').length
end
###
@@ -23,7 +27,7 @@ module Arel
it 'defaults limit to 18446744073709551615' do
stmt = Nodes::SelectStatement.new
stmt.offset = Nodes::Offset.new(1)
- sql = @visitor.accept(stmt)
+ sql = compile(stmt)
sql.must_be_like "SELECT FROM DUAL LIMIT 18446744073709551615 OFFSET 1"
end
@@ -31,24 +35,24 @@ module Arel
sc = Arel::Nodes::UpdateStatement.new
sc.relation = Table.new(:users)
sc.limit = Nodes::Limit.new(Nodes.build_quoted("omg"))
- assert_equal("UPDATE \"users\" LIMIT 'omg'", @visitor.accept(sc))
+ assert_equal("UPDATE \"users\" LIMIT 'omg'", compile(sc))
end
it 'uses DUAL for empty from' do
stmt = Nodes::SelectStatement.new
- sql = @visitor.accept(stmt)
+ sql = compile(stmt)
sql.must_be_like "SELECT FROM DUAL"
end
describe 'locking' do
it 'defaults to FOR UPDATE when locking' do
node = Nodes::Lock.new(Arel.sql('FOR UPDATE'))
- @visitor.accept(node).must_be_like "FOR UPDATE"
+ compile(node).must_be_like "FOR UPDATE"
end
it 'allows a custom string to be used as a lock' do
node = Nodes::Lock.new(Arel.sql('LOCK IN SHARE MODE'))
- @visitor.accept(node).must_be_like "LOCK IN SHARE MODE"
+ compile(node).must_be_like "LOCK IN SHARE MODE"
end
end
end