searchgasm 0.9.6 → 0.9.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. data/CHANGELOG +2 -0
  2. data/Manifest +34 -21
  3. data/{README.mdown → README.rdoc} +96 -63
  4. data/Rakefile +1 -1
  5. data/examples/README.rdoc +4 -0
  6. data/lib/searchgasm/active_record/associations.rb +40 -42
  7. data/lib/searchgasm/active_record/base.rb +75 -61
  8. data/lib/searchgasm/condition/base.rb +127 -0
  9. data/lib/searchgasm/condition/begins_with.rb +20 -0
  10. data/lib/searchgasm/condition/child_of.rb +11 -0
  11. data/lib/searchgasm/condition/contains.rb +20 -0
  12. data/lib/searchgasm/condition/descendant_of.rb +24 -0
  13. data/lib/searchgasm/condition/does_not_equal.rb +28 -0
  14. data/lib/searchgasm/condition/ends_with.rb +20 -0
  15. data/lib/searchgasm/condition/equals.rb +20 -0
  16. data/lib/searchgasm/condition/greater_than.rb +25 -0
  17. data/lib/searchgasm/condition/greater_than_or_equal_to.rb +20 -0
  18. data/lib/searchgasm/condition/inclusive_descendant_of.rb +13 -0
  19. data/lib/searchgasm/condition/keywords.rb +33 -0
  20. data/lib/searchgasm/condition/less_than.rb +25 -0
  21. data/lib/searchgasm/condition/less_than_or_equal_to.rb +20 -0
  22. data/lib/searchgasm/condition/sibling_of.rb +16 -0
  23. data/lib/searchgasm/condition/tree.rb +16 -0
  24. data/lib/searchgasm/conditions/base.rb +221 -0
  25. data/lib/searchgasm/conditions/protection.rb +30 -0
  26. data/lib/searchgasm/config.rb +137 -0
  27. data/lib/searchgasm/helpers/form_helper.rb +159 -0
  28. data/lib/searchgasm/helpers/search_helper.rb +178 -0
  29. data/lib/searchgasm/helpers/utilities_helper.rb +125 -0
  30. data/lib/searchgasm/search/base.rb +73 -179
  31. data/lib/searchgasm/search/conditions.rb +42 -166
  32. data/lib/searchgasm/search/ordering.rb +149 -0
  33. data/lib/searchgasm/search/pagination.rb +69 -0
  34. data/lib/searchgasm/search/protection.rb +61 -0
  35. data/lib/searchgasm/utilities.rb +30 -0
  36. data/lib/searchgasm/version.rb +44 -47
  37. data/lib/searchgasm.rb +57 -21
  38. data/searchgasm.gemspec +71 -46
  39. data/test/test_active_record_associations.rb +1 -1
  40. data/test/test_active_record_base.rb +4 -4
  41. data/test/test_condition.rb +143 -0
  42. data/test/{test_searchgasm_conditions.rb → test_conditions_base.rb} +43 -33
  43. data/test/test_search_base.rb +189 -0
  44. data/test/test_search_ordering.rb +91 -0
  45. data/test/test_search_pagination.rb +56 -0
  46. data/test/test_search_protection.rb +35 -0
  47. metadata +70 -45
  48. data/lib/searchgasm/search/condition.rb +0 -105
  49. data/lib/searchgasm/search/condition_types/begins_with_condition.rb +0 -26
  50. data/lib/searchgasm/search/condition_types/child_of_condition.rb +0 -17
  51. data/lib/searchgasm/search/condition_types/contains_condition.rb +0 -26
  52. data/lib/searchgasm/search/condition_types/descendant_of_condition.rb +0 -30
  53. data/lib/searchgasm/search/condition_types/does_not_equal_condition.rb +0 -34
  54. data/lib/searchgasm/search/condition_types/ends_with_condition.rb +0 -26
  55. data/lib/searchgasm/search/condition_types/equals_condition.rb +0 -26
  56. data/lib/searchgasm/search/condition_types/greater_than_condition.rb +0 -31
  57. data/lib/searchgasm/search/condition_types/greater_than_or_equal_to_condition.rb +0 -26
  58. data/lib/searchgasm/search/condition_types/inclusive_descendant_of_condition.rb +0 -19
  59. data/lib/searchgasm/search/condition_types/keywords_condition.rb +0 -39
  60. data/lib/searchgasm/search/condition_types/less_than_condition.rb +0 -31
  61. data/lib/searchgasm/search/condition_types/less_than_or_equal_to_condition.rb +0 -26
  62. data/lib/searchgasm/search/condition_types/sibling_of_condition.rb +0 -22
  63. data/lib/searchgasm/search/condition_types/tree_condition.rb +0 -20
  64. data/lib/searchgasm/search/utilities.rb +0 -34
  65. data/test/test_searchgasm_base.rb +0 -185
  66. data/test/test_searchgasm_condition_types.rb +0 -143
