diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2012-02-23 10:48:37 -0800 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2012-02-23 10:48:37 -0800 |
commit | b757de114cf79d0bab14b086f4ccc7480b9421d8 (patch) | |
tree | 0ca4d7ee6bc92f0337d894e2fcc844947d5d2c3d /test/nodes | |
parent | 6e427e589820278908e7a746749eb9b79b0f85e3 (diff) | |
parent | 74aadecc4f58e73704ac6a6fdaf25e48832374cf (diff) | |
download | rails-b757de114cf79d0bab14b086f4ccc7480b9421d8.tar.gz rails-b757de114cf79d0bab14b086f4ccc7480b9421d8.tar.bz2 rails-b757de114cf79d0bab14b086f4ccc7480b9421d8.zip |
Merge pull request #103 from alexstaubo/master
ANSI SQL2003 window functions
Diffstat (limited to 'test/nodes')
-rw-r--r-- | test/nodes/test_extract.rb | 19 | ||||
-rw-r--r-- | test/nodes/test_over.rb | 49 |
2 files changed, 68 insertions, 0 deletions
diff --git a/test/nodes/test_extract.rb b/test/nodes/test_extract.rb new file mode 100644 index 0000000000..bd1dfa4750 --- /dev/null +++ b/test/nodes/test_extract.rb @@ -0,0 +1,19 @@ +require 'helper' + +describe Arel::Nodes::Extract do + it "should extract field" do + table = Arel::Table.new :users + table[:timestamp].extract('date').to_sql.must_be_like %{ + EXTRACT(DATE FROM "users"."timestamp") + } + end + + describe "as" do + it 'should alias the extract' do + table = Arel::Table.new :users + table[:timestamp].extract('date').as('foo').to_sql.must_be_like %{ + EXTRACT(DATE FROM "users"."timestamp") AS foo + } + end + end +end diff --git a/test/nodes/test_over.rb b/test/nodes/test_over.rb new file mode 100644 index 0000000000..0bdd665e56 --- /dev/null +++ b/test/nodes/test_over.rb @@ -0,0 +1,49 @@ +require 'helper' + +describe Arel::Nodes::Over do + describe 'as' do + it 'should alias the expression' do + table = Arel::Table.new :users + table[:id].count.over.as('foo').to_sql.must_be_like %{ + COUNT("users"."id") OVER () AS foo + } + end + end + + describe 'with literal' do + it 'should reference the window definition by name' do + table = Arel::Table.new :users + table[:id].count.over('foo').to_sql.must_be_like %{ + COUNT("users"."id") OVER "foo" + } + end + end + + describe 'with SQL literal' do + it 'should reference the window definition by name' do + table = Arel::Table.new :users + table[:id].count.over(Arel.sql('foo')).to_sql.must_be_like %{ + COUNT("users"."id") OVER foo + } + end + end + + describe 'with no expression' do + it 'should use empty definition' do + table = Arel::Table.new :users + table[:id].count.over.to_sql.must_be_like %{ + COUNT("users"."id") OVER () + } + end + end + + describe 'with expression' do + it 'should use definition in sub-expression' do + table = Arel::Table.new :users + window = Arel::Nodes::Window.new.order(table['foo']) + table[:id].count.over(window).to_sql.must_be_like %{ + COUNT("users"."id") OVER (ORDER BY \"users\".\"foo\") + } + end + end +end |