diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/visitors/test_mysql.rb | 18 |
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 |