1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00
rails--rails/spec/arel/visitors/oracle_spec.rb
2010-09-24 10:24:31 -07:00

47 lines
1.3 KiB
Ruby

require 'spec_helper'
module Arel
module Visitors
describe 'the oracle visitor' do
before do
@visitor = Oracle.new Table.engine
end
describe 'Nodes::SelectStatement' do
describe 'limit' do
it 'adds a rownum clause' do
stmt = Nodes::SelectStatement.new
stmt.limit = 10
sql = @visitor.accept stmt
sql.should be_like %{ SELECT WHERE ROWNUM <= 10 }
end
it 'creates a subquery when there is order_by' do
stmt = Nodes::SelectStatement.new
stmt.orders << Nodes::SqlLiteral.new('foo')
stmt.limit = 10
sql = @visitor.accept stmt
sql.should be_like %{
SELECT * FROM (SELECT ORDER BY foo) WHERE ROWNUM <= 10
}
end
it 'creates a different subquery when there is an offset' do
stmt = Nodes::SelectStatement.new
stmt.limit = 10
stmt.offset = Nodes::Offset.new(10)
sql = @visitor.accept stmt
sql.should be_like %{
SELECT * FROM (
SELECT raw_sql_.*, rownum raw_rnum_
FROM (SELECT ) raw_sql_
WHERE rownum <= 20
)
WHERE raw_rnum_ > 10
}
end
end
end
end
end
end