@@ -1,143 +0,0 @@
1
- require File.dirname(__FILE__) + '/test_helper.rb'
2
-
3
- class TestSearchgasmConditionTypes < 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", BinaryLogic::Searchgasm::Search::ConditionTypes::EqualsCondition.condition_name
17
- assert_equal "keywords", BinaryLogic::Searchgasm::Search::ConditionTypes::KeywordsCondition.condition_name
18
- assert_equal "greater_than_or_equal_to", BinaryLogic::Searchgasm::Search::ConditionTypes::GreaterThanOrEqualToCondition.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 = BinaryLogic::Searchgasm::Search::ConditionTypes::KeywordsCondition.new(Account, Account.columns_hash["name"])
31
- assert_equal condition.klass, Account
32
- assert_equal condition.column, Account.columns_hash["name"]
33
-
34
- condition = BinaryLogic::Searchgasm::Search::ConditionTypes::GreaterThanCondition.new(Account, "id")
35
- assert_equal condition.column, Account.columns_hash["id"]
36
- end
37
-
38
- def test_explicitly_set_value
39
- condition = BinaryLogic::Searchgasm::Search::ConditionTypes::EqualsCondition.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 = BinaryLogic::Searchgasm::Search::ConditionTypes::KeywordsCondition.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 = BinaryLogic::Searchgasm::Search::ConditionTypes::EqualsCondition.new(Account, Account.columns_hash["id"])
52
- assert !condition.ignore_blanks?
53
-
54
- condition = BinaryLogic::Searchgasm::Search::ConditionTypes::KeywordsCondition.new(Account, Account.columns_hash["name"])
55
- assert condition.ignore_blanks?
56
- end
57
-
58
- def test_sanitize
59
- condition = BinaryLogic::Searchgasm::Search::ConditionTypes::BeginsWithCondition.new(Account, Account.columns_hash["name"])
60
- condition.value = "Binary"
61
- assert_equal condition.sanitize, ["\"accounts\".\"name\" LIKE ?", "Binary%"]
62
-
63
- condition = BinaryLogic::Searchgasm::Search::ConditionTypes::ChildOfCondition.new(User)
64
- condition.value = User.first.id
65
- assert_equal condition.sanitize, ["\"users\".\"parent_id\" = ?", User.first.id]
66
-
67
- condition = BinaryLogic::Searchgasm::Search::ConditionTypes::ChildOfCondition.new(User)
68
- condition.value = User.first
69
- assert_equal condition.sanitize, ["\"users\".\"parent_id\" = ?", User.first.id]
70
-
71
- condition = BinaryLogic::Searchgasm::Search::ConditionTypes::ContainsCondition.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 = BinaryLogic::Searchgasm::Search::ConditionTypes::DescendantOfCondition.new(User)
76
- condition.value = User.find(1)
77
- assert_equal condition.sanitize, ["\"users\".\"id\" = ? OR \"users\".\"id\" = ?", 2, 3]
78
-
79
- condition = BinaryLogic::Searchgasm::Search::ConditionTypes::DoesNotEqualCondition.new(Account, Account.columns_hash["id"])
80
- condition.value = 12
81
- assert_equal condition.sanitize, "\"accounts\".\"id\" != 12"
82
-
83
- condition = BinaryLogic::Searchgasm::Search::ConditionTypes::DoesNotEqualCondition.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 = BinaryLogic::Searchgasm::Search::ConditionTypes::DoesNotEqualCondition.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 = BinaryLogic::Searchgasm::Search::ConditionTypes::EndsWithCondition.new(Account, Account.columns_hash["name"])
92
- condition.value = "Binary"
93
- assert_equal condition.sanitize, ["\"accounts\".\"name\" LIKE ?", "%Binary"]
94
-
95
- condition = BinaryLogic::Searchgasm::Search::ConditionTypes::EqualsCondition.new(Account, Account.columns_hash["id"])
96
- condition.value = 12
97
- assert_equal condition.sanitize, "\"accounts\".\"id\" = 12"
98
-
99
- condition = BinaryLogic::Searchgasm::Search::ConditionTypes::EqualsCondition.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 = BinaryLogic::Searchgasm::Search::ConditionTypes::EqualsCondition.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 = BinaryLogic::Searchgasm::Search::ConditionTypes::GreaterThanCondition.new(Account, Account.columns_hash["id"])
108
- condition.value = 2
109
- assert_equal condition.sanitize, ["\"accounts\".\"id\" > ?", 2]
110
-
111
- condition = BinaryLogic::Searchgasm::Search::ConditionTypes::GreaterThanOrEqualToCondition.new(Account, Account.columns_hash["id"])
112
- condition.value = 2
113
- assert_equal condition.sanitize, ["\"accounts\".\"id\" >= ?", 2]
114
-
115
- condition = BinaryLogic::Searchgasm::Search::ConditionTypes::InclusiveDescendantOfCondition.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 = BinaryLogic::Searchgasm::Search::ConditionTypes::KeywordsCondition.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 = BinaryLogic::Searchgasm::Search::ConditionTypes::KeywordsCondition.new(Account, Account.columns_hash["name"])
124
- condition.value = "%^$*(^$)"
125
- assert_equal condition.sanitize, nil
126
-
127
- condition = BinaryLogic::Searchgasm::Search::ConditionTypes::LessThanCondition.new(Account, Account.columns_hash["id"])
128
- condition.value = 2
129
- assert_equal condition.sanitize, ["\"accounts\".\"id\" < ?", 2]
130
-
131
- condition = BinaryLogic::Searchgasm::Search::ConditionTypes::LessThanOrEqualToCondition.new(Account, Account.columns_hash["id"])
132
- condition.value = 2
133
- assert_equal condition.sanitize, ["\"accounts\".\"id\" <= ?", 2]
134
-
135
- condition = BinaryLogic::Searchgasm::Search::ConditionTypes::SiblingOfCondition.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