aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorBrian Cardarella <bcardarella@gmail.com>2011-01-22 09:16:53 -0500
committerBrian Cardarella <bcardarella@gmail.com>2011-01-22 09:16:53 -0500
commit74caeaad157e79853b9c6804f561d3c70eea2346 (patch)
tree7a84f9934e9fef34b35849286a2f59dc95c3871c /test
parente411e26f0798e64c634c3dc2da8ad05fc8e936de (diff)
downloadrails-74caeaad157e79853b9c6804f561d3c70eea2346.tar.gz
rails-74caeaad157e79853b9c6804f561d3c70eea2346.tar.bz2
rails-74caeaad157e79853b9c6804f561d3c70eea2346.zip
Added support for INTERSECT and EXCEPT
Diffstat (limited to 'test')
-rw-r--r--test/test_select_manager.rb54
1 files changed, 54 insertions, 0 deletions
diff --git a/test/test_select_manager.rb b/test/test_select_manager.rb
index bd96345b01..f457c55f40 100644
--- a/test/test_select_manager.rb
+++ b/test/test_select_manager.rb
@@ -213,6 +213,60 @@ module Arel
end
+ describe 'intersect' do
+ before do
+ table = Table.new :users
+ @m1 = Arel::SelectManager.new Table.engine, table
+ @m1.project Arel.star
+ @m1.where(table[:age].gt(18))
+
+ @m2 = Arel::SelectManager.new Table.engine, table
+ @m2.project Arel.star
+ @m2.where(table[:age].lt(99))
+
+
+ end
+
+ it 'should interect two managers' do
+ # FIXME should this intersect "managers" or "statements" ?
+ # FIXME this probably shouldn't return a node
+ node = @m1.intersect @m2
+
+ # maybe FIXME: decide when wrapper parens are needed
+ node.to_sql.must_be_like %{
+ ( SELECT * FROM "users" WHERE "users"."age" > 18 INTERSECT SELECT * FROM "users" WHERE "users"."age" < 99 )
+ }
+ end
+
+ end
+
+ describe 'except' do
+ before do
+ table = Table.new :users
+ @m1 = Arel::SelectManager.new Table.engine, table
+ @m1.project Arel.star
+ @m1.where(table[:age].in(18..60))
+
+ @m2 = Arel::SelectManager.new Table.engine, table
+ @m2.project Arel.star
+ @m2.where(table[:age].in(40..99))
+
+
+ end
+
+ it 'should except two managers' do
+ # FIXME should this except "managers" or "statements" ?
+ # FIXME this probably shouldn't return a node
+ node = @m1.except @m2
+
+ # maybe FIXME: decide when wrapper parens are needed
+ node.to_sql.must_be_like %{
+ ( SELECT * FROM "users" WHERE "users"."age" BETWEEN 18 AND 60 EXCEPT SELECT * FROM "users" WHERE "users"."age" BETWEEN 40 AND 99 )
+ }
+ end
+
+ end
+
describe 'with' do
it "should support WITH RECURSIVE" do