diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2010-08-18 16:32:32 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2010-08-18 16:32:32 -0700 |
commit | 6b851c686faefe54efce0857f8b7b7b0c04bb673 (patch) | |
tree | c95e779ce383412519a06b4b455d31df53ea3c4d /spec/arel | |
parent | 0403efa4c6ad926a61dd0d134d63d962238e2c4f (diff) | |
download | rails-6b851c686faefe54efce0857f8b7b7b0c04bb673.tar.gz rails-6b851c686faefe54efce0857f8b7b7b0c04bb673.tar.bz2 rails-6b851c686faefe54efce0857f8b7b7b0c04bb673.zip |
joins can be created
Diffstat (limited to 'spec/arel')
-rw-r--r-- | spec/arel/select_manager_spec.rb | 22 | ||||
-rw-r--r-- | spec/arel/table_spec.rb | 12 | ||||
-rw-r--r-- | spec/arel/update_manager_spec.rb | 2 |
3 files changed, 33 insertions, 3 deletions
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 |