searchlogic 1.5.4 → 1.5.6
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.rdoc +13 -0
- data/Manifest +7 -1
- data/README.rdoc +78 -11
- data/Rakefile +15 -11
- data/lib/searchlogic/condition/base.rb +5 -1
- data/lib/searchlogic/condition/keywords.rb +2 -2
- data/lib/searchlogic/conditions/any_or_all.rb +42 -0
- data/lib/searchlogic/conditions/base.rb +36 -312
- data/lib/searchlogic/conditions/groups.rb +37 -0
- data/lib/searchlogic/conditions/magic_methods.rb +268 -0
- data/lib/searchlogic/conditions/protection.rb +1 -1
- data/lib/searchlogic/config/helpers.rb +77 -28
- data/lib/searchlogic/helpers/control_types/links.rb +1 -0
- data/lib/searchlogic/helpers/form.rb +1 -1
- data/lib/searchlogic/shared/utilities.rb +9 -2
- data/lib/searchlogic/version.rb +1 -1
- data/lib/searchlogic.rb +6 -0
- data/searchlogic.gemspec +9 -7
- data/test/active_record_tests/base_test.rb +13 -13
- data/test/condition_tests/{keyswords_test.rb → keywords_test.rb} +4 -0
- data/test/conditions_tests/any_or_all_test.rb +23 -0
- data/test/conditions_tests/base_test.rb +45 -88
- data/test/conditions_tests/groups_test.rb +51 -0
- data/test/conditions_tests/magic_methods_test.rb +24 -0
- data/test/search_tests/base_test.rb +7 -3
- data/test/test_helper.rb +12 -28
- metadata +17 -5
data/searchlogic.gemspec
CHANGED
@@ -1,28 +1,30 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
1
3
|
Gem::Specification.new do |s|
|
2
4
|
s.name = %q{searchlogic}
|
3
|
-
s.version = "1.5.
|
5
|
+
s.version = "1.5.6"
|
4
6
|
|
5
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
6
8
|
s.authors = ["Ben Johnson of Binary Logic"]
|
7
|
-
s.date = %q{2008-11-
|
9
|
+
s.date = %q{2008-11-29}
|
8
10
|
s.description = %q{Object based ActiveRecord searching, ordering, pagination, and more!}
|
9
11
|
s.email = %q{bjohnson@binarylogic.com}
|
10
|
-
s.extra_rdoc_files = ["CHANGELOG.rdoc", "lib/searchlogic/active_record/associations.rb", "lib/searchlogic/active_record/base.rb", "lib/searchlogic/active_record/connection_adapters/mysql_adapter.rb", "lib/searchlogic/active_record/connection_adapters/postgresql_adapter.rb", "lib/searchlogic/active_record/connection_adapters/sqlite_adapter.rb", "lib/searchlogic/condition/base.rb", "lib/searchlogic/condition/begins_with.rb", "lib/searchlogic/condition/blank.rb", "lib/searchlogic/condition/child_of.rb", "lib/searchlogic/condition/descendant_of.rb", "lib/searchlogic/condition/ends_with.rb", "lib/searchlogic/condition/equals.rb", "lib/searchlogic/condition/greater_than.rb", "lib/searchlogic/condition/greater_than_or_equal_to.rb", "lib/searchlogic/condition/inclusive_descendant_of.rb", "lib/searchlogic/condition/keywords.rb", "lib/searchlogic/condition/less_than.rb", "lib/searchlogic/condition/less_than_or_equal_to.rb", "lib/searchlogic/condition/like.rb", "lib/searchlogic/condition/nil.rb", "lib/searchlogic/condition/not_begin_with.rb", "lib/searchlogic/condition/not_blank.rb", "lib/searchlogic/condition/not_end_with.rb", "lib/searchlogic/condition/not_equal.rb", "lib/searchlogic/condition/not_have_keywords.rb", "lib/searchlogic/condition/not_like.rb", "lib/searchlogic/condition/not_nil.rb", "lib/searchlogic/condition/sibling_of.rb", "lib/searchlogic/condition/tree.rb", "lib/searchlogic/conditions/base.rb", "lib/searchlogic/conditions/protection.rb", "lib/searchlogic/config/helpers.rb", "lib/searchlogic/config/search.rb", "lib/searchlogic/config.rb", "lib/searchlogic/core_ext/hash.rb", "lib/searchlogic/helpers/control_types/link.rb", "lib/searchlogic/helpers/control_types/links.rb", "lib/searchlogic/helpers/control_types/remote_link.rb", "lib/searchlogic/helpers/control_types/remote_links.rb", "lib/searchlogic/helpers/control_types/remote_select.rb", "lib/searchlogic/helpers/control_types/select.rb", "lib/searchlogic/helpers/form.rb", "lib/searchlogic/helpers/utilities.rb", "lib/searchlogic/modifiers/absolute.rb", "lib/searchlogic/modifiers/acos.rb", "lib/searchlogic/modifiers/asin.rb", "lib/searchlogic/modifiers/atan.rb", "lib/searchlogic/modifiers/base.rb", "lib/searchlogic/modifiers/ceil.rb", "lib/searchlogic/modifiers/char_length.rb", "lib/searchlogic/modifiers/cos.rb", "lib/searchlogic/modifiers/cot.rb", "lib/searchlogic/modifiers/day_of_month.rb", "lib/searchlogic/modifiers/day_of_week.rb", "lib/searchlogic/modifiers/day_of_year.rb", "lib/searchlogic/modifiers/degrees.rb", "lib/searchlogic/modifiers/exp.rb", "lib/searchlogic/modifiers/floor.rb", "lib/searchlogic/modifiers/hex.rb", "lib/searchlogic/modifiers/hour.rb", "lib/searchlogic/modifiers/log.rb", "lib/searchlogic/modifiers/log10.rb", "lib/searchlogic/modifiers/log2.rb", "lib/searchlogic/modifiers/lower.rb", "lib/searchlogic/modifiers/ltrim.rb", "lib/searchlogic/modifiers/md5.rb", "lib/searchlogic/modifiers/microseconds.rb", "lib/searchlogic/modifiers/milliseconds.rb", "lib/searchlogic/modifiers/minute.rb", "lib/searchlogic/modifiers/month.rb", "lib/searchlogic/modifiers/octal.rb", "lib/searchlogic/modifiers/radians.rb", "lib/searchlogic/modifiers/round.rb", "lib/searchlogic/modifiers/rtrim.rb", "lib/searchlogic/modifiers/second.rb", "lib/searchlogic/modifiers/sign.rb", "lib/searchlogic/modifiers/sin.rb", "lib/searchlogic/modifiers/square_root.rb", "lib/searchlogic/modifiers/tan.rb", "lib/searchlogic/modifiers/trim.rb", "lib/searchlogic/modifiers/upper.rb", "lib/searchlogic/modifiers/week.rb", "lib/searchlogic/modifiers/year.rb", "lib/searchlogic/search/base.rb", "lib/searchlogic/search/conditions.rb", "lib/searchlogic/search/ordering.rb", "lib/searchlogic/search/pagination.rb", "lib/searchlogic/search/protection.rb", "lib/searchlogic/search/searching.rb", "lib/searchlogic/shared/utilities.rb", "lib/searchlogic/shared/virtual_classes.rb", "lib/searchlogic/version.rb", "lib/searchlogic.rb", "README.rdoc", "TODO.rdoc"]
|
11
|
-
s.files = ["CHANGELOG.rdoc", "init.rb", "lib/searchlogic/active_record/associations.rb", "lib/searchlogic/active_record/base.rb", "lib/searchlogic/active_record/connection_adapters/mysql_adapter.rb", "lib/searchlogic/active_record/connection_adapters/postgresql_adapter.rb", "lib/searchlogic/active_record/connection_adapters/sqlite_adapter.rb", "lib/searchlogic/condition/base.rb", "lib/searchlogic/condition/begins_with.rb", "lib/searchlogic/condition/blank.rb", "lib/searchlogic/condition/child_of.rb", "lib/searchlogic/condition/descendant_of.rb", "lib/searchlogic/condition/ends_with.rb", "lib/searchlogic/condition/equals.rb", "lib/searchlogic/condition/greater_than.rb", "lib/searchlogic/condition/greater_than_or_equal_to.rb", "lib/searchlogic/condition/inclusive_descendant_of.rb", "lib/searchlogic/condition/keywords.rb", "lib/searchlogic/condition/less_than.rb", "lib/searchlogic/condition/less_than_or_equal_to.rb", "lib/searchlogic/condition/like.rb", "lib/searchlogic/condition/nil.rb", "lib/searchlogic/condition/not_begin_with.rb", "lib/searchlogic/condition/not_blank.rb", "lib/searchlogic/condition/not_end_with.rb", "lib/searchlogic/condition/not_equal.rb", "lib/searchlogic/condition/not_have_keywords.rb", "lib/searchlogic/condition/not_like.rb", "lib/searchlogic/condition/not_nil.rb", "lib/searchlogic/condition/sibling_of.rb", "lib/searchlogic/condition/tree.rb", "lib/searchlogic/conditions/base.rb", "lib/searchlogic/conditions/protection.rb", "lib/searchlogic/config/helpers.rb", "lib/searchlogic/config/search.rb", "lib/searchlogic/config.rb", "lib/searchlogic/core_ext/hash.rb", "lib/searchlogic/helpers/control_types/link.rb", "lib/searchlogic/helpers/control_types/links.rb", "lib/searchlogic/helpers/control_types/remote_link.rb", "lib/searchlogic/helpers/control_types/remote_links.rb", "lib/searchlogic/helpers/control_types/remote_select.rb", "lib/searchlogic/helpers/control_types/select.rb", "lib/searchlogic/helpers/form.rb", "lib/searchlogic/helpers/utilities.rb", "lib/searchlogic/modifiers/absolute.rb", "lib/searchlogic/modifiers/acos.rb", "lib/searchlogic/modifiers/asin.rb", "lib/searchlogic/modifiers/atan.rb", "lib/searchlogic/modifiers/base.rb", "lib/searchlogic/modifiers/ceil.rb", "lib/searchlogic/modifiers/char_length.rb", "lib/searchlogic/modifiers/cos.rb", "lib/searchlogic/modifiers/cot.rb", "lib/searchlogic/modifiers/day_of_month.rb", "lib/searchlogic/modifiers/day_of_week.rb", "lib/searchlogic/modifiers/day_of_year.rb", "lib/searchlogic/modifiers/degrees.rb", "lib/searchlogic/modifiers/exp.rb", "lib/searchlogic/modifiers/floor.rb", "lib/searchlogic/modifiers/hex.rb", "lib/searchlogic/modifiers/hour.rb", "lib/searchlogic/modifiers/log.rb", "lib/searchlogic/modifiers/log10.rb", "lib/searchlogic/modifiers/log2.rb", "lib/searchlogic/modifiers/lower.rb", "lib/searchlogic/modifiers/ltrim.rb", "lib/searchlogic/modifiers/md5.rb", "lib/searchlogic/modifiers/microseconds.rb", "lib/searchlogic/modifiers/milliseconds.rb", "lib/searchlogic/modifiers/minute.rb", "lib/searchlogic/modifiers/month.rb", "lib/searchlogic/modifiers/octal.rb", "lib/searchlogic/modifiers/radians.rb", "lib/searchlogic/modifiers/round.rb", "lib/searchlogic/modifiers/rtrim.rb", "lib/searchlogic/modifiers/second.rb", "lib/searchlogic/modifiers/sign.rb", "lib/searchlogic/modifiers/sin.rb", "lib/searchlogic/modifiers/square_root.rb", "lib/searchlogic/modifiers/tan.rb", "lib/searchlogic/modifiers/trim.rb", "lib/searchlogic/modifiers/upper.rb", "lib/searchlogic/modifiers/week.rb", "lib/searchlogic/modifiers/year.rb", "lib/searchlogic/search/base.rb", "lib/searchlogic/search/conditions.rb", "lib/searchlogic/search/ordering.rb", "lib/searchlogic/search/pagination.rb", "lib/searchlogic/search/protection.rb", "lib/searchlogic/search/searching.rb", "lib/searchlogic/shared/utilities.rb", "lib/searchlogic/shared/virtual_classes.rb", "lib/searchlogic/version.rb", "lib/searchlogic.rb", "Manifest", "MIT-LICENSE", "Rakefile", "README.rdoc", "test/active_record_tests/associations_test.rb", "test/active_record_tests/base_test.rb", "test/condition_tests/base_test.rb", "test/condition_tests/begins_with_test.rb", "test/condition_tests/blank_test.rb", "test/condition_tests/child_of_test.rb", "test/condition_tests/descendant_of_test.rb", "test/condition_tests/ends_with_test.rb", "test/condition_tests/equals_test.rb", "test/condition_tests/greater_than_or_equal_to_test.rb", "test/condition_tests/greater_than_test.rb", "test/condition_tests/inclusive_descendant_of_test.rb", "test/condition_tests/
|
12
|
+
s.extra_rdoc_files = ["CHANGELOG.rdoc", "lib/searchlogic/active_record/associations.rb", "lib/searchlogic/active_record/base.rb", "lib/searchlogic/active_record/connection_adapters/mysql_adapter.rb", "lib/searchlogic/active_record/connection_adapters/postgresql_adapter.rb", "lib/searchlogic/active_record/connection_adapters/sqlite_adapter.rb", "lib/searchlogic/condition/base.rb", "lib/searchlogic/condition/begins_with.rb", "lib/searchlogic/condition/blank.rb", "lib/searchlogic/condition/child_of.rb", "lib/searchlogic/condition/descendant_of.rb", "lib/searchlogic/condition/ends_with.rb", "lib/searchlogic/condition/equals.rb", "lib/searchlogic/condition/greater_than.rb", "lib/searchlogic/condition/greater_than_or_equal_to.rb", "lib/searchlogic/condition/inclusive_descendant_of.rb", "lib/searchlogic/condition/keywords.rb", "lib/searchlogic/condition/less_than.rb", "lib/searchlogic/condition/less_than_or_equal_to.rb", "lib/searchlogic/condition/like.rb", "lib/searchlogic/condition/nil.rb", "lib/searchlogic/condition/not_begin_with.rb", "lib/searchlogic/condition/not_blank.rb", "lib/searchlogic/condition/not_end_with.rb", "lib/searchlogic/condition/not_equal.rb", "lib/searchlogic/condition/not_have_keywords.rb", "lib/searchlogic/condition/not_like.rb", "lib/searchlogic/condition/not_nil.rb", "lib/searchlogic/condition/sibling_of.rb", "lib/searchlogic/condition/tree.rb", "lib/searchlogic/conditions/any_or_all.rb", "lib/searchlogic/conditions/base.rb", "lib/searchlogic/conditions/groups.rb", "lib/searchlogic/conditions/magic_methods.rb", "lib/searchlogic/conditions/protection.rb", "lib/searchlogic/config/helpers.rb", "lib/searchlogic/config/search.rb", "lib/searchlogic/config.rb", "lib/searchlogic/core_ext/hash.rb", "lib/searchlogic/helpers/control_types/link.rb", "lib/searchlogic/helpers/control_types/links.rb", "lib/searchlogic/helpers/control_types/remote_link.rb", "lib/searchlogic/helpers/control_types/remote_links.rb", "lib/searchlogic/helpers/control_types/remote_select.rb", "lib/searchlogic/helpers/control_types/select.rb", "lib/searchlogic/helpers/form.rb", "lib/searchlogic/helpers/utilities.rb", "lib/searchlogic/modifiers/absolute.rb", "lib/searchlogic/modifiers/acos.rb", "lib/searchlogic/modifiers/asin.rb", "lib/searchlogic/modifiers/atan.rb", "lib/searchlogic/modifiers/base.rb", "lib/searchlogic/modifiers/ceil.rb", "lib/searchlogic/modifiers/char_length.rb", "lib/searchlogic/modifiers/cos.rb", "lib/searchlogic/modifiers/cot.rb", "lib/searchlogic/modifiers/day_of_month.rb", "lib/searchlogic/modifiers/day_of_week.rb", "lib/searchlogic/modifiers/day_of_year.rb", "lib/searchlogic/modifiers/degrees.rb", "lib/searchlogic/modifiers/exp.rb", "lib/searchlogic/modifiers/floor.rb", "lib/searchlogic/modifiers/hex.rb", "lib/searchlogic/modifiers/hour.rb", "lib/searchlogic/modifiers/log.rb", "lib/searchlogic/modifiers/log10.rb", "lib/searchlogic/modifiers/log2.rb", "lib/searchlogic/modifiers/lower.rb", "lib/searchlogic/modifiers/ltrim.rb", "lib/searchlogic/modifiers/md5.rb", "lib/searchlogic/modifiers/microseconds.rb", "lib/searchlogic/modifiers/milliseconds.rb", "lib/searchlogic/modifiers/minute.rb", "lib/searchlogic/modifiers/month.rb", "lib/searchlogic/modifiers/octal.rb", "lib/searchlogic/modifiers/radians.rb", "lib/searchlogic/modifiers/round.rb", "lib/searchlogic/modifiers/rtrim.rb", "lib/searchlogic/modifiers/second.rb", "lib/searchlogic/modifiers/sign.rb", "lib/searchlogic/modifiers/sin.rb", "lib/searchlogic/modifiers/square_root.rb", "lib/searchlogic/modifiers/tan.rb", "lib/searchlogic/modifiers/trim.rb", "lib/searchlogic/modifiers/upper.rb", "lib/searchlogic/modifiers/week.rb", "lib/searchlogic/modifiers/year.rb", "lib/searchlogic/search/base.rb", "lib/searchlogic/search/conditions.rb", "lib/searchlogic/search/ordering.rb", "lib/searchlogic/search/pagination.rb", "lib/searchlogic/search/protection.rb", "lib/searchlogic/search/searching.rb", "lib/searchlogic/shared/utilities.rb", "lib/searchlogic/shared/virtual_classes.rb", "lib/searchlogic/version.rb", "lib/searchlogic.rb", "README.rdoc", "TODO.rdoc"]
|
13
|
+
s.files = ["CHANGELOG.rdoc", "init.rb", "lib/searchlogic/active_record/associations.rb", "lib/searchlogic/active_record/base.rb", "lib/searchlogic/active_record/connection_adapters/mysql_adapter.rb", "lib/searchlogic/active_record/connection_adapters/postgresql_adapter.rb", "lib/searchlogic/active_record/connection_adapters/sqlite_adapter.rb", "lib/searchlogic/condition/base.rb", "lib/searchlogic/condition/begins_with.rb", "lib/searchlogic/condition/blank.rb", "lib/searchlogic/condition/child_of.rb", "lib/searchlogic/condition/descendant_of.rb", "lib/searchlogic/condition/ends_with.rb", "lib/searchlogic/condition/equals.rb", "lib/searchlogic/condition/greater_than.rb", "lib/searchlogic/condition/greater_than_or_equal_to.rb", "lib/searchlogic/condition/inclusive_descendant_of.rb", "lib/searchlogic/condition/keywords.rb", "lib/searchlogic/condition/less_than.rb", "lib/searchlogic/condition/less_than_or_equal_to.rb", "lib/searchlogic/condition/like.rb", "lib/searchlogic/condition/nil.rb", "lib/searchlogic/condition/not_begin_with.rb", "lib/searchlogic/condition/not_blank.rb", "lib/searchlogic/condition/not_end_with.rb", "lib/searchlogic/condition/not_equal.rb", "lib/searchlogic/condition/not_have_keywords.rb", "lib/searchlogic/condition/not_like.rb", "lib/searchlogic/condition/not_nil.rb", "lib/searchlogic/condition/sibling_of.rb", "lib/searchlogic/condition/tree.rb", "lib/searchlogic/conditions/any_or_all.rb", "lib/searchlogic/conditions/base.rb", "lib/searchlogic/conditions/groups.rb", "lib/searchlogic/conditions/magic_methods.rb", "lib/searchlogic/conditions/protection.rb", "lib/searchlogic/config/helpers.rb", "lib/searchlogic/config/search.rb", "lib/searchlogic/config.rb", "lib/searchlogic/core_ext/hash.rb", "lib/searchlogic/helpers/control_types/link.rb", "lib/searchlogic/helpers/control_types/links.rb", "lib/searchlogic/helpers/control_types/remote_link.rb", "lib/searchlogic/helpers/control_types/remote_links.rb", "lib/searchlogic/helpers/control_types/remote_select.rb", "lib/searchlogic/helpers/control_types/select.rb", "lib/searchlogic/helpers/form.rb", "lib/searchlogic/helpers/utilities.rb", "lib/searchlogic/modifiers/absolute.rb", "lib/searchlogic/modifiers/acos.rb", "lib/searchlogic/modifiers/asin.rb", "lib/searchlogic/modifiers/atan.rb", "lib/searchlogic/modifiers/base.rb", "lib/searchlogic/modifiers/ceil.rb", "lib/searchlogic/modifiers/char_length.rb", "lib/searchlogic/modifiers/cos.rb", "lib/searchlogic/modifiers/cot.rb", "lib/searchlogic/modifiers/day_of_month.rb", "lib/searchlogic/modifiers/day_of_week.rb", "lib/searchlogic/modifiers/day_of_year.rb", "lib/searchlogic/modifiers/degrees.rb", "lib/searchlogic/modifiers/exp.rb", "lib/searchlogic/modifiers/floor.rb", "lib/searchlogic/modifiers/hex.rb", "lib/searchlogic/modifiers/hour.rb", "lib/searchlogic/modifiers/log.rb", "lib/searchlogic/modifiers/log10.rb", "lib/searchlogic/modifiers/log2.rb", "lib/searchlogic/modifiers/lower.rb", "lib/searchlogic/modifiers/ltrim.rb", "lib/searchlogic/modifiers/md5.rb", "lib/searchlogic/modifiers/microseconds.rb", "lib/searchlogic/modifiers/milliseconds.rb", "lib/searchlogic/modifiers/minute.rb", "lib/searchlogic/modifiers/month.rb", "lib/searchlogic/modifiers/octal.rb", "lib/searchlogic/modifiers/radians.rb", "lib/searchlogic/modifiers/round.rb", "lib/searchlogic/modifiers/rtrim.rb", "lib/searchlogic/modifiers/second.rb", "lib/searchlogic/modifiers/sign.rb", "lib/searchlogic/modifiers/sin.rb", "lib/searchlogic/modifiers/square_root.rb", "lib/searchlogic/modifiers/tan.rb", "lib/searchlogic/modifiers/trim.rb", "lib/searchlogic/modifiers/upper.rb", "lib/searchlogic/modifiers/week.rb", "lib/searchlogic/modifiers/year.rb", "lib/searchlogic/search/base.rb", "lib/searchlogic/search/conditions.rb", "lib/searchlogic/search/ordering.rb", "lib/searchlogic/search/pagination.rb", "lib/searchlogic/search/protection.rb", "lib/searchlogic/search/searching.rb", "lib/searchlogic/shared/utilities.rb", "lib/searchlogic/shared/virtual_classes.rb", "lib/searchlogic/version.rb", "lib/searchlogic.rb", "Manifest", "MIT-LICENSE", "Rakefile", "README.rdoc", "test/active_record_tests/associations_test.rb", "test/active_record_tests/base_test.rb", "test/condition_tests/base_test.rb", "test/condition_tests/begins_with_test.rb", "test/condition_tests/blank_test.rb", "test/condition_tests/child_of_test.rb", "test/condition_tests/descendant_of_test.rb", "test/condition_tests/ends_with_test.rb", "test/condition_tests/equals_test.rb", "test/condition_tests/greater_than_or_equal_to_test.rb", "test/condition_tests/greater_than_test.rb", "test/condition_tests/inclusive_descendant_of_test.rb", "test/condition_tests/keywords_test.rb", "test/condition_tests/less_than_or_equal_to_test.rb", "test/condition_tests/less_than_test.rb", "test/condition_tests/like_test.rb", "test/condition_tests/nil_test.rb", "test/condition_tests/not_begin_with_test.rb", "test/condition_tests/not_blank_test.rb", "test/condition_tests/not_end_with_test.rb", "test/condition_tests/not_equal_test.rb", "test/condition_tests/not_have_keywords_test.rb", "test/condition_tests/not_like_test.rb", "test/condition_tests/not_nil_test.rb", "test/condition_tests/sibling_of_test.rb", "test/conditions_tests/any_or_all_test.rb", "test/conditions_tests/base_test.rb", "test/conditions_tests/groups_test.rb", "test/conditions_tests/magic_methods_test.rb", "test/conditions_tests/protection_test.rb", "test/config_test.rb", "test/fixtures/accounts.yml", "test/fixtures/animals.yml", "test/fixtures/orders.yml", "test/fixtures/user_groups.yml", "test/fixtures/users.yml", "test/libs/acts_as_tree.rb", "test/libs/rexml_fix.rb", "test/modifier_tests/day_of_month_test.rb", "test/search_tests/base_test.rb", "test/search_tests/conditions_test.rb", "test/search_tests/ordering_test.rb", "test/search_tests/pagination_test.rb", "test/search_tests/protection_test.rb", "test/test_helper.rb", "TODO.rdoc", "searchlogic.gemspec"]
|
12
14
|
s.has_rdoc = true
|
13
15
|
s.homepage = %q{http://github.com/binarylogic/searchlogic}
|
14
16
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Searchlogic", "--main", "README.rdoc"]
|
15
17
|
s.require_paths = ["lib"]
|
16
18
|
s.rubyforge_project = %q{searchlogic}
|
17
|
-
s.rubygems_version = %q{1.
|
19
|
+
s.rubygems_version = %q{1.3.1}
|
18
20
|
s.summary = %q{Object based ActiveRecord searching, ordering, pagination, and more!}
|
19
|
-
s.test_files = ["test/active_record_tests/associations_test.rb", "test/active_record_tests/base_test.rb", "test/condition_tests/base_test.rb", "test/condition_tests/begins_with_test.rb", "test/condition_tests/blank_test.rb", "test/condition_tests/child_of_test.rb", "test/condition_tests/descendant_of_test.rb", "test/condition_tests/ends_with_test.rb", "test/condition_tests/equals_test.rb", "test/condition_tests/greater_than_or_equal_to_test.rb", "test/condition_tests/greater_than_test.rb", "test/condition_tests/inclusive_descendant_of_test.rb", "test/condition_tests/
|
21
|
+
s.test_files = ["test/active_record_tests/associations_test.rb", "test/active_record_tests/base_test.rb", "test/condition_tests/base_test.rb", "test/condition_tests/begins_with_test.rb", "test/condition_tests/blank_test.rb", "test/condition_tests/child_of_test.rb", "test/condition_tests/descendant_of_test.rb", "test/condition_tests/ends_with_test.rb", "test/condition_tests/equals_test.rb", "test/condition_tests/greater_than_or_equal_to_test.rb", "test/condition_tests/greater_than_test.rb", "test/condition_tests/inclusive_descendant_of_test.rb", "test/condition_tests/keywords_test.rb", "test/condition_tests/less_than_or_equal_to_test.rb", "test/condition_tests/less_than_test.rb", "test/condition_tests/like_test.rb", "test/condition_tests/nil_test.rb", "test/condition_tests/not_begin_with_test.rb", "test/condition_tests/not_blank_test.rb", "test/condition_tests/not_end_with_test.rb", "test/condition_tests/not_equal_test.rb", "test/condition_tests/not_have_keywords_test.rb", "test/condition_tests/not_like_test.rb", "test/condition_tests/not_nil_test.rb", "test/condition_tests/sibling_of_test.rb", "test/conditions_tests/any_or_all_test.rb", "test/conditions_tests/base_test.rb", "test/conditions_tests/groups_test.rb", "test/conditions_tests/magic_methods_test.rb", "test/conditions_tests/protection_test.rb", "test/config_test.rb", "test/modifier_tests/day_of_month_test.rb", "test/search_tests/base_test.rb", "test/search_tests/conditions_test.rb", "test/search_tests/ordering_test.rb", "test/search_tests/pagination_test.rb", "test/search_tests/protection_test.rb", "test/test_helper.rb"]
|
20
22
|
|
21
23
|
if s.respond_to? :specification_version then
|
22
24
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
23
25
|
s.specification_version = 2
|
24
26
|
|
25
|
-
if
|
27
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
26
28
|
s.add_runtime_dependency(%q<activerecord>, [">= 0"])
|
27
29
|
s.add_runtime_dependency(%q<activesupport>, [">= 0"])
|
28
30
|
s.add_development_dependency(%q<echoe>, [">= 0"])
|
@@ -6,7 +6,7 @@ module ActiveRecordTests
|
|
6
6
|
binary_logic = accounts(:binary_logic)
|
7
7
|
neco = accounts(:neco)
|
8
8
|
binary_fun = accounts(:binary_fun)
|
9
|
-
|
9
|
+
|
10
10
|
assert_equal [binary_logic, binary_fun, neco], Account.all
|
11
11
|
assert_equal binary_logic, Account.first
|
12
12
|
|
@@ -19,7 +19,7 @@ module ActiveRecordTests
|
|
19
19
|
assert_equal [binary_logic, binary_fun, neco], Account.find(:all, {})
|
20
20
|
assert_equal [binary_logic, binary_fun, neco], Account.find(:all, :select => "id, name")
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
def test_standard_calculations
|
24
24
|
binary_logic = accounts(:binary_logic)
|
25
25
|
neco = accounts(:neco)
|
@@ -35,12 +35,12 @@ module ActiveRecordTests
|
|
35
35
|
assert_equal neco.id, Account.maximum("id")
|
36
36
|
assert_equal binary_logic.id, Account.minimum("id")
|
37
37
|
end
|
38
|
-
|
38
|
+
|
39
39
|
def test_valid_ar_options
|
40
40
|
assert_equal [:conditions, :include, :joins, :limit, :offset, :order, :select, :readonly, :group, :from, :lock], ActiveRecord::Base.valid_find_options
|
41
41
|
assert_equal [:conditions, :joins, :order, :select, :group, :having, :distinct, :limit, :offset, :include, :from], ActiveRecord::Base.valid_calculations_options
|
42
42
|
end
|
43
|
-
|
43
|
+
|
44
44
|
def test_build_search
|
45
45
|
search = Account.new_search(:conditions => {:name_keywords => "awesome"}, :page => 2, :per_page => 15)
|
46
46
|
assert_kind_of Searchlogic::Search::Base, search
|
@@ -50,7 +50,7 @@ module ActiveRecordTests
|
|
50
50
|
assert_equal 2, search.page
|
51
51
|
assert_equal 15, search.per_page
|
52
52
|
end
|
53
|
-
|
53
|
+
|
54
54
|
def test_searchlogic_searching
|
55
55
|
binary_logic = accounts(:binary_logic)
|
56
56
|
neco = accounts(:neco)
|
@@ -60,27 +60,27 @@ module ActiveRecordTests
|
|
60
60
|
assert_equal [binary_logic], Account.all(:conditions => {:name_contains => "Binary", :users => {:first_name_starts_with => "Ben"}})
|
61
61
|
assert_equal [], Account.all(:conditions => {:name_contains => "Binary", :users => {:first_name_starts_with => "Ben", :last_name => "Mills"}})
|
62
62
|
assert_equal [binary_logic, neco], Account.all(:conditions => {:users => {:id_gt => 0}}, :include => :users)
|
63
|
-
|
63
|
+
|
64
64
|
read_only_accounts = Account.all(:conditions => {:name_contains => "Binary"}, :readonly => true)
|
65
65
|
assert read_only_accounts.first.readonly?
|
66
|
-
|
66
|
+
|
67
67
|
assert_equal [binary_logic, binary_fun], Account.all(:conditions => {:name_contains => "Binary"}, :page => 2)
|
68
68
|
assert_equal [], Account.all(:conditions => {:name_contains => "Binary"}, :page => 2, :per_page => 20)
|
69
|
-
|
69
|
+
|
70
70
|
assert_equal [binary_logic], Account.scope1.all(:conditions => {:users => {:first_name_starts_with => "Ben"}})
|
71
71
|
end
|
72
|
-
|
72
|
+
|
73
73
|
def test_searchlogic_counting
|
74
74
|
assert_equal 2, Account.count(:conditions => {:name_contains => "Binary"})
|
75
75
|
assert_equal 1, Account.count(:conditions => {:name_contains => "Binary", :users => {:first_name_contains => "Ben"}})
|
76
76
|
assert_equal 1, Account.count(:conditions => {:name_contains => "Binary", :users => {:first_name_contains => "Ben"}}, :limit => 10, :offset => 10, :order_by => "id", :group => "id")
|
77
77
|
end
|
78
|
-
|
78
|
+
|
79
79
|
def test_scoping
|
80
80
|
assert_equal({:conditions => {:name => "Binary"}, :limit => 10, :readonly => true}, Account.send(:with_scope, :find => {:conditions => {:name => "Binary"}, :limit => 10, :readonly => true}) { Account.send(:scope, :find) })
|
81
81
|
assert_equal({:conditions => ["\"accounts\".\"name\" LIKE ?", "%Binary%"], :limit => 10, :offset => 20}, Account.send(:with_scope, :find => {:conditions => {:name_contains => "Binary"}, :per_page => 10, :page => 3}) { Account.send(:scope, :find) })
|
82
82
|
end
|
83
|
-
|
83
|
+
|
84
84
|
def test_accessible_conditions
|
85
85
|
Account.conditions_accessible :name_contains
|
86
86
|
assert_equal Set.new(["name_contains"]), Account.accessible_conditions
|
@@ -90,7 +90,7 @@ module ActiveRecordTests
|
|
90
90
|
assert_equal Set.new(["id_gt", "name_contains"]), Account.accessible_conditions
|
91
91
|
Account.send(:write_inheritable_attribute, :conditions_accessible, nil)
|
92
92
|
end
|
93
|
-
|
93
|
+
|
94
94
|
def test_protected_conditions
|
95
95
|
Account.conditions_protected :name_contains
|
96
96
|
assert_equal Set.new(["name_contains"]), Account.protected_conditions
|
@@ -100,7 +100,7 @@ module ActiveRecordTests
|
|
100
100
|
assert_equal Set.new(["id_gt", "name_contains"]), Account.protected_conditions
|
101
101
|
Account.send(:write_inheritable_attribute, :conditions_protected, nil)
|
102
102
|
end
|
103
|
-
|
103
|
+
|
104
104
|
def test_includes
|
105
105
|
assert_nothing_raised { Account.all(:conditions => {:users => {:first_name_like => "Ben"}}, :include => :users) }
|
106
106
|
end
|
@@ -14,6 +14,10 @@ module ConditionTests
|
|
14
14
|
condition = Searchlogic::Condition::Keywords.new(Account, :column => Account.columns_hash["name"])
|
15
15
|
condition.value = "%^$*(^$) àáâãäåßéèêëìíîïñòóôõöùúûüýÿ"
|
16
16
|
assert_equal ["\"accounts\".\"name\" LIKE ?", "%àáâãäåßéèêëìíîïñòóôõöùúûüýÿ%"], condition.sanitize
|
17
|
+
|
18
|
+
condition = Searchlogic::Condition::Keywords.new(Account, :column => Account.columns_hash["name"])
|
19
|
+
condition.value = "ben@ben.com"
|
20
|
+
assert_equal ["\"accounts\".\"name\" LIKE ?", "%ben@ben.com%"], condition.sanitize
|
17
21
|
end
|
18
22
|
end
|
19
23
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper.rb'
|
2
|
+
|
3
|
+
module ConditionsTests
|
4
|
+
class AnyOrAllTest < ActiveSupport::TestCase
|
5
|
+
def test_any
|
6
|
+
conditions = Searchlogic::Cache::AccountConditions.new
|
7
|
+
assert !conditions.any?
|
8
|
+
conditions = Searchlogic::Cache::AccountConditions.new(:any => true)
|
9
|
+
assert conditions.any?
|
10
|
+
conditions.any = "false"
|
11
|
+
assert !conditions.any?
|
12
|
+
conditions = Searchlogic::Cache::AccountConditions.new
|
13
|
+
conditions.name_contains = "Binary"
|
14
|
+
assert_equal ["\"accounts\".\"name\" LIKE ?", "%Binary%"], conditions.sanitize
|
15
|
+
conditions.id = 1
|
16
|
+
assert_equal ["\"accounts\".\"name\" LIKE ? AND \"accounts\".\"id\" = ?", "%Binary%", 1], conditions.sanitize
|
17
|
+
conditions.any = true
|
18
|
+
assert_equal ["\"accounts\".\"name\" LIKE ? OR \"accounts\".\"id\" = ?", "%Binary%", 1], conditions.sanitize
|
19
|
+
conditions.any = false
|
20
|
+
assert_equal ["\"accounts\".\"name\" LIKE ? AND \"accounts\".\"id\" = ?", "%Binary%", 1], conditions.sanitize
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -2,23 +2,22 @@ require File.dirname(__FILE__) + '/../test_helper.rb'
|
|
2
2
|
|
3
3
|
module ConditionsTests
|
4
4
|
class BaseTest < ActiveSupport::TestCase
|
5
|
-
def
|
5
|
+
def test_register_condition
|
6
6
|
Searchlogic::Conditions::Base.register_condition(Searchlogic::Condition::Keywords)
|
7
7
|
assert [Searchlogic::Condition::Keywords], Searchlogic::Conditions::Base.conditions
|
8
|
-
|
8
|
+
|
9
9
|
Searchlogic::Conditions::Base.register_condition(Searchlogic::Condition::Like)
|
10
10
|
assert [Searchlogic::Condition::Keywords, Searchlogic::Condition::Like], Searchlogic::Conditions::Base.conditions
|
11
11
|
end
|
12
|
-
|
13
|
-
def
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
end
|
12
|
+
|
13
|
+
def test_register_modifier
|
14
|
+
Searchlogic::Conditions::Base.register_modifier(Searchlogic::Modifiers::Absolute)
|
15
|
+
assert [Searchlogic::Modifiers::Absolute], Searchlogic::Conditions::Base.modifiers
|
16
|
+
|
17
|
+
Searchlogic::Conditions::Base.register_modifier(Searchlogic::Modifiers::Cos)
|
18
|
+
assert [Searchlogic::Modifiers::Absolute, Searchlogic::Modifiers::Cos], Searchlogic::Conditions::Base.modifiers
|
20
19
|
end
|
21
|
-
|
20
|
+
|
22
21
|
def test_needed
|
23
22
|
assert (not Searchlogic::Conditions::Base.needed?(User, {}))
|
24
23
|
assert (not Searchlogic::Conditions::Base.needed?(User, {:first_name => "Ben"}))
|
@@ -32,24 +31,6 @@ module ConditionsTests
|
|
32
31
|
assert_equal conditions.name_contains, "Binary"
|
33
32
|
end
|
34
33
|
|
35
|
-
def test_any
|
36
|
-
conditions = Searchlogic::Cache::AccountConditions.new
|
37
|
-
assert (not conditions.any?)
|
38
|
-
conditions = Searchlogic::Cache::AccountConditions.new(:any => true)
|
39
|
-
assert conditions.any?
|
40
|
-
conditions.any = "false"
|
41
|
-
assert (not conditions.any?)
|
42
|
-
conditions = Searchlogic::Cache::AccountConditions.new
|
43
|
-
conditions.name_contains = "Binary"
|
44
|
-
assert_equal_sql ["\"accounts\".\"name\" LIKE ?", "%Binary%"], conditions.sanitize
|
45
|
-
conditions.id = 1
|
46
|
-
assert_equal_sql ["(\"accounts\".\"id\" = ?) AND (\"accounts\".\"name\" LIKE ?)", 1, "%Binary%"], conditions.sanitize
|
47
|
-
conditions.any = true
|
48
|
-
assert_equal_sql ["(\"accounts\".\"id\" = ?) OR (\"accounts\".\"name\" LIKE ?)", 1, "%Binary%"], conditions.sanitize
|
49
|
-
conditions.any = false
|
50
|
-
assert_equal_sql ["(\"accounts\".\"id\" = ?) AND (\"accounts\".\"name\" LIKE ?)", 1, "%Binary%"], conditions.sanitize
|
51
|
-
end
|
52
|
-
|
53
34
|
def test_auto_joins
|
54
35
|
conditions = Searchlogic::Cache::AccountConditions.new
|
55
36
|
assert_equal conditions.auto_joins, nil
|
@@ -75,18 +56,29 @@ module ConditionsTests
|
|
75
56
|
conditions.id_gt = 5
|
76
57
|
now = Time.now
|
77
58
|
conditions.created_after = now
|
78
|
-
|
59
|
+
assert_equal ["\"accounts\".\"name\" LIKE ? AND \"accounts\".\"id\" > ? AND \"accounts\".\"created_at\" > ?", "%Binary%", 5, now], conditions.sanitize
|
79
60
|
|
80
61
|
# test out associations
|
81
62
|
conditions.users.first_name_like = "Ben"
|
82
63
|
conditions.users.id_gt = 10
|
83
64
|
conditions.users.orders.total_lt = 500
|
84
|
-
|
65
|
+
assert_equal ["\"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], conditions.sanitize
|
85
66
|
|
86
67
|
# test that raw sql is returned
|
87
68
|
conditions.conditions = "awesome"
|
88
69
|
assert_equal "awesome", conditions.sanitize
|
89
70
|
end
|
71
|
+
|
72
|
+
def test_sanitize_with_and_or_any
|
73
|
+
conditions = Searchlogic::Cache::AccountConditions.new
|
74
|
+
conditions.name_contains = "Binary"
|
75
|
+
conditions.or_id_gt = 5
|
76
|
+
assert conditions.id_gt_object.any?
|
77
|
+
assert_equal ["\"accounts\".\"name\" LIKE ? OR \"accounts\".\"id\" > ?", "%Binary%", 5], conditions.sanitize
|
78
|
+
now = Time.now
|
79
|
+
conditions.created_at_after = now
|
80
|
+
assert_equal ["\"accounts\".\"name\" LIKE ? OR \"accounts\".\"id\" > ? AND \"accounts\".\"created_at\" > ?", "%Binary%", 5, now], conditions.sanitize
|
81
|
+
end
|
90
82
|
|
91
83
|
def test_conditions
|
92
84
|
conditions = Searchlogic::Cache::AccountConditions.new
|
@@ -94,52 +86,40 @@ module ConditionsTests
|
|
94
86
|
v = {:name_like => "Binary", :created_at_greater_than => now}
|
95
87
|
conditions.conditions = v
|
96
88
|
assert_equal v, conditions.conditions
|
97
|
-
|
89
|
+
|
98
90
|
sql = "id in (1,2,3,4)"
|
99
91
|
conditions.conditions = sql
|
100
92
|
assert_equal sql, conditions.conditions
|
101
|
-
assert_equal
|
102
|
-
|
93
|
+
assert_equal [], conditions.send(:objects)
|
94
|
+
|
103
95
|
v2 = {:id_less_than => 5, :name_begins_with => "Beginning of string"}
|
104
96
|
conditions.conditions = v2
|
105
97
|
assert_equal v2, conditions.conditions
|
106
|
-
|
98
|
+
|
107
99
|
v = {:name_like => "Binary", :created_at_greater_than => now}
|
108
100
|
conditions.conditions = v
|
109
101
|
assert_equal v2.merge(v), conditions.conditions
|
110
|
-
|
102
|
+
|
111
103
|
sql2 = "id > 5 and name = 'Test'"
|
112
104
|
conditions.conditions = sql2
|
113
105
|
assert_equal sql2, conditions.conditions
|
114
|
-
assert_equal
|
115
|
-
|
106
|
+
assert_equal [], conditions.send(:objects)
|
107
|
+
|
116
108
|
conditions.name_contains = "awesome"
|
117
109
|
assert_equal({:name_like => "awesome"}, conditions.conditions)
|
118
|
-
|
110
|
+
|
119
111
|
now = Time.now
|
120
112
|
conditions.conditions = {:id_gt => "", :id => "", :name => ["", "", ""], :created_at => ["", now], :name_starts_with => "Ben"}
|
121
113
|
assert_equal({:name_like => "awesome", :name_begins_with => "Ben", :created_at_equals => now}, conditions.conditions)
|
122
114
|
end
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
def test_setting_conditions
|
127
|
-
[Account, User, Order].each do |klass|
|
128
|
-
conditions = "Searchlogic::Cache::#{klass}Conditions".constantize.new
|
129
|
-
conditions.class.condition_names.each do |condition_name|
|
130
|
-
conditions.send("#{condition_name}=", 1)
|
131
|
-
assert_equal 1, conditions.send(condition_name)
|
132
|
-
end
|
133
|
-
end
|
134
|
-
end
|
135
|
-
|
136
|
-
def test_accessible_protected_conditions
|
115
|
+
|
116
|
+
def test_conditions_with_protected_assignments
|
137
117
|
Account.conditions_accessible << :name_contains
|
138
118
|
conditions = Searchlogic::Cache::AccountConditions.new
|
139
119
|
conditions.conditions = {:created_after => Time.now, :name_contains => "Binary"}
|
140
120
|
assert({:name_contains => "Binary"}, conditions.conditions)
|
141
121
|
Account.send(:write_inheritable_attribute, :conditions_accessible, nil)
|
142
|
-
|
122
|
+
|
143
123
|
Account.conditions_protected << :name_contains
|
144
124
|
conditions = Searchlogic::Cache::AccountConditions.new
|
145
125
|
now = Time.now
|
@@ -147,14 +127,14 @@ module ConditionsTests
|
|
147
127
|
assert({:created_after => now}, conditions.conditions)
|
148
128
|
Account.send(:write_inheritable_attribute, :conditions_protected, nil)
|
149
129
|
end
|
150
|
-
|
151
|
-
def
|
130
|
+
|
131
|
+
def test_conditions_unknown
|
152
132
|
conditions = Searchlogic::Cache::UserConditions.new
|
153
133
|
assert_raise(NoMethodError) { conditions.conditions = {:unknown => "blah"} }
|
154
134
|
assert_nothing_raised { conditions.conditions = {:first_name => "blah"} }
|
155
135
|
assert_nothing_raised { conditions.conditions = {:first_name_contains => "blah"} }
|
156
136
|
end
|
157
|
-
|
137
|
+
|
158
138
|
def test_setting_associations
|
159
139
|
conditions = Searchlogic::Cache::AccountConditions.new(:users => {:first_name_like => "Ben"})
|
160
140
|
assert_equal conditions.users.first_name_like, "Ben"
|
@@ -162,30 +142,7 @@ module ConditionsTests
|
|
162
142
|
conditions.users.last_name_begins_with = "Ben"
|
163
143
|
assert_equal conditions.users.last_name_begins_with, "Ben"
|
164
144
|
end
|
165
|
-
|
166
|
-
def test_virtual_columns
|
167
|
-
conditions = Searchlogic::Cache::AccountConditions.new
|
168
|
-
conditions.hour_of_created_gt = 2
|
169
|
-
assert_equal_sql ["strftime('%H', \"accounts\".\"created_at\") > ?", 2], conditions.sanitize
|
170
|
-
conditions.dow_of_created_at_most = 5
|
171
|
-
assert_equal_sql ["(strftime('%w', \"accounts\".\"created_at\") <= ?) AND (strftime('%H', \"accounts\".\"created_at\") > ?)", 5, 2], conditions.sanitize
|
172
|
-
conditions.month_of_created_at_nil = true
|
173
|
-
assert_equal_sql ["(strftime('%w', \"accounts\".\"created_at\") <= ?) AND (strftime('%H', \"accounts\".\"created_at\") > ?) AND (strftime('%m', \"accounts\".\"created_at\") IS NULL)", 5, 2], conditions.sanitize
|
174
|
-
conditions.min_of_hour_of_month_of_created_at_nil = true
|
175
|
-
assert_equal_sql ["(strftime('%w', \"accounts\".\"created_at\") <= ?) AND (strftime('%H', \"accounts\".\"created_at\") > ?) AND (strftime('%m', strftime('%H', strftime('%M', \"accounts\".\"created_at\"))) IS NULL) AND (strftime('%m', \"accounts\".\"created_at\") IS NULL)", 5, 2], conditions.sanitize
|
176
|
-
end
|
177
|
-
|
178
|
-
def test_objects
|
179
|
-
conditions = Searchlogic::Cache::AccountConditions.new
|
180
|
-
assert_equal({}, conditions.send(:objects))
|
181
145
|
|
182
|
-
conditions.name_contains = "Binary"
|
183
|
-
assert_equal 1, conditions.send(:objects).size
|
184
|
-
|
185
|
-
conditions.users.first_name_contains = "Ben"
|
186
|
-
assert_equal 2, conditions.send(:objects).size
|
187
|
-
end
|
188
|
-
|
189
146
|
def test_reset
|
190
147
|
conditions = Searchlogic::Cache::AccountConditions.new
|
191
148
|
|
@@ -194,13 +151,13 @@ module ConditionsTests
|
|
194
151
|
|
195
152
|
conditions.reset_name_like!
|
196
153
|
conditions.reset_name_contains! # should set up aliases for reset
|
197
|
-
assert_equal
|
154
|
+
assert_equal [], conditions.send(:objects)
|
198
155
|
|
199
156
|
conditions.users.first_name_like = "Ben"
|
200
157
|
assert_equal 1, conditions.send(:objects).size
|
201
158
|
|
202
159
|
conditions.reset_users!
|
203
|
-
assert_equal
|
160
|
+
assert_equal [], conditions.send(:objects)
|
204
161
|
|
205
162
|
conditions.name_begins_with ="Binary"
|
206
163
|
conditions.users.orders.total_gt = 200
|
@@ -210,12 +167,12 @@ module ConditionsTests
|
|
210
167
|
assert_equal 1, conditions.send(:objects).size
|
211
168
|
|
212
169
|
conditions.reset_users!
|
213
|
-
assert_equal
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
conditions
|
218
|
-
|
170
|
+
assert_equal [], conditions.send(:objects)
|
171
|
+
|
172
|
+
conditions.name_begins_with ="Binary"
|
173
|
+
assert_equal 1, conditions.send(:objects).size
|
174
|
+
conditions.reset!
|
175
|
+
assert_equal [], conditions.send(:objects)
|
219
176
|
end
|
220
177
|
end
|
221
178
|
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper.rb'
|
2
|
+
|
3
|
+
module ConditionsTests
|
4
|
+
class GroupsTest < ActiveSupport::TestCase
|
5
|
+
def test_group_object
|
6
|
+
conditions = Searchlogic::Cache::AccountConditions.new
|
7
|
+
conditions.id_gt = 3
|
8
|
+
group1 = conditions.group
|
9
|
+
group1.name_like = "Binary"
|
10
|
+
group2 = conditions.group
|
11
|
+
group2.id_gt = 5
|
12
|
+
group21 = group2.group
|
13
|
+
group21.id_lt = 20
|
14
|
+
now = Time.now
|
15
|
+
group21.created_at_after = now
|
16
|
+
assert_equal ["\"accounts\".\"id\" > ? AND (\"accounts\".\"name\" LIKE ?) AND (\"accounts\".\"id\" > ? AND (\"accounts\".\"id\" < ? AND \"accounts\".\"created_at\" > ?))", 3, "%Binary%", 5, 20, now], conditions.sanitize
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_group_block
|
20
|
+
conditions = Searchlogic::Cache::AccountConditions.new
|
21
|
+
conditions.id_gt = 3
|
22
|
+
conditions.group do |group1|
|
23
|
+
group1.name_like = "Binary"
|
24
|
+
end
|
25
|
+
now = Time.now
|
26
|
+
conditions.group do |group2|
|
27
|
+
group2.id_gt = 5
|
28
|
+
group2.group do |group21|
|
29
|
+
group21.id_lt = 20
|
30
|
+
group21.created_at_after = now
|
31
|
+
end
|
32
|
+
end
|
33
|
+
assert_equal ["\"accounts\".\"id\" > ? AND (\"accounts\".\"name\" LIKE ?) AND (\"accounts\".\"id\" > ? AND (\"accounts\".\"id\" < ? AND \"accounts\".\"created_at\" > ?))", 3, "%Binary%", 5, 20, now], conditions.sanitize
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_group_hash
|
37
|
+
now = Time.now
|
38
|
+
conditions = Searchlogic::Cache::AccountConditions.new(
|
39
|
+
:id_gt => 3,
|
40
|
+
:group => [
|
41
|
+
{:name_like => "Binary"},
|
42
|
+
{
|
43
|
+
:id_gt => 5,
|
44
|
+
:group => {:created_at_after => now}
|
45
|
+
}
|
46
|
+
]
|
47
|
+
)
|
48
|
+
assert_equal ["\"accounts\".\"id\" > ? AND (\"accounts\".\"name\" LIKE ?) AND (\"accounts\".\"id\" > ? AND (\"accounts\".\"created_at\" > ?))", 3, "%Binary%", 5, now], conditions.sanitize
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper.rb'
|
2
|
+
|
3
|
+
module ConditionsTests
|
4
|
+
class MagicMethodsTest < ActiveSupport::TestCase
|
5
|
+
def test_virtual_columns
|
6
|
+
search = Account.new_search
|
7
|
+
conditions = search.conditions
|
8
|
+
conditions.hour_of_created_gt = 2
|
9
|
+
assert_equal ["(strftime('%H', \"accounts\".\"created_at\") * 1) > ?", 2], conditions.sanitize
|
10
|
+
conditions.dow_of_created_at_most = 5
|
11
|
+
assert_equal ["(strftime('%H', \"accounts\".\"created_at\") * 1) > ? AND (strftime('%w', \"accounts\".\"created_at\") * 1) <= ?", 2, 5], conditions.sanitize
|
12
|
+
conditions.month_of_created_at_nil = true
|
13
|
+
assert_equal ["(strftime('%H', \"accounts\".\"created_at\") * 1) > ? AND (strftime('%w', \"accounts\".\"created_at\") * 1) <= ? AND (strftime('%m', \"accounts\".\"created_at\") * 1) IS NULL", 2, 5], conditions.sanitize
|
14
|
+
conditions.min_of_hour_of_month_of_created_at_nil = true
|
15
|
+
assert_equal ["(strftime('%H', \"accounts\".\"created_at\") * 1) > ? AND (strftime('%w', \"accounts\".\"created_at\") * 1) <= ? AND (strftime('%m', \"accounts\".\"created_at\") * 1) IS NULL AND (strftime('%m', (strftime('%H', (strftime('%M', \"accounts\".\"created_at\") * 1)) * 1)) * 1) IS NULL", 2, 5], conditions.sanitize
|
16
|
+
assert_nothing_raised { search.all }
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_method_conflicts
|
21
|
+
conditions = Searchlogic::Cache::AccountConditions.new
|
22
|
+
assert_nil conditions.id
|
23
|
+
end
|
24
|
+
end
|
@@ -142,7 +142,7 @@ module SearchTests
|
|
142
142
|
search.conditions.users.id_greater_than = 2
|
143
143
|
search.page = 3
|
144
144
|
search.readonly = true
|
145
|
-
|
145
|
+
assert_equal({:joins => :users, :offset => 4, :readonly => true, :conditions => ["\"accounts\".\"name\" LIKE ? AND \"users\".\"id\" > ?", "%Binary%", 2], :limit => 2 }, search.sanitize)
|
146
146
|
end
|
147
147
|
|
148
148
|
def test_scope
|
@@ -151,7 +151,7 @@ module SearchTests
|
|
151
151
|
conditions = search.conditions
|
152
152
|
assert_equal "some sql", search.conditions.conditions
|
153
153
|
search.conditions = nil
|
154
|
-
|
154
|
+
assert_equal({}, search.conditions.conditions)
|
155
155
|
search.conditions = "some sql"
|
156
156
|
assert_equal "some sql", search.conditions.conditions
|
157
157
|
search.conditions = "some sql"
|
@@ -217,7 +217,7 @@ module SearchTests
|
|
217
217
|
|
218
218
|
search = Account.new_search(:conditions => {:users => {:orders => {:id_gt => bens_order.id}}})
|
219
219
|
assert_equal 1, search.count
|
220
|
-
|
220
|
+
|
221
221
|
search = Order.new_search(:conditions => {:user => {:account => {:id_gt => binary_logic.id}}})
|
222
222
|
assert_equal 1, search.count
|
223
223
|
|
@@ -233,5 +233,9 @@ module SearchTests
|
|
233
233
|
def test_sti
|
234
234
|
|
235
235
|
end
|
236
|
+
|
237
|
+
def test_include_in_relationships
|
238
|
+
|
239
|
+
end
|
236
240
|
end
|
237
241
|
end
|