aboutsummaryrefslogtreecommitdiffstats
path: root/spec/arel/select_manager_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/arel/select_manager_spec.rb')
-rw-r--r--spec/arel/select_manager_spec.rb46
1 files changed, 44 insertions, 2 deletions
diff --git a/spec/arel/select_manager_spec.rb b/spec/arel/select_manager_spec.rb
index 3984bec3fd..bf4ce2e13f 100644
--- a/spec/arel/select_manager_spec.rb
+++ b/spec/arel/select_manager_spec.rb
@@ -23,6 +23,30 @@ module Arel
end
describe 'select manager' do
+ describe 'joins' do
+ it 'returns join sql' do
+ table = Table.new :users
+ aliaz = table.alias
+ manager = Arel::SelectManager.new Table.engine
+ manager.from Nodes::InnerJoin.new(table, aliaz, table[:id].eq(aliaz[:id]))
+ manager.join_sql.should be_like %{
+ "users" INNER JOIN "users" "users_2" "users"."id" = "users_2"."id"
+ }
+ check manager.joins(manager).should == manager.join_sql
+ end
+
+ it 'returns outer join sql' do
+ table = Table.new :users
+ aliaz = table.alias
+ manager = Arel::SelectManager.new Table.engine
+ manager.from Nodes::OuterJoin.new(table, aliaz, table[:id].eq(aliaz[:id]))
+ manager.join_sql.should be_like %{
+ "users" OUTER JOIN "users" "users_2" "users"."id" = "users_2"."id"
+ }
+ check manager.joins(manager).should == manager.join_sql
+ end
+ end
+
describe 'delete' do
it "copies from" do
engine = EngineProxy.new Table.engine
@@ -54,7 +78,7 @@ module Arel
table = Table.new :users
manager = Arel::SelectManager.new engine
manager.from table
- manager.update('foo = bar')
+ manager.update(SqlLiteral.new('foo = bar'))
engine.executed.last.should be_like %{ UPDATE "users" SET foo = bar }
end
@@ -89,7 +113,7 @@ module Arel
it 'takes strings' do
table = Table.new :users
manager = Arel::SelectManager.new Table.engine
- manager.project '*'
+ manager.project Nodes::SqlLiteral.new('*')
manager.to_sql.should be_like %{
SELECT *
}
@@ -149,6 +173,24 @@ module Arel
end
end
+ describe "join" do
+ it "joins itself" do
+ left = Table.new :users
+ right = left.alias
+ predicate = left[:id].eq(right[:id])
+
+ mgr = left.join(right)
+ mgr.project Nodes::SqlLiteral.new('*')
+ check mgr.on(predicate).should == mgr
+
+ mgr.to_sql.should be_like %{
+ SELECT * FROM "users"
+ INNER JOIN "users" "users_2"
+ ON "users"."id" = "users_2"."id"
+ }
+ end
+ end
+
describe 'from' do
it "makes sql" do
table = Table.new :users