diff options
author | Brian Cardarella <bcardarella@gmail.com> | 2011-01-22 09:16:53 -0500 |
---|---|---|
committer | Brian Cardarella <bcardarella@gmail.com> | 2011-01-22 09:16:53 -0500 |
commit | 74caeaad157e79853b9c6804f561d3c70eea2346 (patch) | |
tree | 7a84f9934e9fef34b35849286a2f59dc95c3871c /test | |
parent | e411e26f0798e64c634c3dc2da8ad05fc8e936de (diff) | |
download | rails-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.rb | 54 |
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 |