aboutsummaryrefslogtreecommitdiffstats
path: root/spec/arel/integration/joins/with_compounds_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/integration/joins/with_compounds_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/integration/joins/with_compounds_spec.rb')
-rw-r--r--spec/arel/integration/joins/with_compounds_spec.rb90
1 files changed, 66 insertions, 24 deletions
diff --git a/spec/arel/integration/joins/with_compounds_spec.rb b/spec/arel/integration/joins/with_compounds_spec.rb
index 95fadc23d6..7582c5fc83 100644
--- a/spec/arel/integration/joins/with_compounds_spec.rb
+++ b/spec/arel/integration/joins/with_compounds_spec.rb
@@ -12,15 +12,28 @@ module Arel
describe 'when the join contains a where' do
describe 'and the where is given a string' do
it 'does not escape the string' do
- @relation1 \
+ sql = @relation1 \
.join(@relation2.where("asdf")) \
.on(@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` AND asdf
- ")
+ .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` AND asdf
+ })
+ 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" AND asdf
+ })
+ end
end
end
end
@@ -28,35 +41,64 @@ module Arel
describe 'when a compound contains a join' do
describe 'and the compound is a where' do
it 'manufactures sql disambiguating the tables' do
- @relation1 \
+ sql = @relation1 \
.where(@relation1[:id].eq(1)) \
.join(@relation2) \
.on(@predicate) \
.where(@relation1[:id].eq(1)) \
- .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`
- WHERE `users`.`id` = 1
- AND `users`.`id` = 1
- ")
+ .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`
+ WHERE `users`.`id` = 1
+ AND `users`.`id` = 1
+ })
+ 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"
+ WHERE "users"."id" = 1
+ AND "users"."id" = 1
+ })
+ end
end
end
describe 'and the compound is a group' do
it 'manufactures sql disambiguating the tables' do
- @relation1 \
+ sql = @relation1 \
.join(@relation2) \
.on(@predicate) \
.group(@relation1[:id]) \
- .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`
- GROUP BY `users`.`id`
- ")
+ .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`
+ GROUP BY `users`.`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"
+ GROUP BY "users"."id"
+ })
+ end
end
end
end