aboutsummaryrefslogtreecommitdiffstats
path: root/spec/engines/sql/unit/predicates/in_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/engines/sql/unit/predicates/in_spec.rb')
-rw-r--r--spec/engines/sql/unit/predicates/in_spec.rb179
1 files changed, 0 insertions, 179 deletions
diff --git a/spec/engines/sql/unit/predicates/in_spec.rb b/spec/engines/sql/unit/predicates/in_spec.rb
deleted file mode 100644
index 933e33fe99..0000000000
--- a/spec/engines/sql/unit/predicates/in_spec.rb
+++ /dev/null
@@ -1,179 +0,0 @@
-require 'spec_helper'
-
-module Arel
- module Predicates
- describe In do
- before do
- @relation = Arel::Table.new(:users)
- @attribute = @relation[:id]
- end
-
- describe '#to_sql' do
- describe 'when relating to an array' do
- describe 'when the array\'s elements are the same type as the attribute' do
- before do
- @array = [1, 2, 3]
- end
-
- it 'manufactures sql with a comma separated list' do
- sql = In.new(@attribute, @array).to_sql
-
- adapter_is :mysql do
- sql.should be_like(%Q{`users`.`id` IN (1, 2, 3)})
- end
-
- adapter_is :oracle do
- sql.should be_like(%Q{"USERS"."ID" IN (1, 2, 3)})
- end
-
- adapter_is_not :mysql, :oracle do
- sql.should be_like(%Q{"users"."id" IN (1, 2, 3)})
- end
- end
- end
-
- describe 'when the array\'s elements are not same type as the attribute' do
- before do
- @array = ['1-asdf', 2, 3]
- end
-
- it 'formats values in the array as the type of the attribute' do
- sql = In.new(@attribute, @array).to_sql
-
- adapter_is :mysql do
- sql.should be_like(%Q{`users`.`id` IN (1, 2, 3)})
- end
-
- adapter_is :oracle do
- sql.should be_like(%Q{"USERS"."ID" IN (1, 2, 3)})
- end
-
- adapter_is_not :mysql, :oracle do
- sql.should be_like(%Q{"users"."id" IN (1, 2, 3)})
- end
- end
- end
-
- describe 'when the array is empty' do
- before do
- @array = []
- end
-
- it 'manufactures sql with a comma separated list' do
- sql = In.new(@attribute, @array).to_sql
-
- adapter_is :mysql do
- sql.should be_like(%Q{`users`.`id` IN (NULL)})
- end
-
- adapter_is :oracle do
- sql.should be_like(%Q{"USERS"."ID" IN (NULL)})
- end
-
- adapter_is_not :mysql, :oracle do
- sql.should be_like(%Q{"users"."id" IN (NULL)})
- end
- end
- end
-
- end
-
- describe 'when relating to a range' do
- before do
- @range = 1..2
- end
-
- it 'manufactures sql with a between' do
- sql = In.new(@attribute, @range).to_sql
-
- adapter_is :mysql do
- sql.should be_like(%Q{`users`.`id` BETWEEN 1 AND 2})
- end
-
- adapter_is :oracle do
- sql.should be_like(%Q{"USERS"."ID" BETWEEN 1 AND 2})
- end
-
- adapter_is_not :mysql, :oracle do
- sql.should be_like(%Q{"users"."id" BETWEEN 1 AND 2})
- end
- end
- end
-
- describe 'when relating to a range with an excluded end' do
- before do
- @range = 1...3
- end
-
- it 'manufactures sql with a >= and <' do
- sql = In.new(@attribute, @range).to_sql
-
- adapter_is :mysql do
- sql.should be_like(%Q{(`users`.`id` >= 1 AND `users`.`id` < 3)})
- end
-
- adapter_is :oracle do
- sql.should be_like(%Q{("USERS"."ID" >= 1 AND "USERS"."ID" < 3)})
- end
-
- adapter_is_not :mysql, :oracle do
- sql.should be_like(%Q{("users"."id" >= 1 AND "users"."id" < 3)})
- end
- end
- end
-
- describe 'when relating to a time range' do
- before do
- @relation = Arel::Table.new(:developers)
- @attribute = @relation[:created_at]
- @range = Time.mktime(2010, 01, 01)..Time.mktime(2010, 02, 01)
- end
-
- it 'manufactures sql with a between' do
- sql = In.new(@attribute, @range).to_sql
-
- adapter_is :mysql do
- sql.should be_like(%Q{`developers`.`created_at` BETWEEN '2010-01-01 00:00:00' AND '2010-02-01 00:00:00'})
- end
-
- adapter_is :sqlite3 do
- sql.should match(/"developers"."created_at" BETWEEN '2010-01-01 00:00:00(?:\.\d+)' AND '2010-02-01 00:00:00(?:\.\d+)'/)
- end
-
- adapter_is :postgresql do
- sql.should be_like(%Q{"developers"."created_at" BETWEEN '2010-01-01 00:00:00.000000' AND '2010-02-01 00:00:00.000000'})
- end
-
- adapter_is :oracle do
- sql.should be_like(%Q{"DEVELOPERS"."CREATED_AT" BETWEEN TO_TIMESTAMP('2010-01-01 00:00:00:000000','YYYY-MM-DD HH24:MI:SS:FF6') AND TO_TIMESTAMP('2010-02-01 00:00:00:000000','YYYY-MM-DD HH24:MI:SS:FF6')})
- end
- end
- end
-
- describe 'when relating to a relation' do
- it 'manufactures sql with a subselect' do
- sql = In.new(@attribute, @relation).to_sql
-
- adapter_is :mysql do
- sql.should be_like(%Q{
- `users`.`id` IN (SELECT `users`.`id`, `users`.`name` FROM `users`)
- })
- end
-
- adapter_is :oracle do
- sql.should be_like(%Q{
- "USERS"."ID" IN (SELECT "USERS"."ID", "USERS"."NAME" FROM "USERS")
- })
- end
-
- adapter_is_not :mysql, :oracle do
- sql.should be_like(%Q{
- "users"."id" IN (SELECT "users"."id", "users"."name" FROM "users")
- })
- end
- end
- end
- end
- end
- end
-end