1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
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, 'ASC')
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, 'ASC') 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], 'ASC') 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, 'ASC') 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'], 'ASC') 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, 'ASC') 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
|