From 6b851c686faefe54efce0857f8b7b7b0c04bb673 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Wed, 18 Aug 2010 16:32:32 -0700 Subject: joins can be created --- spec/arel/select_manager_spec.rb | 22 ++++++++++++++++++++-- spec/arel/table_spec.rb | 12 ++++++++++++ spec/arel/update_manager_spec.rb | 2 +- 3 files changed, 33 insertions(+), 3 deletions(-) (limited to 'spec/arel') diff --git a/spec/arel/select_manager_spec.rb b/spec/arel/select_manager_spec.rb index 01d1b35004..74e2db408b 100644 --- a/spec/arel/select_manager_spec.rb +++ b/spec/arel/select_manager_spec.rb @@ -54,7 +54,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 +89,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 +149,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 diff --git a/spec/arel/table_spec.rb b/spec/arel/table_spec.rb index bc3d6938a7..58ccc9e7be 100644 --- a/spec/arel/table_spec.rb +++ b/spec/arel/table_spec.rb @@ -6,6 +6,18 @@ module Arel @relation = Table.new(:users) end + describe 'alias' do + it 'should create a node that proxies to a table' do + check @relation.aliases.should == [] + + node = @relation.alias + check @relation.aliases.should == [node] + check node.name.should == 'users_2' + check node[:id].relation.should == node + check node[:id].relation.should != node + end + end + describe 'new' do it 'should accept an engine' do rel = Table.new :users, 'foo' diff --git a/spec/arel/update_manager_spec.rb b/spec/arel/update_manager_spec.rb index 8c4c4f93b8..e70ae2cef3 100644 --- a/spec/arel/update_manager_spec.rb +++ b/spec/arel/update_manager_spec.rb @@ -21,7 +21,7 @@ module Arel table = Table.new(:users) um = Arel::UpdateManager.new Table.engine um.table table - um.set "foo = bar" + um.set Nodes::SqlLiteral.new "foo = bar" um.to_sql.should be_like %{ UPDATE "users" SET foo = bar } end -- cgit v1.2.3