searchgasm 0.9.6 → 0.9.7
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +2 -0
- data/Manifest +34 -21
- data/{README.mdown → README.rdoc} +96 -63
- data/Rakefile +1 -1
- data/examples/README.rdoc +4 -0
- data/lib/searchgasm/active_record/associations.rb +40 -42
- data/lib/searchgasm/active_record/base.rb +75 -61
- data/lib/searchgasm/condition/base.rb +127 -0
- data/lib/searchgasm/condition/begins_with.rb +20 -0
- data/lib/searchgasm/condition/child_of.rb +11 -0
- data/lib/searchgasm/condition/contains.rb +20 -0
- data/lib/searchgasm/condition/descendant_of.rb +24 -0
- data/lib/searchgasm/condition/does_not_equal.rb +28 -0
- data/lib/searchgasm/condition/ends_with.rb +20 -0
- data/lib/searchgasm/condition/equals.rb +20 -0
- data/lib/searchgasm/condition/greater_than.rb +25 -0
- data/lib/searchgasm/condition/greater_than_or_equal_to.rb +20 -0
- data/lib/searchgasm/condition/inclusive_descendant_of.rb +13 -0
- data/lib/searchgasm/condition/keywords.rb +33 -0
- data/lib/searchgasm/condition/less_than.rb +25 -0
- data/lib/searchgasm/condition/less_than_or_equal_to.rb +20 -0
- data/lib/searchgasm/condition/sibling_of.rb +16 -0
- data/lib/searchgasm/condition/tree.rb +16 -0
- data/lib/searchgasm/conditions/base.rb +221 -0
- data/lib/searchgasm/conditions/protection.rb +30 -0
- data/lib/searchgasm/config.rb +137 -0
- data/lib/searchgasm/helpers/form_helper.rb +159 -0
- data/lib/searchgasm/helpers/search_helper.rb +178 -0
- data/lib/searchgasm/helpers/utilities_helper.rb +125 -0
- data/lib/searchgasm/search/base.rb +73 -179
- data/lib/searchgasm/search/conditions.rb +42 -166
- data/lib/searchgasm/search/ordering.rb +149 -0
- data/lib/searchgasm/search/pagination.rb +69 -0
- data/lib/searchgasm/search/protection.rb +61 -0
- data/lib/searchgasm/utilities.rb +30 -0
- data/lib/searchgasm/version.rb +44 -47
- data/lib/searchgasm.rb +57 -21
- data/searchgasm.gemspec +71 -46
- data/test/test_active_record_associations.rb +1 -1
- data/test/test_active_record_base.rb +4 -4
- data/test/test_condition.rb +143 -0
- data/test/{test_searchgasm_conditions.rb → test_conditions_base.rb} +43 -33
- data/test/test_search_base.rb +189 -0
- data/test/test_search_ordering.rb +91 -0
- data/test/test_search_pagination.rb +56 -0
- data/test/test_search_protection.rb +35 -0
- metadata +70 -45
- data/lib/searchgasm/search/condition.rb +0 -105
- data/lib/searchgasm/search/condition_types/begins_with_condition.rb +0 -26
- data/lib/searchgasm/search/condition_types/child_of_condition.rb +0 -17
- data/lib/searchgasm/search/condition_types/contains_condition.rb +0 -26
- data/lib/searchgasm/search/condition_types/descendant_of_condition.rb +0 -30
- data/lib/searchgasm/search/condition_types/does_not_equal_condition.rb +0 -34
- data/lib/searchgasm/search/condition_types/ends_with_condition.rb +0 -26
- data/lib/searchgasm/search/condition_types/equals_condition.rb +0 -26
- data/lib/searchgasm/search/condition_types/greater_than_condition.rb +0 -31
- data/lib/searchgasm/search/condition_types/greater_than_or_equal_to_condition.rb +0 -26
- data/lib/searchgasm/search/condition_types/inclusive_descendant_of_condition.rb +0 -19
- data/lib/searchgasm/search/condition_types/keywords_condition.rb +0 -39
- data/lib/searchgasm/search/condition_types/less_than_condition.rb +0 -31
- data/lib/searchgasm/search/condition_types/less_than_or_equal_to_condition.rb +0 -26
- data/lib/searchgasm/search/condition_types/sibling_of_condition.rb +0 -22
- data/lib/searchgasm/search/condition_types/tree_condition.rb +0 -20
- data/lib/searchgasm/search/utilities.rb +0 -34
- data/test/test_searchgasm_base.rb +0 -185
- data/test/test_searchgasm_condition_types.rb +0 -143
data/lib/searchgasm.rb
CHANGED
@@ -1,31 +1,67 @@
|
|
1
1
|
require "active_record"
|
2
|
+
require "active_support"
|
2
3
|
|
4
|
+
# Utilties
|
5
|
+
require "searchgasm/version"
|
6
|
+
require "searchgasm/config"
|
7
|
+
require "searchgasm/utilities"
|
8
|
+
|
9
|
+
# ActiveRecord
|
3
10
|
require "searchgasm/active_record/base"
|
4
11
|
require "searchgasm/active_record/associations"
|
5
12
|
|
6
|
-
|
7
|
-
require "searchgasm/search/
|
8
|
-
require "searchgasm/search/
|
13
|
+
# Search
|
14
|
+
require "searchgasm/search/ordering"
|
15
|
+
require "searchgasm/search/pagination"
|
9
16
|
require "searchgasm/search/conditions"
|
10
17
|
require "searchgasm/search/base"
|
18
|
+
require "searchgasm/search/protection"
|
19
|
+
|
20
|
+
# Conditions
|
21
|
+
require "searchgasm/conditions/protection"
|
22
|
+
require "searchgasm/conditions/base"
|
11
23
|
|
12
|
-
#
|
13
|
-
require "searchgasm/
|
14
|
-
require "searchgasm/
|
15
|
-
require "searchgasm/
|
16
|
-
require "searchgasm/
|
17
|
-
require "searchgasm/
|
18
|
-
require "searchgasm/
|
19
|
-
require "searchgasm/
|
20
|
-
require "searchgasm/
|
21
|
-
require "searchgasm/
|
22
|
-
require "searchgasm/
|
24
|
+
# Condition
|
25
|
+
require "searchgasm/condition/base"
|
26
|
+
require "searchgasm/condition/begins_with"
|
27
|
+
require "searchgasm/condition/contains"
|
28
|
+
require "searchgasm/condition/does_not_equal"
|
29
|
+
require "searchgasm/condition/ends_with"
|
30
|
+
require "searchgasm/condition/equals"
|
31
|
+
require "searchgasm/condition/greater_than"
|
32
|
+
require "searchgasm/condition/greater_than_or_equal_to"
|
33
|
+
require "searchgasm/condition/keywords"
|
34
|
+
require "searchgasm/condition/less_than"
|
35
|
+
require "searchgasm/condition/less_than_or_equal_to"
|
36
|
+
require "searchgasm/condition/tree"
|
37
|
+
require "searchgasm/condition/child_of"
|
38
|
+
require "searchgasm/condition/descendant_of"
|
39
|
+
require "searchgasm/condition/inclusive_descendant_of"
|
40
|
+
require "searchgasm/condition/sibling_of"
|
23
41
|
|
24
|
-
#
|
25
|
-
require "searchgasm/
|
26
|
-
require "searchgasm/
|
27
|
-
require "searchgasm/
|
28
|
-
require "searchgasm/search/condition_types/inclusive_descendant_of_condition"
|
29
|
-
require "searchgasm/search/condition_types/sibling_of_condition"
|
42
|
+
# Helpers
|
43
|
+
require "searchgasm/helpers/utilities_helper"
|
44
|
+
require "searchgasm/helpers/form_helper"
|
45
|
+
require "searchgasm/helpers/search_helper"
|
30
46
|
|
31
|
-
|
47
|
+
# Lets do it!
|
48
|
+
module Searchgasm
|
49
|
+
module Search
|
50
|
+
class Base
|
51
|
+
include Conditions
|
52
|
+
include Ordering
|
53
|
+
include Pagination
|
54
|
+
include Protection
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
module Conditions
|
59
|
+
class Base
|
60
|
+
include Protection
|
61
|
+
end
|
62
|
+
|
63
|
+
[:begins_with, :child_of, :contains, :descendant_of, :does_not_equal, :ends_with, :equals, :greater_than, :greater_than_or_equal_to, :inclusive_descendant_of, :keywords, :less_than, :less_than_or_equal_to, :sibling_of].each do |condition|
|
64
|
+
Base.register_condition("Searchgasm::Condition::#{condition.to_s.camelize}".constantize)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
data/searchgasm.gemspec
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
|
2
|
-
# Gem::Specification for Searchgasm-0.9.
|
2
|
+
# Gem::Specification for Searchgasm-0.9.7
|
3
3
|
# Originally generated by Echoe
|
4
4
|
|
5
5
|
--- !ruby/object:Gem::Specification
|
6
6
|
name: searchgasm
|
7
7
|
version: !ruby/object:Gem::Version
|
8
|
-
version: 0.9.
|
8
|
+
version: 0.9.7
|
9
9
|
platform: ruby
|
10
10
|
authors:
|
11
11
|
- Ben Johnson of Binary Logic
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
|
15
|
-
date: 2008-09-
|
15
|
+
date: 2008-09-06 00:00:00 -04:00
|
16
16
|
default_executable:
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
@@ -55,58 +55,77 @@ extra_rdoc_files:
|
|
55
55
|
- CHANGELOG
|
56
56
|
- lib/searchgasm/active_record/associations.rb
|
57
57
|
- lib/searchgasm/active_record/base.rb
|
58
|
+
- lib/searchgasm/condition/base.rb
|
59
|
+
- lib/searchgasm/condition/begins_with.rb
|
60
|
+
- lib/searchgasm/condition/child_of.rb
|
61
|
+
- lib/searchgasm/condition/contains.rb
|
62
|
+
- lib/searchgasm/condition/descendant_of.rb
|
63
|
+
- lib/searchgasm/condition/does_not_equal.rb
|
64
|
+
- lib/searchgasm/condition/ends_with.rb
|
65
|
+
- lib/searchgasm/condition/equals.rb
|
66
|
+
- lib/searchgasm/condition/greater_than.rb
|
67
|
+
- lib/searchgasm/condition/greater_than_or_equal_to.rb
|
68
|
+
- lib/searchgasm/condition/inclusive_descendant_of.rb
|
69
|
+
- lib/searchgasm/condition/keywords.rb
|
70
|
+
- lib/searchgasm/condition/less_than.rb
|
71
|
+
- lib/searchgasm/condition/less_than_or_equal_to.rb
|
72
|
+
- lib/searchgasm/condition/sibling_of.rb
|
73
|
+
- lib/searchgasm/condition/tree.rb
|
74
|
+
- lib/searchgasm/conditions/base.rb
|
75
|
+
- lib/searchgasm/conditions/protection.rb
|
76
|
+
- lib/searchgasm/config.rb
|
77
|
+
- lib/searchgasm/helpers/form_helper.rb
|
78
|
+
- lib/searchgasm/helpers/search_helper.rb
|
79
|
+
- lib/searchgasm/helpers/utilities_helper.rb
|
58
80
|
- lib/searchgasm/search/base.rb
|
59
|
-
- lib/searchgasm/search/condition.rb
|
60
|
-
- lib/searchgasm/search/condition_types/begins_with_condition.rb
|
61
|
-
- lib/searchgasm/search/condition_types/child_of_condition.rb
|
62
|
-
- lib/searchgasm/search/condition_types/contains_condition.rb
|
63
|
-
- lib/searchgasm/search/condition_types/descendant_of_condition.rb
|
64
|
-
- lib/searchgasm/search/condition_types/does_not_equal_condition.rb
|
65
|
-
- lib/searchgasm/search/condition_types/ends_with_condition.rb
|
66
|
-
- lib/searchgasm/search/condition_types/equals_condition.rb
|
67
|
-
- lib/searchgasm/search/condition_types/greater_than_condition.rb
|
68
|
-
- lib/searchgasm/search/condition_types/greater_than_or_equal_to_condition.rb
|
69
|
-
- lib/searchgasm/search/condition_types/inclusive_descendant_of_condition.rb
|
70
|
-
- lib/searchgasm/search/condition_types/keywords_condition.rb
|
71
|
-
- lib/searchgasm/search/condition_types/less_than_condition.rb
|
72
|
-
- lib/searchgasm/search/condition_types/less_than_or_equal_to_condition.rb
|
73
|
-
- lib/searchgasm/search/condition_types/sibling_of_condition.rb
|
74
|
-
- lib/searchgasm/search/condition_types/tree_condition.rb
|
75
81
|
- lib/searchgasm/search/conditions.rb
|
76
|
-
- lib/searchgasm/search/
|
82
|
+
- lib/searchgasm/search/ordering.rb
|
83
|
+
- lib/searchgasm/search/pagination.rb
|
84
|
+
- lib/searchgasm/search/protection.rb
|
85
|
+
- lib/searchgasm/utilities.rb
|
77
86
|
- lib/searchgasm/version.rb
|
78
87
|
- lib/searchgasm.rb
|
79
|
-
- README.
|
88
|
+
- README.rdoc
|
80
89
|
files:
|
81
90
|
- CHANGELOG
|
91
|
+
- examples/README.rdoc
|
82
92
|
- init.rb
|
83
93
|
- lib/searchgasm/active_record/associations.rb
|
84
94
|
- lib/searchgasm/active_record/base.rb
|
95
|
+
- lib/searchgasm/condition/base.rb
|
96
|
+
- lib/searchgasm/condition/begins_with.rb
|
97
|
+
- lib/searchgasm/condition/child_of.rb
|
98
|
+
- lib/searchgasm/condition/contains.rb
|
99
|
+
- lib/searchgasm/condition/descendant_of.rb
|
100
|
+
- lib/searchgasm/condition/does_not_equal.rb
|
101
|
+
- lib/searchgasm/condition/ends_with.rb
|
102
|
+
- lib/searchgasm/condition/equals.rb
|
103
|
+
- lib/searchgasm/condition/greater_than.rb
|
104
|
+
- lib/searchgasm/condition/greater_than_or_equal_to.rb
|
105
|
+
- lib/searchgasm/condition/inclusive_descendant_of.rb
|
106
|
+
- lib/searchgasm/condition/keywords.rb
|
107
|
+
- lib/searchgasm/condition/less_than.rb
|
108
|
+
- lib/searchgasm/condition/less_than_or_equal_to.rb
|
109
|
+
- lib/searchgasm/condition/sibling_of.rb
|
110
|
+
- lib/searchgasm/condition/tree.rb
|
111
|
+
- lib/searchgasm/conditions/base.rb
|
112
|
+
- lib/searchgasm/conditions/protection.rb
|
113
|
+
- lib/searchgasm/config.rb
|
114
|
+
- lib/searchgasm/helpers/form_helper.rb
|
115
|
+
- lib/searchgasm/helpers/search_helper.rb
|
116
|
+
- lib/searchgasm/helpers/utilities_helper.rb
|
85
117
|
- lib/searchgasm/search/base.rb
|
86
|
-
- lib/searchgasm/search/condition.rb
|
87
|
-
- lib/searchgasm/search/condition_types/begins_with_condition.rb
|
88
|
-
- lib/searchgasm/search/condition_types/child_of_condition.rb
|
89
|
-
- lib/searchgasm/search/condition_types/contains_condition.rb
|
90
|
-
- lib/searchgasm/search/condition_types/descendant_of_condition.rb
|
91
|
-
- lib/searchgasm/search/condition_types/does_not_equal_condition.rb
|
92
|
-
- lib/searchgasm/search/condition_types/ends_with_condition.rb
|
93
|
-
- lib/searchgasm/search/condition_types/equals_condition.rb
|
94
|
-
- lib/searchgasm/search/condition_types/greater_than_condition.rb
|
95
|
-
- lib/searchgasm/search/condition_types/greater_than_or_equal_to_condition.rb
|
96
|
-
- lib/searchgasm/search/condition_types/inclusive_descendant_of_condition.rb
|
97
|
-
- lib/searchgasm/search/condition_types/keywords_condition.rb
|
98
|
-
- lib/searchgasm/search/condition_types/less_than_condition.rb
|
99
|
-
- lib/searchgasm/search/condition_types/less_than_or_equal_to_condition.rb
|
100
|
-
- lib/searchgasm/search/condition_types/sibling_of_condition.rb
|
101
|
-
- lib/searchgasm/search/condition_types/tree_condition.rb
|
102
118
|
- lib/searchgasm/search/conditions.rb
|
103
|
-
- lib/searchgasm/search/
|
119
|
+
- lib/searchgasm/search/ordering.rb
|
120
|
+
- lib/searchgasm/search/pagination.rb
|
121
|
+
- lib/searchgasm/search/protection.rb
|
122
|
+
- lib/searchgasm/utilities.rb
|
104
123
|
- lib/searchgasm/version.rb
|
105
124
|
- lib/searchgasm.rb
|
106
125
|
- Manifest
|
107
126
|
- MIT-LICENSE
|
108
127
|
- Rakefile
|
109
|
-
- README.
|
128
|
+
- README.rdoc
|
110
129
|
- test/fixtures/accounts.yml
|
111
130
|
- test/fixtures/orders.yml
|
112
131
|
- test/fixtures/users.yml
|
@@ -114,10 +133,13 @@ files:
|
|
114
133
|
- test/libs/rexml_fix.rb
|
115
134
|
- test/test_active_record_associations.rb
|
116
135
|
- test/test_active_record_base.rb
|
136
|
+
- test/test_condition.rb
|
137
|
+
- test/test_conditions_base.rb
|
117
138
|
- test/test_helper.rb
|
118
|
-
- test/
|
119
|
-
- test/
|
120
|
-
- test/
|
139
|
+
- test/test_search_base.rb
|
140
|
+
- test/test_search_ordering.rb
|
141
|
+
- test/test_search_pagination.rb
|
142
|
+
- test/test_search_protection.rb
|
121
143
|
- searchgasm.gemspec
|
122
144
|
has_rdoc: true
|
123
145
|
homepage: http://github.com/binarylogic/searchgasm
|
@@ -128,7 +150,7 @@ rdoc_options:
|
|
128
150
|
- --title
|
129
151
|
- Searchgasm
|
130
152
|
- --main
|
131
|
-
- README.
|
153
|
+
- README.rdoc
|
132
154
|
require_paths:
|
133
155
|
- lib
|
134
156
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -152,7 +174,10 @@ summary: Orgasmic ActiveRecord searching
|
|
152
174
|
test_files:
|
153
175
|
- test/test_active_record_associations.rb
|
154
176
|
- test/test_active_record_base.rb
|
177
|
+
- test/test_condition.rb
|
178
|
+
- test/test_conditions_base.rb
|
155
179
|
- test/test_helper.rb
|
156
|
-
- test/
|
157
|
-
- test/
|
158
|
-
- test/
|
180
|
+
- test/test_search_base.rb
|
181
|
+
- test/test_search_ordering.rb
|
182
|
+
- test/test_search_pagination.rb
|
183
|
+
- test/test_search_protection.rb
|
@@ -14,7 +14,7 @@ class TestActiveRecordAssociations < Test::Unit::TestCase
|
|
14
14
|
|
15
15
|
def test_build_search
|
16
16
|
search = Account.find(1).users.build_search
|
17
|
-
assert_kind_of
|
17
|
+
assert_kind_of Searchgasm::Search::Base, search
|
18
18
|
assert_equal User, search.klass
|
19
19
|
assert_equal "\"users\".account_id = 1", search.conditions.scope
|
20
20
|
|
@@ -34,10 +34,10 @@ class TestActiveRecordBase < Test::Unit::TestCase
|
|
34
34
|
|
35
35
|
def test_build_search
|
36
36
|
search = Account.new_search
|
37
|
-
assert_kind_of
|
37
|
+
assert_kind_of Searchgasm::Search::Base, search
|
38
38
|
|
39
39
|
search = Account.build_search(:conditions => {:name_keywords => "awesome"}, :page => 2, :per_page => 15)
|
40
|
-
assert_kind_of
|
40
|
+
assert_kind_of Searchgasm::Search::Base, search
|
41
41
|
assert_equal Account, search.klass
|
42
42
|
assert_equal "awesome", search.conditions.name_keywords
|
43
43
|
assert_equal 2, search.page
|
@@ -49,10 +49,10 @@ class TestActiveRecordBase < Test::Unit::TestCase
|
|
49
49
|
|
50
50
|
def test_build_conditions
|
51
51
|
search = Account.new_conditions
|
52
|
-
assert_kind_of
|
52
|
+
assert_kind_of Searchgasm::Conditions::Base, search
|
53
53
|
|
54
54
|
search = Account.build_conditions(:name_keywords => "awesome")
|
55
|
-
assert_kind_of
|
55
|
+
assert_kind_of Searchgasm::Conditions::Base, search
|
56
56
|
assert_equal Account, search.klass
|
57
57
|
assert_equal "awesome", search.name_keywords
|
58
58
|
|
@@ -0,0 +1,143 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
+
|
3
|
+
class TestCondition < Test::Unit::TestCase
|
4
|
+
fixtures :accounts, :users, :orders
|
5
|
+
|
6
|
+
def setup
|
7
|
+
setup_db
|
8
|
+
load_fixtures
|
9
|
+
end
|
10
|
+
|
11
|
+
def teardown
|
12
|
+
teardown_db
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_condition_name
|
16
|
+
assert_equal "equals", Searchgasm::Condition::Equals.condition_name
|
17
|
+
assert_equal "keywords", Searchgasm::Condition::Keywords.condition_name
|
18
|
+
assert_equal "greater_than_or_equal_to", Searchgasm::Condition::GreaterThanOrEqualTo.condition_name
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_string_column
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_comparable_column
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_initialize
|
30
|
+
condition = Searchgasm::Condition::Keywords.new(Account, Account.columns_hash["name"])
|
31
|
+
assert_equal condition.klass, Account
|
32
|
+
assert_equal condition.column, Account.columns_hash["name"]
|
33
|
+
|
34
|
+
condition = Searchgasm::Condition::GreaterThan.new(Account, "id")
|
35
|
+
assert_equal condition.column, Account.columns_hash["id"]
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_explicitly_set_value
|
39
|
+
condition = Searchgasm::Condition::Equals.new(Account, Account.columns_hash["name"])
|
40
|
+
assert !condition.explicitly_set_value?
|
41
|
+
condition.value = nil
|
42
|
+
assert condition.explicitly_set_value?
|
43
|
+
|
44
|
+
condition = Searchgasm::Condition::Keywords.new(Account, Account.columns_hash["name"])
|
45
|
+
assert !condition.explicitly_set_value?
|
46
|
+
condition.value = nil
|
47
|
+
assert !condition.explicitly_set_value?
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_ignore_blanks?
|
51
|
+
condition = Searchgasm::Condition::Equals.new(Account, Account.columns_hash["id"])
|
52
|
+
assert !condition.ignore_blanks?
|
53
|
+
|
54
|
+
condition = Searchgasm::Condition::Keywords.new(Account, Account.columns_hash["name"])
|
55
|
+
assert condition.ignore_blanks?
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_sanitize
|
59
|
+
condition = Searchgasm::Condition::BeginsWith.new(Account, Account.columns_hash["name"])
|
60
|
+
condition.value = "Binary"
|
61
|
+
assert_equal condition.sanitize, ["\"accounts\".\"name\" LIKE ?", "Binary%"]
|
62
|
+
|
63
|
+
condition = Searchgasm::Condition::ChildOf.new(User)
|
64
|
+
condition.value = User.first.id
|
65
|
+
assert_equal condition.sanitize, ["\"users\".\"parent_id\" = ?", User.first.id]
|
66
|
+
|
67
|
+
condition = Searchgasm::Condition::ChildOf.new(User)
|
68
|
+
condition.value = User.first
|
69
|
+
assert_equal condition.sanitize, ["\"users\".\"parent_id\" = ?", User.first.id]
|
70
|
+
|
71
|
+
condition = Searchgasm::Condition::Contains.new(Account, Account.columns_hash["name"])
|
72
|
+
condition.value = "Binary and blah"
|
73
|
+
assert_equal condition.sanitize, ["\"accounts\".\"name\" LIKE ?", "%Binary and blah%"]
|
74
|
+
|
75
|
+
condition = Searchgasm::Condition::DescendantOf.new(User)
|
76
|
+
condition.value = User.find(1)
|
77
|
+
assert_equal condition.sanitize, ["\"users\".\"id\" = ? OR \"users\".\"id\" = ?", 2, 3]
|
78
|
+
|
79
|
+
condition = Searchgasm::Condition::DoesNotEqual.new(Account, Account.columns_hash["id"])
|
80
|
+
condition.value = 12
|
81
|
+
assert_equal condition.sanitize, "\"accounts\".\"id\" != 12"
|
82
|
+
|
83
|
+
condition = Searchgasm::Condition::DoesNotEqual.new(Account, Account.columns_hash["id"])
|
84
|
+
condition.value = [1,2,3,4]
|
85
|
+
assert_equal condition.sanitize, "\"accounts\".\"id\" NOT IN (1,2,3,4)"
|
86
|
+
|
87
|
+
condition = Searchgasm::Condition::DoesNotEqual.new(Account, Account.columns_hash["id"])
|
88
|
+
condition.value = (1..10)
|
89
|
+
assert_equal condition.sanitize, "\"accounts\".\"id\" NOT BETWEEN 1 AND 10"
|
90
|
+
|
91
|
+
condition = Searchgasm::Condition::EndsWith.new(Account, Account.columns_hash["name"])
|
92
|
+
condition.value = "Binary"
|
93
|
+
assert_equal condition.sanitize, ["\"accounts\".\"name\" LIKE ?", "%Binary"]
|
94
|
+
|
95
|
+
condition = Searchgasm::Condition::Equals.new(Account, Account.columns_hash["id"])
|
96
|
+
condition.value = 12
|
97
|
+
assert_equal condition.sanitize, "\"accounts\".\"id\" = 12"
|
98
|
+
|
99
|
+
condition = Searchgasm::Condition::Equals.new(Account, Account.columns_hash["id"])
|
100
|
+
condition.value = [1,2,3,4]
|
101
|
+
assert_equal condition.sanitize, "\"accounts\".\"id\" IN (1,2,3,4)"
|
102
|
+
|
103
|
+
condition = Searchgasm::Condition::Equals.new(Account, Account.columns_hash["id"])
|
104
|
+
condition.value = (1..10)
|
105
|
+
assert_equal condition.sanitize, "\"accounts\".\"id\" BETWEEN 1 AND 10"
|
106
|
+
|
107
|
+
condition = Searchgasm::Condition::GreaterThan.new(Account, Account.columns_hash["id"])
|
108
|
+
condition.value = 2
|
109
|
+
assert_equal condition.sanitize, ["\"accounts\".\"id\" > ?", 2]
|
110
|
+
|
111
|
+
condition = Searchgasm::Condition::GreaterThanOrEqualTo.new(Account, Account.columns_hash["id"])
|
112
|
+
condition.value = 2
|
113
|
+
assert_equal condition.sanitize, ["\"accounts\".\"id\" >= ?", 2]
|
114
|
+
|
115
|
+
condition = Searchgasm::Condition::InclusiveDescendantOf.new(User)
|
116
|
+
condition.value = User.find(1)
|
117
|
+
assert_equal condition.sanitize, ["(\"users\".\"id\" = ?) OR (\"users\".\"id\" = ? OR \"users\".\"id\" = ?)", 1, 2, 3]
|
118
|
+
|
119
|
+
condition = Searchgasm::Condition::Keywords.new(Account, Account.columns_hash["name"])
|
120
|
+
condition.value = "freedom yeah, freedom YEAH right"
|
121
|
+
assert_equal condition.sanitize, ["\"accounts\".\"name\" LIKE ? AND \"accounts\".\"name\" LIKE ? AND \"accounts\".\"name\" LIKE ?", "%freedom%", "%yeah%", "%right%"]
|
122
|
+
|
123
|
+
condition = Searchgasm::Condition::Keywords.new(Account, Account.columns_hash["name"])
|
124
|
+
condition.value = "%^$*(^$)"
|
125
|
+
assert_equal condition.sanitize, nil
|
126
|
+
|
127
|
+
condition = Searchgasm::Condition::LessThan.new(Account, Account.columns_hash["id"])
|
128
|
+
condition.value = 2
|
129
|
+
assert_equal condition.sanitize, ["\"accounts\".\"id\" < ?", 2]
|
130
|
+
|
131
|
+
condition = Searchgasm::Condition::LessThanOrEqualTo.new(Account, Account.columns_hash["id"])
|
132
|
+
condition.value = 2
|
133
|
+
assert_equal condition.sanitize, ["\"accounts\".\"id\" <= ?", 2]
|
134
|
+
|
135
|
+
condition = Searchgasm::Condition::SiblingOf.new(User)
|
136
|
+
condition.value = User.find(2)
|
137
|
+
assert_equal condition.sanitize, ["(\"users\".\"id\" != ?) AND (\"users\".\"parent_id\" = ?)", 2, 1]
|
138
|
+
end
|
139
|
+
|
140
|
+
def test_value
|
141
|
+
|
142
|
+
end
|
143
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
2
|
|
3
|
-
class
|
3
|
+
class TestConditionsBase < Test::Unit::TestCase
|
4
4
|
fixtures :accounts, :users, :orders
|
5
5
|
|
6
6
|
def setup
|
@@ -13,16 +13,16 @@ class TestSearchgasmConditions < Test::Unit::TestCase
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def test_register_conditions
|
16
|
-
|
17
|
-
assert [
|
16
|
+
Searchgasm::Conditions::Base.register_condition(Searchgasm::Condition::Keywords)
|
17
|
+
assert [Searchgasm::Condition::Keywords], Searchgasm::Conditions::Base.conditions
|
18
18
|
|
19
|
-
|
20
|
-
assert [
|
19
|
+
Searchgasm::Conditions::Base.register_condition(Searchgasm::Condition::Contains)
|
20
|
+
assert [Searchgasm::Condition::Keywords, Searchgasm::Condition::Contains], Searchgasm::Conditions::Base.conditions
|
21
21
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def test_initialize
|
25
|
-
conditions =
|
25
|
+
conditions = Searchgasm::Conditions::Base.new(Account, :name_contains => "Binary")
|
26
26
|
assert_equal conditions.klass, Account
|
27
27
|
assert_equal conditions.name_contains, "Binary"
|
28
28
|
end
|
@@ -34,19 +34,29 @@ class TestSearchgasmConditions < Test::Unit::TestCase
|
|
34
34
|
def test_setting_conditions
|
35
35
|
[Account, User, Order].each do |klass|
|
36
36
|
conditions = klass.new_conditions
|
37
|
-
conditions.condition_names.each do |condition_name|
|
37
|
+
conditions.send(:condition_names).each do |condition_name|
|
38
38
|
conditions.send("#{condition_name}=", 1)
|
39
39
|
assert_equal 1, conditions.send(condition_name)
|
40
40
|
end
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
+
def test_accessible_protected_conditions
|
45
|
+
#Account.conditions_accessible << :name_contains
|
46
|
+
#conditions = Searchgasm::Conditions::Base.new(Account)
|
47
|
+
#conditions.conditions = {:created_after => Time.now, :name_contains => "Binary"}
|
48
|
+
#assert({:name_contains => "Binary"}, conditions.value)
|
49
|
+
end
|
50
|
+
|
44
51
|
def test_assert_valid_values
|
45
|
-
|
52
|
+
conditions = User.new_conditions
|
53
|
+
assert_raise(ArgumentError) { conditions.conditions = {:unknown => "blah"} }
|
54
|
+
assert_nothing_raised { conditions.conditions = {:first_name => "blah"} }
|
55
|
+
assert_nothing_raised { conditions.conditions = {:first_name_contains => "blah"} }
|
46
56
|
end
|
47
57
|
|
48
58
|
def test_setting_associations
|
49
|
-
conditions =
|
59
|
+
conditions = Searchgasm::Conditions::Base.new(Account, :users => {:first_name_like => "Ben"})
|
50
60
|
assert_equal conditions.users.first_name_like, "Ben"
|
51
61
|
|
52
62
|
conditions.users.last_name_begins_with = "Ben"
|
@@ -54,7 +64,7 @@ class TestSearchgasmConditions < Test::Unit::TestCase
|
|
54
64
|
end
|
55
65
|
|
56
66
|
def test_includes
|
57
|
-
conditions =
|
67
|
+
conditions = Searchgasm::Conditions::Base.new(Account)
|
58
68
|
assert_equal conditions.includes, nil
|
59
69
|
|
60
70
|
conditions.name_like = "Binary"
|
@@ -68,44 +78,44 @@ class TestSearchgasmConditions < Test::Unit::TestCase
|
|
68
78
|
end
|
69
79
|
|
70
80
|
def test_objects
|
71
|
-
conditions =
|
72
|
-
assert_equal conditions.objects, []
|
81
|
+
conditions = Searchgasm::Conditions::Base.new(Account)
|
82
|
+
assert_equal conditions.send(:objects), []
|
73
83
|
|
74
84
|
conditions.name_contains = "Binary"
|
75
|
-
assert_equal conditions.objects.size, 1
|
85
|
+
assert_equal conditions.send(:objects).size, 1
|
76
86
|
|
77
87
|
conditions.users.first_name_contains = "Ben"
|
78
|
-
assert_equal conditions.objects.size, 2
|
88
|
+
assert_equal conditions.send(:objects).size, 2
|
79
89
|
end
|
80
90
|
|
81
91
|
def test_reset
|
82
|
-
conditions =
|
92
|
+
conditions = Searchgasm::Conditions::Base.new(Account)
|
83
93
|
|
84
94
|
conditions.name_contains = "Binary"
|
85
|
-
assert_equal 1, conditions.objects.size
|
95
|
+
assert_equal 1, conditions.send(:objects).size
|
86
96
|
|
87
97
|
conditions.reset_name_contains!
|
88
|
-
assert_equal [], conditions.objects
|
98
|
+
assert_equal [], conditions.send(:objects)
|
89
99
|
|
90
100
|
conditions.users.first_name_like = "Ben"
|
91
|
-
assert_equal 1, conditions.objects.size
|
101
|
+
assert_equal 1, conditions.send(:objects).size
|
92
102
|
|
93
103
|
conditions.reset_users!
|
94
|
-
assert_equal [], conditions.objects
|
104
|
+
assert_equal [], conditions.send(:objects)
|
95
105
|
|
96
106
|
conditions.name_begins_with ="Binary"
|
97
107
|
conditions.users.orders.total_gt = 200
|
98
|
-
assert_equal 2, conditions.objects.size
|
108
|
+
assert_equal 2, conditions.send(:objects).size
|
99
109
|
|
100
110
|
conditions.reset_name_begins_with!
|
101
|
-
assert_equal 1, conditions.objects.size
|
111
|
+
assert_equal 1, conditions.send(:objects).size
|
102
112
|
|
103
113
|
conditions.reset_users!
|
104
|
-
assert_equal [], conditions.objects
|
114
|
+
assert_equal [], conditions.send(:objects)
|
105
115
|
end
|
106
116
|
|
107
117
|
def test_sanitize
|
108
|
-
conditions =
|
118
|
+
conditions = Searchgasm::Conditions::Base.new(Account)
|
109
119
|
conditions.name_contains = "Binary"
|
110
120
|
conditions.id_gt = 5
|
111
121
|
now = Time.now
|
@@ -119,29 +129,29 @@ class TestSearchgasmConditions < Test::Unit::TestCase
|
|
119
129
|
assert_equal conditions.sanitize, ["(\"accounts\".\"name\" LIKE ?) AND (\"accounts\".\"id\" > ?) AND (\"accounts\".\"created_at\" > ?) AND ((\"users\".\"first_name\" LIKE ?) AND (\"users\".\"id\" > ?) AND (\"orders\".\"total\" < ?))", "%Binary%", 5, now, "%Ben%", 10, 500]
|
120
130
|
end
|
121
131
|
|
122
|
-
def
|
123
|
-
conditions =
|
132
|
+
def test_conditions
|
133
|
+
conditions = Searchgasm::Conditions::Base.new(Account)
|
124
134
|
now = Time.now
|
125
135
|
v = {:name_contains => "Binary", :created_at_greater_than => now}
|
126
|
-
conditions.
|
127
|
-
assert_equal v, conditions.
|
136
|
+
conditions.conditions = v
|
137
|
+
assert_equal v, conditions.conditions
|
128
138
|
|
129
139
|
scope = "id in (1,2,3,4)"
|
130
|
-
conditions.
|
131
|
-
assert_equal v, conditions.
|
140
|
+
conditions.conditions = scope
|
141
|
+
assert_equal v, conditions.conditions, v
|
132
142
|
assert_equal scope, conditions.scope
|
133
143
|
|
134
144
|
v2 = {:id_less_than => 5, :name_begins_with => "Beginning of string"}
|
135
|
-
conditions.
|
136
|
-
assert_equal v.merge(v2), conditions.
|
145
|
+
conditions.conditions = v2
|
146
|
+
assert_equal v.merge(v2), conditions.conditions
|
137
147
|
|
138
148
|
scope2 = "id > 5 and name = 'Test'"
|
139
|
-
conditions.
|
149
|
+
conditions.conditions = scope2
|
140
150
|
assert_equal scope2, conditions.scope
|
141
151
|
end
|
142
152
|
|
143
153
|
def test_searching
|
144
|
-
conditions =
|
154
|
+
conditions = Searchgasm::Conditions::Base.new(Account)
|
145
155
|
conditions.name_contains = "Binary"
|
146
156
|
assert_equal Account.find(1, 3), conditions.all
|
147
157
|
assert_equal Account.find(1, 3), conditions.find(:all)
|