searchlogic 1.5.3 → 1.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.rdoc +6 -0
- data/Manifest +37 -18
- data/README.rdoc +13 -17
- data/TODO.rdoc +1 -3
- data/lib/searchlogic.rb +6 -6
- data/lib/searchlogic/active_record/connection_adapters/sqlite_adapter.rb +9 -9
- data/lib/searchlogic/conditions/base.rb +20 -6
- data/lib/searchlogic/search/base.rb +0 -5
- data/lib/searchlogic/search/searching.rb +3 -1
- data/lib/searchlogic/version.rb +1 -1
- data/searchlogic.gemspec +4 -4
- data/test/active_record_tests/associations_test.rb +95 -0
- data/test/active_record_tests/base_test.rb +108 -0
- data/test/condition_tests/base_test.rb +54 -0
- data/test/condition_tests/begins_with_test.rb +11 -0
- data/test/condition_tests/blank_test.rb +31 -0
- data/test/condition_tests/child_of_test.rb +17 -0
- data/test/condition_tests/descendant_of_test.rb +16 -0
- data/test/condition_tests/ends_with_test.rb +11 -0
- data/test/condition_tests/equals_test.rb +19 -0
- data/test/condition_tests/greater_than_or_equal_to_test.rb +11 -0
- data/test/condition_tests/greater_than_test.rb +11 -0
- data/test/condition_tests/inclusive_descendant_of_test.rb +16 -0
- data/test/condition_tests/keyswords_test.rb +19 -0
- data/test/condition_tests/less_than_or_equal_to_test.rb +11 -0
- data/test/condition_tests/less_than_test.rb +11 -0
- data/test/condition_tests/like_test.rb +11 -0
- data/test/condition_tests/nil_test.rb +31 -0
- data/test/condition_tests/not_begin_with_test.rb +8 -0
- data/test/condition_tests/not_blank_test.rb +8 -0
- data/test/condition_tests/not_end_with_test.rb +8 -0
- data/test/condition_tests/not_equal_test.rb +19 -0
- data/test/condition_tests/not_have_keywords_test.rb +8 -0
- data/test/condition_tests/not_like_test.rb +8 -0
- data/test/condition_tests/not_nil_test.rb +13 -0
- data/test/condition_tests/sibling_of_test.rb +15 -0
- data/test/conditions_tests/base_test.rb +221 -0
- data/test/conditions_tests/protection_test.rb +18 -0
- data/test/{test_config.rb → config_test.rb} +1 -1
- data/test/fixtures/accounts.yml +0 -3
- data/test/fixtures/animals.yml +7 -0
- data/test/fixtures/orders.yml +2 -4
- data/test/fixtures/user_groups.yml +3 -9
- data/test/fixtures/users.yml +6 -12
- data/{test_libs → test/libs}/acts_as_tree.rb +0 -0
- data/{test_libs → test/libs}/rexml_fix.rb +0 -0
- data/test/modifier_tests/day_of_month_test.rb +16 -0
- data/test/search_tests/base_test.rb +237 -0
- data/test/search_tests/conditions_test.rb +21 -0
- data/test/search_tests/ordering_test.rb +167 -0
- data/test/search_tests/pagination_test.rb +74 -0
- data/test/search_tests/protection_test.rb +26 -0
- data/test/test_helper.rb +79 -83
- metadata +73 -32
- data/examples/README.rdoc +0 -4
- data/test/fixtures/cats.yml +0 -3
- data/test/fixtures/dogs.yml +0 -3
- data/test/test_active_record_associations.rb +0 -81
- data/test/test_active_record_base.rb +0 -93
- data/test/test_condition_base.rb +0 -52
- data/test/test_condition_types.rb +0 -143
- data/test/test_conditions_base.rb +0 -242
- data/test/test_conditions_protection.rb +0 -16
- data/test/test_search_base.rb +0 -227
- data/test/test_search_conditions.rb +0 -19
- data/test/test_search_ordering.rb +0 -165
- data/test/test_search_pagination.rb +0 -72
- data/test/test_search_protection.rb +0 -24
- data/test_libs/ordered_hash.rb +0 -9
@@ -0,0 +1,237 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper.rb'
|
2
|
+
|
3
|
+
module SearchTests
|
4
|
+
class BaseTest < ActiveSupport::TestCase
|
5
|
+
def test_needed
|
6
|
+
assert Searchlogic::Search::Base.needed?(Account, :page => 2, :conditions => {:name => "Ben"})
|
7
|
+
assert !Searchlogic::Search::Base.needed?(Account, :conditions => {:name => "Ben"})
|
8
|
+
assert Searchlogic::Search::Base.needed?(Account, :limit => 2, :conditions => {:name_contains => "Ben"})
|
9
|
+
assert !Searchlogic::Search::Base.needed?(Account, :limit => 2)
|
10
|
+
assert Searchlogic::Search::Base.needed?(Account, :per_page => 2)
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_initialize
|
14
|
+
assert_nothing_raised { Account.new_search }
|
15
|
+
search = Account.new_search!(:conditions => {:name_like => "binary"}, :page => 2, :limit => 10, :readonly => true)
|
16
|
+
assert_equal Account, search.klass
|
17
|
+
assert_equal "binary", search.conditions.name_like
|
18
|
+
assert_equal 2, search.page
|
19
|
+
assert_equal 10, search.limit
|
20
|
+
assert_equal true, search.readonly
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_acting_as_filter
|
24
|
+
search = Account.new_search
|
25
|
+
search.acting_as_filter = true
|
26
|
+
assert search.acting_as_filter?
|
27
|
+
search.acting_as_filter = false
|
28
|
+
assert !search.acting_as_filter?
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_setting_first_level_options
|
32
|
+
search = Account.new_search!(:include => :users, :joins => :users, :offset => 5, :limit => 20, :order => "name ASC", :select => "name", :readonly => true, :group => "name", :from => "accounts", :lock => true)
|
33
|
+
assert_equal :users, search.include
|
34
|
+
assert_equal :users, search.joins
|
35
|
+
assert_equal 5, search.offset
|
36
|
+
assert_equal 20, search.limit
|
37
|
+
assert_equal "name ASC", search.order
|
38
|
+
assert_equal "name", search.select
|
39
|
+
assert_equal true, search.readonly
|
40
|
+
assert_equal "name", search.group
|
41
|
+
assert_equal "accounts", search.from
|
42
|
+
assert_equal true, search.lock
|
43
|
+
|
44
|
+
search = Account.new_search(:per_page => nil)
|
45
|
+
|
46
|
+
search.include = :users
|
47
|
+
assert_equal :users, search.include
|
48
|
+
|
49
|
+
# treat it like SQL, just like AR
|
50
|
+
search.joins = "users"
|
51
|
+
assert_equal "users", search.joins
|
52
|
+
|
53
|
+
search.page = 5
|
54
|
+
assert_equal 1, search.page
|
55
|
+
assert_nil search.offset
|
56
|
+
|
57
|
+
search.limit = 20
|
58
|
+
assert_equal search.limit, 20
|
59
|
+
assert_equal search.per_page, 20
|
60
|
+
assert_equal search.page, 5
|
61
|
+
assert_equal search.offset, 80
|
62
|
+
search.limit = nil
|
63
|
+
assert_nil search.limit
|
64
|
+
assert_nil search.per_page
|
65
|
+
assert_equal 1, search.page
|
66
|
+
assert_nil search.offset
|
67
|
+
|
68
|
+
search.offset = 50
|
69
|
+
assert_equal 50, search.offset
|
70
|
+
assert_equal 1, search.page
|
71
|
+
search.limit = 50
|
72
|
+
assert_equal 2, search.page
|
73
|
+
search.offset = nil
|
74
|
+
assert_nil search.offset
|
75
|
+
assert_equal 1, search.page
|
76
|
+
|
77
|
+
search.per_page = 2
|
78
|
+
assert_equal 2, search.per_page
|
79
|
+
assert_equal 2, search.limit
|
80
|
+
search.offset = 50
|
81
|
+
assert_equal 26, search.page
|
82
|
+
assert_equal 50, search.offset
|
83
|
+
|
84
|
+
search.order = "name ASC"
|
85
|
+
assert_equal search.order, "name ASC"
|
86
|
+
|
87
|
+
search.select = "name"
|
88
|
+
assert_equal search.select, "name"
|
89
|
+
|
90
|
+
search.readonly = true
|
91
|
+
assert_equal search.readonly, true
|
92
|
+
|
93
|
+
search.group = "name"
|
94
|
+
assert_equal search.group, "name"
|
95
|
+
|
96
|
+
search.from = "accounts"
|
97
|
+
assert_equal search.from, "accounts"
|
98
|
+
|
99
|
+
search.lock = true
|
100
|
+
assert_equal search.lock, true
|
101
|
+
end
|
102
|
+
|
103
|
+
def test_joins
|
104
|
+
search = Account.new_search
|
105
|
+
assert_nil search.joins
|
106
|
+
search.conditions.name_contains = "Binary"
|
107
|
+
assert_nil search.joins
|
108
|
+
search.conditions.users.first_name_contains = "Ben"
|
109
|
+
assert_equal(:users, search.joins)
|
110
|
+
search.conditions.users.orders.id_gt = 2
|
111
|
+
assert_equal({:users => :orders}, search.joins)
|
112
|
+
search.conditions.users.reset_orders!
|
113
|
+
assert_equal(:users, search.joins)
|
114
|
+
search.conditions.users.orders.id_gt = 2
|
115
|
+
search.conditions.reset_users!
|
116
|
+
assert_nil search.joins
|
117
|
+
end
|
118
|
+
|
119
|
+
def test_limit
|
120
|
+
search = Account.new_search
|
121
|
+
search.limit = 10
|
122
|
+
assert_equal 10, search.limit
|
123
|
+
search.page = 2
|
124
|
+
assert_equal 10, search.offset
|
125
|
+
search.limit = 25
|
126
|
+
assert_equal 25, search.offset
|
127
|
+
assert_equal 2, search.page
|
128
|
+
search.page = 5
|
129
|
+
assert_equal 5, search.page
|
130
|
+
assert_equal 25, search.limit
|
131
|
+
search.limit = 3
|
132
|
+
assert_equal 12, search.offset
|
133
|
+
end
|
134
|
+
|
135
|
+
def test_options
|
136
|
+
end
|
137
|
+
|
138
|
+
def test_sanitize
|
139
|
+
search = Account.new_search
|
140
|
+
search.per_page = 2
|
141
|
+
search.conditions.name_like = "Binary"
|
142
|
+
search.conditions.users.id_greater_than = 2
|
143
|
+
search.page = 3
|
144
|
+
search.readonly = true
|
145
|
+
assert_equal_find_options({:joins => :users, :offset => 4, :readonly => true, :conditions => ["(\"accounts\".\"name\" LIKE ?) AND (\"users\".\"id\" > ?)", "%Binary%", 2], :limit => 2 }, search.sanitize)
|
146
|
+
end
|
147
|
+
|
148
|
+
def test_scope
|
149
|
+
search = Account.new_search!
|
150
|
+
search.conditions = "some sql"
|
151
|
+
conditions = search.conditions
|
152
|
+
assert_equal "some sql", search.conditions.conditions
|
153
|
+
search.conditions = nil
|
154
|
+
assert_nil search.conditions.conditions
|
155
|
+
search.conditions = "some sql"
|
156
|
+
assert_equal "some sql", search.conditions.conditions
|
157
|
+
search.conditions = "some sql"
|
158
|
+
assert_equal "some sql", search.conditions.conditions
|
159
|
+
end
|
160
|
+
|
161
|
+
def test_searching
|
162
|
+
binary_logic = accounts(:binary_logic)
|
163
|
+
neco = accounts(:neco)
|
164
|
+
binary_fun = accounts(:binary_fun)
|
165
|
+
|
166
|
+
search = Account.new_search
|
167
|
+
search.conditions.name_like = "Binary"
|
168
|
+
assert_equal [binary_logic, binary_fun], search.all
|
169
|
+
assert_equal [binary_logic, binary_fun], search.find(:all)
|
170
|
+
assert_equal binary_logic, search.first
|
171
|
+
assert_equal binary_logic, search.find(:first)
|
172
|
+
|
173
|
+
search.per_page = 20
|
174
|
+
search.page = 2
|
175
|
+
|
176
|
+
assert_equal [], search.all
|
177
|
+
assert_equal [], search.find(:all)
|
178
|
+
assert_nil search.first
|
179
|
+
assert_nil search.find(:first)
|
180
|
+
|
181
|
+
search.per_page = 0
|
182
|
+
search.page = nil
|
183
|
+
search.conditions.users.first_name_contains = "Ben"
|
184
|
+
search.conditions.users.orders.description_keywords = "products, &*ap#ple $%^&*"
|
185
|
+
assert_equal [binary_logic], search.all
|
186
|
+
assert_equal [binary_logic], search.find(:all)
|
187
|
+
assert_equal binary_logic, search.first
|
188
|
+
assert_equal binary_logic, search.find(:first)
|
189
|
+
|
190
|
+
search = Account.new_search
|
191
|
+
search.select = "id, name"
|
192
|
+
assert_equal Account.all, search.all
|
193
|
+
|
194
|
+
search = Account.scope1.new_search!(:conditions => {:users => {:first_name_starts_with => "Ben"}})
|
195
|
+
assert_equal [binary_logic], search.all
|
196
|
+
search2 = search.dup
|
197
|
+
assert_equal [binary_logic], search2.all
|
198
|
+
end
|
199
|
+
|
200
|
+
def test_calculations
|
201
|
+
binary_logic = accounts(:binary_logic)
|
202
|
+
binary_fun = accounts(:binary_fun)
|
203
|
+
bens_order = orders(:bens_order)
|
204
|
+
|
205
|
+
search = Account.new_search
|
206
|
+
search.conditions.name_like = "Binary"
|
207
|
+
assert_equal (binary_logic.id + binary_fun.id) / 2.0, search.average('id')
|
208
|
+
assert_equal (binary_logic.id + binary_fun.id) / 2.0, search.calculate(:avg, 'id')
|
209
|
+
assert_equal binary_fun.id, search.calculate(:max, 'id')
|
210
|
+
assert_equal 2, search.count
|
211
|
+
assert_equal binary_fun.id, search.maximum('id')
|
212
|
+
assert_equal binary_logic.id, search.minimum('id')
|
213
|
+
assert_equal binary_logic.id + binary_fun.id, search.sum('id')
|
214
|
+
|
215
|
+
search.readonly = true
|
216
|
+
assert_equal binary_logic.id + binary_fun.id, search.sum('id')
|
217
|
+
|
218
|
+
search = Account.new_search(:conditions => {:users => {:orders => {:id_gt => bens_order.id}}})
|
219
|
+
assert_equal 1, search.count
|
220
|
+
|
221
|
+
search = Order.new_search(:conditions => {:user => {:account => {:id_gt => binary_logic.id}}})
|
222
|
+
assert_equal 1, search.count
|
223
|
+
|
224
|
+
search = UserGroup.new_search(:conditions => {:users => {:orders => {:id_gt => bens_order.id}}})
|
225
|
+
assert_equal 1, search.count
|
226
|
+
end
|
227
|
+
|
228
|
+
def test_inspect
|
229
|
+
search = Account.new_search
|
230
|
+
assert_nothing_raised { search.inspect }
|
231
|
+
end
|
232
|
+
|
233
|
+
def test_sti
|
234
|
+
|
235
|
+
end
|
236
|
+
end
|
237
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper.rb'
|
2
|
+
|
3
|
+
module SearchTests
|
4
|
+
class TestSearchConditions < ActiveSupport::TestCase
|
5
|
+
def test_conditions
|
6
|
+
search = Account.new_search
|
7
|
+
assert_kind_of Searchlogic::Conditions::Base, search.conditions
|
8
|
+
assert_equal search.conditions.klass, Account
|
9
|
+
|
10
|
+
search.conditions = {:name_like => "Binary"}
|
11
|
+
assert_kind_of Searchlogic::Conditions::Base, search.conditions
|
12
|
+
|
13
|
+
search = Account.new_search(:conditions => {:name_like => "Ben"})
|
14
|
+
assert_equal({:name_like => "Ben"}, search.conditions.conditions)
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_sanitize
|
18
|
+
# This is tested in test_search_base
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,167 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper.rb'
|
2
|
+
|
3
|
+
module SearchTests
|
4
|
+
class OrderingTest < ActiveSupport::TestCase
|
5
|
+
def test_order_to_order_by
|
6
|
+
search = Account.new_search
|
7
|
+
search.order = "name"
|
8
|
+
assert_equal "name", search.order_by
|
9
|
+
search.order = "users.first_name"
|
10
|
+
assert_equal({"users" => "first_name"}, search.order_by)
|
11
|
+
search.order = "\"users\".\"first_name\""
|
12
|
+
assert_equal({"users" => "first_name"}, search.order_by)
|
13
|
+
search.order = "\"users\".\"first_name\", name ASC"
|
14
|
+
assert_equal([{"users" => "first_name"}, "name"], search.order_by)
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_order_by
|
18
|
+
search = Account.new_search
|
19
|
+
assert_nil search.order
|
20
|
+
assert_nil search.order_by
|
21
|
+
|
22
|
+
search.order_by = "first_name"
|
23
|
+
assert_equal "first_name", search.order_by
|
24
|
+
assert_equal "\"accounts\".\"first_name\"", search.order
|
25
|
+
|
26
|
+
search.order_by = "last_name"
|
27
|
+
assert_equal "last_name", search.order_by
|
28
|
+
assert_equal "\"accounts\".\"last_name\"", search.order
|
29
|
+
|
30
|
+
search.order_by = ["first_name", "last_name"]
|
31
|
+
assert_equal ["first_name", "last_name"], search.order_by
|
32
|
+
assert_equal "\"accounts\".\"first_name\", \"accounts\".\"last_name\"", search.order
|
33
|
+
|
34
|
+
search.order = "created_at DESC"
|
35
|
+
assert_equal "created_at", search.order_by
|
36
|
+
assert_equal "created_at DESC", search.order
|
37
|
+
|
38
|
+
search.order = "\"users\".updated_at ASC"
|
39
|
+
assert_equal({"users" => "updated_at"}, search.order_by)
|
40
|
+
assert_equal "\"users\".updated_at ASC", search.order
|
41
|
+
|
42
|
+
search.order = "`users`.first_name DESC"
|
43
|
+
assert_equal({"users" => "first_name"}, search.order_by)
|
44
|
+
assert_equal "`users`.first_name DESC", search.order
|
45
|
+
|
46
|
+
search.order = "`accounts`.name DESC"
|
47
|
+
assert_equal "name", search.order_by
|
48
|
+
assert_equal "`accounts`.name DESC", search.order
|
49
|
+
|
50
|
+
search.order = "accounts.name DESC"
|
51
|
+
assert_equal "name", search.order_by
|
52
|
+
assert_equal "accounts.name DESC", search.order
|
53
|
+
|
54
|
+
search.order = "`users`.first_name DESC, name DESC, `accounts`.id DESC"
|
55
|
+
assert_equal [{"users" => "first_name"}, "name", "id"], search.order_by
|
56
|
+
assert_equal "`users`.first_name DESC, name DESC, `accounts`.id DESC", search.order
|
57
|
+
|
58
|
+
search.order = "`users`.first_name DESC, `line_items`.id DESC, `accounts`.id DESC"
|
59
|
+
assert_equal [{"users" => "first_name"}, "id"], search.order_by
|
60
|
+
assert_equal "`users`.first_name DESC, `line_items`.id DESC, `accounts`.id DESC", search.order
|
61
|
+
|
62
|
+
search.order = "`line_items`.id DESC"
|
63
|
+
assert_nil search.order_by
|
64
|
+
assert_equal "`line_items`.id DESC", search.order
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_order_as
|
68
|
+
search = Account.new_search
|
69
|
+
assert_nil search.order
|
70
|
+
assert_nil search.order_as
|
71
|
+
assert search.asc?
|
72
|
+
assert !search.desc?
|
73
|
+
|
74
|
+
search.order_as = "DESC"
|
75
|
+
assert_nil search.order_as
|
76
|
+
assert !search.desc?
|
77
|
+
assert_nil search.order
|
78
|
+
|
79
|
+
search.order_by = "name"
|
80
|
+
assert_equal "\"accounts\".\"name\" DESC", search.order
|
81
|
+
|
82
|
+
search.order_as = "ASC"
|
83
|
+
assert_equal "\"accounts\".\"name\" ASC", search.order
|
84
|
+
assert search.asc?
|
85
|
+
|
86
|
+
search.order = "id ASC"
|
87
|
+
assert_equal "ASC", search.order_as
|
88
|
+
assert search.asc?
|
89
|
+
assert_equal "id ASC", search.order
|
90
|
+
|
91
|
+
search.order = "id DESC"
|
92
|
+
assert_equal "DESC", search.order_as
|
93
|
+
assert search.desc?
|
94
|
+
assert_equal "id DESC", search.order
|
95
|
+
|
96
|
+
search.order_by = "name"
|
97
|
+
assert_equal "DESC", search.order_as
|
98
|
+
assert search.desc?
|
99
|
+
assert_equal "\"accounts\".\"name\" DESC", search.order
|
100
|
+
|
101
|
+
assert_raise(ArgumentError) { search.order_as = "awesome" }
|
102
|
+
end
|
103
|
+
|
104
|
+
def test_order_by_auto_joins
|
105
|
+
search = Account.new_search
|
106
|
+
assert_nil search.order_by_auto_joins
|
107
|
+
search.order_by = :name
|
108
|
+
assert_nil search.order_by_auto_joins
|
109
|
+
search.order_by = {:users => :first_name}
|
110
|
+
assert_equal :users, search.order_by_auto_joins
|
111
|
+
search.order_by = [{:users => :first_name}, {:orders => :total}, {:users => {:user_groups => :name}}]
|
112
|
+
assert_equal [:users, :orders, {:users => :user_groups}], search.order_by_auto_joins
|
113
|
+
search.priority_order_by = {:users => :first_name}
|
114
|
+
assert_equal [:users, :orders, {:users => :user_groups}], search.order_by_auto_joins
|
115
|
+
search.priority_order_by = {:users => {:orders => :total}}
|
116
|
+
assert_equal({:users => :orders}, search.priority_order_by_auto_joins)
|
117
|
+
end
|
118
|
+
|
119
|
+
def test_priority_order_by
|
120
|
+
search = Account.new_search
|
121
|
+
assert_nil search.priority_order
|
122
|
+
assert_nil search.priority_order_by
|
123
|
+
assert_nil search.priority_order_as
|
124
|
+
|
125
|
+
search.priority_order_by = :name
|
126
|
+
assert_equal "\"accounts\".\"name\"", search.priority_order
|
127
|
+
assert_equal "\"accounts\".\"name\"", search.sanitize[:order]
|
128
|
+
assert_nil search.order
|
129
|
+
assert_equal :name, search.priority_order_by
|
130
|
+
assert_nil search.priority_order_as
|
131
|
+
|
132
|
+
search.order_by = :id
|
133
|
+
assert_equal "\"accounts\".\"name\", \"accounts\".\"id\"", search.sanitize[:order]
|
134
|
+
search.order_as = "DESC"
|
135
|
+
assert_equal "\"accounts\".\"name\", \"accounts\".\"id\" DESC", search.sanitize[:order]
|
136
|
+
end
|
137
|
+
|
138
|
+
def test_priority_order_as
|
139
|
+
search = Account.new_search
|
140
|
+
assert_nil search.priority_order_as
|
141
|
+
assert_nil search.order_as
|
142
|
+
search.priority_order_as = "ASC"
|
143
|
+
assert_nil search.priority_order_as
|
144
|
+
assert_nil search.order_as
|
145
|
+
search.priority_order_by = :name
|
146
|
+
assert_equal "ASC", search.priority_order_as
|
147
|
+
assert_nil search.order_as
|
148
|
+
search.priority_order_as = "DESC"
|
149
|
+
assert_equal "DESC", search.priority_order_as
|
150
|
+
assert_nil search.order_as
|
151
|
+
assert_raise(ArgumentError) { search.priority_order_as = "awesome" }
|
152
|
+
search.priority_order = nil
|
153
|
+
assert_nil search.priority_order_as
|
154
|
+
assert_nil search.order_as
|
155
|
+
end
|
156
|
+
|
157
|
+
def test_sanitize
|
158
|
+
# tested in test_priority_order_by
|
159
|
+
end
|
160
|
+
|
161
|
+
def test_ordering_includes_blank
|
162
|
+
search = User.new_search!
|
163
|
+
search.order_by = {:account => :name}
|
164
|
+
assert_equal 4, search.count
|
165
|
+
end
|
166
|
+
end
|
167
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper.rb'
|
2
|
+
|
3
|
+
module SearchTests
|
4
|
+
class PaginationTest < ActiveSupport::TestCase
|
5
|
+
def test_limit
|
6
|
+
search = Account.new_search
|
7
|
+
search.limit = 10
|
8
|
+
assert_equal 10, search.limit
|
9
|
+
search.page = 2
|
10
|
+
assert_equal 10, search.offset
|
11
|
+
search.limit = 25
|
12
|
+
assert_equal 25, search.offset
|
13
|
+
assert_equal 2, search.page
|
14
|
+
search.page = 5
|
15
|
+
assert_equal 5, search.page
|
16
|
+
assert_equal 25, search.limit
|
17
|
+
search.limit = 3
|
18
|
+
assert_equal 12, search.offset
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_page
|
22
|
+
search = Account.new_search(:per_page => nil)
|
23
|
+
search.page = 2
|
24
|
+
assert_equal 1, search.page
|
25
|
+
search.per_page = 20
|
26
|
+
assert_equal 2, search.page
|
27
|
+
search.limit = 0
|
28
|
+
assert_equal 1, search.page
|
29
|
+
search.per_page = 20
|
30
|
+
assert_equal 2, search.page
|
31
|
+
search.limit = nil
|
32
|
+
assert_equal 1, search.page
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_per_page
|
36
|
+
search = Account.new_search
|
37
|
+
search.per_page = 10
|
38
|
+
assert_equal 10, search.per_page
|
39
|
+
search.per_page = ""
|
40
|
+
assert_nil search.per_page
|
41
|
+
search.per_page = 40
|
42
|
+
assert_equal 40, search.per_page
|
43
|
+
search.per_page = nil
|
44
|
+
assert_nil search.per_page
|
45
|
+
search.per_page = 60
|
46
|
+
assert_equal 60, search.per_page
|
47
|
+
search.per_page = false
|
48
|
+
assert_nil search.per_page
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_next_page
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_prev_page
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_page_count
|
60
|
+
search = Account.new_search
|
61
|
+
assert_equal 1, search.page_count
|
62
|
+
search.per_page = 1
|
63
|
+
assert_equal 3, search.page_count
|
64
|
+
search.per_page = 100
|
65
|
+
assert_equal 1, search.page_count
|
66
|
+
|
67
|
+
Searchlogic::Config.search.per_page = 1
|
68
|
+
search = Account.new_search
|
69
|
+
assert_equal 3, search.page_count
|
70
|
+
search.conditions.users.first_name_contains
|
71
|
+
assert_equal 3, search.page_count
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|