aboutsummaryrefslogtreecommitdiffstats
path: root/spec/arel/unit/relations/join_spec.rb
diff options
context:
space:
mode:
authorBryan Helmkamp <bryan@brynary.com>2009-05-16 21:13:32 -0400
committerBryan Helmkamp <bryan@brynary.com>2009-05-17 13:17:07 -0400
commit49d119ae84bbb7cd180ca855cf48997dc731554c (patch)
tree3bae397d3e2b5ee76bd89a87ccbf421d814fec74 /spec/arel/unit/relations/join_spec.rb
parent4096d192a1e7cdf0115f5a4cf33d102b176cb8cd (diff)
downloadrails-49d119ae84bbb7cd180ca855cf48997dc731554c.tar.gz
rails-49d119ae84bbb7cd180ca855cf48997dc731554c.tar.bz2
rails-49d119ae84bbb7cd180ca855cf48997dc731554c.zip
Adding spec:mysql and spec:sqlite3 tasks
Diffstat (limited to 'spec/arel/unit/relations/join_spec.rb')
-rw-r--r--spec/arel/unit/relations/join_spec.rb52
1 files changed, 38 insertions, 14 deletions
diff --git a/spec/arel/unit/relations/join_spec.rb b/spec/arel/unit/relations/join_spec.rb
index 1698bf9647..fa6bbbe216 100644
--- a/spec/arel/unit/relations/join_spec.rb
+++ b/spec/arel/unit/relations/join_spec.rb
@@ -7,20 +7,20 @@ module Arel
@relation2 = Table.new(:photos)
@predicate = @relation1[:id].eq(@relation2[:user_id])
end
-
+
describe 'hashing' do
it 'implements hash equality' do
Join.new("INNER JOIN", @relation1, @relation2, @predicate) \
.should hash_the_same_as(Join.new("INNER JOIN", @relation1, @relation2, @predicate))
end
end
-
+
describe '#engine' do
it "delegates to a relation's engine" do
Join.new("INNER JOIN", @relation1, @relation2, @predicate).engine.should == @relation1.engine
end
end
-
+
describe '#attributes' do
it 'combines the attributes of the two relations' do
join = Join.new("INNER JOIN", @relation1, @relation2, @predicate)
@@ -32,21 +32,45 @@ module Arel
describe '#to_sql' do
describe 'when joining with another relation' do
it 'manufactures sql joining the two tables on the predicate' do
- Join.new("INNER JOIN", @relation1, @relation2, @predicate).to_sql.should be_like("
- SELECT `users`.`id`, `users`.`name`, `photos`.`id`, `photos`.`user_id`, `photos`.`camera_id`
- FROM `users`
- INNER JOIN `photos` ON `users`.`id` = `photos`.`user_id`
- ")
+ sql = Join.new("INNER JOIN", @relation1, @relation2, @predicate).to_sql
+
+ adapter_is :mysql do
+ sql.should be_like(%Q{
+ SELECT `users`.`id`, `users`.`name`, `photos`.`id`, `photos`.`user_id`, `photos`.`camera_id`
+ FROM `users`
+ INNER JOIN `photos` ON `users`.`id` = `photos`.`user_id`
+ })
+ end
+
+ adapter_is_not :mysql do
+ sql.should be_like(%Q{
+ SELECT "users"."id", "users"."name", "photos"."id", "photos"."user_id", "photos"."camera_id"
+ FROM "users"
+ INNER JOIN "photos" ON "users"."id" = "photos"."user_id"
+ })
+ end
end
end
-
+
describe 'when joining with a string' do
it "passes the string through to the where clause" do
- Join.new("INNER JOIN asdf ON fdsa", @relation1).to_sql.should be_like("
- SELECT `users`.`id`, `users`.`name`
- FROM `users`
- INNER JOIN asdf ON fdsa
- ")
+ sql = Join.new("INNER JOIN asdf ON fdsa", @relation1).to_sql
+
+ adapter_is :mysql do
+ sql.should be_like(%Q{
+ SELECT `users`.`id`, `users`.`name`
+ FROM `users`
+ INNER JOIN asdf ON fdsa
+ })
+ end
+
+ adapter_is_not :mysql do
+ sql.should be_like(%Q{
+ SELECT "users"."id", "users"."name"
+ FROM "users"
+ INNER JOIN asdf ON fdsa
+ })
+ end
end
end
end