aboutsummaryrefslogtreecommitdiffstats
path: root/spec/arel
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2010-08-18 16:32:32 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2010-08-18 16:32:32 -0700
commit6b851c686faefe54efce0857f8b7b7b0c04bb673 (patch)
treec95e779ce383412519a06b4b455d31df53ea3c4d /spec/arel
parent0403efa4c6ad926a61dd0d134d63d962238e2c4f (diff)
downloadrails-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.rb22
-rw-r--r--spec/arel/table_spec.rb12
-rw-r--r--spec/arel/update_manager_spec.rb2
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