diff options
Diffstat (limited to 'spec/arel/select_manager_spec.rb')
-rw-r--r-- | spec/arel/select_manager_spec.rb | 46 |
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 |