diff options
author | Jochen Topf <jochen@topf.org> | 2010-11-07 18:37:14 +0100 |
---|---|---|
committer | Jochen Topf <jochen@topf.org> | 2010-11-07 18:37:14 +0100 |
commit | 0e893eb2b33c7fd0eb26e0b29ce7b400f07b14ae (patch) | |
tree | 215bc901df8cbc73b52fb2d2bd1d0cb578cd8689 /web/test | |
parent | a12227eb394955dfdff2a6032b75156754f8f804 (diff) | |
download | taginfo-0e893eb2b33c7fd0eb26e0b29ce7b400f07b14ae.tar taginfo-0e893eb2b33c7fd0eb26e0b29ce7b400f07b14ae.tar.gz |
Refactoring order_by
Diffstat (limited to 'web/test')
-rw-r--r-- | web/test/test_sql.rb | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/web/test/test_sql.rb b/web/test/test_sql.rb new file mode 100644 index 0000000..4ff7ca0 --- /dev/null +++ b/web/test/test_sql.rb @@ -0,0 +1,103 @@ +$: << 'lib' +require File.join(File.dirname(__FILE__), '..', 'lib', 'sql.rb') +require 'test/unit' + +class TestSql < Test::Unit::TestCase + + def setup + @select = SQL::Select.new('test', 'test') + end + + def test_order_by_no_block + assert_kind_of SQL::Select, @select + @select.order_by(:foo) + assert_equal 'test ORDER BY foo ASC', @select.build_query + end + + def test_order_by_no_block_desc + assert_kind_of SQL::Select, @select + @select.order_by(:foo, :desc) + assert_equal 'test ORDER BY foo DESC', @select.build_query + end + + def test_order_by_simple + assert_kind_of SQL::Select, @select + @select.order_by(:foo) do |o| + o.foo + end + assert_equal 'test ORDER BY foo ASC', @select.build_query + end + + def test_order_by_desc + @select.order_by(:foo, 'desc') do |o| + o.foo + end + assert_equal 'test ORDER BY foo DESC', @select.build_query + end + + def test_order_by_unused + @select.order_by([:foo]) do |o| + o.foo + o.bar! 'baz' + end + assert_equal 'test ORDER BY foo ASC', @select.build_query + end + + def test_order_by_reverse + @select.order_by(:bar) do |o| + o.foo + o.bar! 'baz' + end + assert_equal 'test ORDER BY baz DESC', @select.build_query + end + + def test_order_by_array + @select.order_by([:foo, 'bar']) do |o| + o.bar! 'baz' + o.foo + end + assert_equal 'test ORDER BY foo ASC,baz DESC', @select.build_query + end + + def test_order_by_array_reverse + @select.order_by([:bar, :foo], 'DESC') do |o| + o.foo + o.bar! + end + assert_equal 'test ORDER BY bar ASC,foo DESC', @select.build_query + end + + def test_order_by_array_multiple + @select.order_by([:bar, :foo], :DESC) do |o| + o.foo 'f1' + o.foo! :f2 + o.bar :baz + end + assert_equal 'test ORDER BY baz DESC,f1 DESC,f2 ASC', @select.build_query + end + + def test_order_by_map + @select.order_by(:length) do |o| + o.length 'length(foo)' + o.length :foo + end + assert_equal 'test ORDER BY length(foo) ASC,foo ASC', @select.build_query + end + + def test_order_by_asc_or_desc + assert_raise ArgumentError do + @select.order_by(:foo, 'blub') do |o| + o.foo + end + end + end + + def test_order_by_no_def + assert_raise ArgumentError do + @select.order_by(:foo) do |o| + o.bar + end + end + end + +end |