sunspot_rails 2.0.0.pre.120924 → 2.0.0.pre.120925
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/.gitignore +6 -10
- data/{sunspot_rails/.rspec → .rspec} +0 -0
- data/{sunspot_rails/History.txt → History.txt} +0 -0
- data/{sunspot/LICENSE → LICENSE} +0 -0
- data/{sunspot_rails/MIT-LICENSE → MIT-LICENSE} +0 -0
- data/{sunspot_rails/README.rdoc → README.rdoc} +0 -0
- data/Rakefile +12 -32
- data/{sunspot_rails/TODO → TODO} +0 -0
- data/{sunspot_rails/dev_tasks → dev_tasks}/rdoc.rake +0 -0
- data/{sunspot_rails/dev_tasks → dev_tasks}/release.rake +0 -0
- data/{sunspot_rails/dev_tasks → dev_tasks}/spec.rake +0 -0
- data/{sunspot/tasks → dev_tasks}/todo.rake +0 -0
- data/{sunspot_rails/gemfiles → gemfiles}/rails-2.3.14 +0 -0
- data/{sunspot_rails/gemfiles → gemfiles}/rails-3.0.15 +0 -0
- data/{sunspot_rails/gemfiles → gemfiles}/rails-3.1.6 +0 -0
- data/{sunspot_rails/gemfiles → gemfiles}/rails-3.2.6 +0 -0
- data/{sunspot_rails/generators → generators}/sunspot/sunspot_generator.rb +0 -0
- data/{sunspot_rails/generators → generators}/sunspot/templates/sunspot.yml +0 -0
- data/{sunspot_rails/install.rb → install.rb} +0 -0
- data/{sunspot_rails/lib → lib}/generators/sunspot_rails.rb +0 -0
- data/{sunspot_rails/lib → lib}/generators/sunspot_rails/install/install_generator.rb +0 -0
- data/{sunspot_rails/lib → lib}/generators/sunspot_rails/install/templates/config/sunspot.yml +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/adapters.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/configuration.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/init.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/log_subscriber.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/railtie.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/railties/controller_runtime.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/request_lifecycle.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/searchable.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/server.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/solr_instrumentation.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/solr_logging.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/spec_helper.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/stub_session_proxy.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/tasks.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot_rails.rb +0 -0
- data/{sunspot_rails/spec → spec}/configuration_spec.rb +0 -0
- data/{sunspot_rails/spec → spec}/model_lifecycle_spec.rb +0 -0
- data/{sunspot_rails/spec → spec}/model_spec.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/app/controllers/application_controller.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/app/controllers/posts_controller.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/app/models/author.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/app/models/blog.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/app/models/location.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/app/models/photo_post.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/app/models/post.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/app/models/post_with_auto.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/app/models/post_with_default_scope.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/config/boot.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/config/preinitializer.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/config/routes.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/config/sunspot.yml +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/db/schema.rb +0 -0
- data/{sunspot_rails/spec → spec}/request_lifecycle_spec.rb +0 -0
- data/{sunspot_rails/spec → spec}/schema.rb +0 -0
- data/{sunspot_rails/spec → spec}/searchable_spec.rb +0 -0
- data/{sunspot_rails/spec → spec}/server_spec.rb +0 -0
- data/{sunspot_rails/spec → spec}/session_spec.rb +0 -0
- data/{sunspot_rails/spec → spec}/shared_examples/indexed_after_save.rb +0 -0
- data/{sunspot_rails/spec → spec}/shared_examples/not_indexed_after_save.rb +0 -0
- data/{sunspot_rails/spec → spec}/spec_helper.rb +0 -0
- data/{sunspot_rails/spec → spec}/stub_session_proxy_spec.rb +0 -0
- data/{sunspot_rails/sunspot_rails.gemspec → sunspot_rails.gemspec} +0 -0
- metadata +102 -305
- data/.travis.yml +0 -35
- data/README.md +0 -863
- data/ci/travis.sh +0 -67
- data/sunspot/.gitignore +0 -13
- data/sunspot/Gemfile +0 -5
- data/sunspot/History.txt +0 -258
- data/sunspot/Rakefile +0 -13
- data/sunspot/TODO +0 -13
- data/sunspot/lib/light_config.rb +0 -40
- data/sunspot/lib/sunspot.rb +0 -579
- data/sunspot/lib/sunspot/adapters.rb +0 -349
- data/sunspot/lib/sunspot/batcher.rb +0 -62
- data/sunspot/lib/sunspot/class_set.rb +0 -23
- data/sunspot/lib/sunspot/composite_setup.rb +0 -202
- data/sunspot/lib/sunspot/configuration.rb +0 -53
- data/sunspot/lib/sunspot/data_extractor.rb +0 -50
- data/sunspot/lib/sunspot/dsl.rb +0 -5
- data/sunspot/lib/sunspot/dsl/adjustable.rb +0 -47
- data/sunspot/lib/sunspot/dsl/field_group.rb +0 -57
- data/sunspot/lib/sunspot/dsl/field_query.rb +0 -345
- data/sunspot/lib/sunspot/dsl/fields.rb +0 -103
- data/sunspot/lib/sunspot/dsl/fulltext.rb +0 -243
- data/sunspot/lib/sunspot/dsl/function.rb +0 -27
- data/sunspot/lib/sunspot/dsl/functional.rb +0 -44
- data/sunspot/lib/sunspot/dsl/more_like_this_query.rb +0 -56
- data/sunspot/lib/sunspot/dsl/paginatable.rb +0 -32
- data/sunspot/lib/sunspot/dsl/query_facet.rb +0 -36
- data/sunspot/lib/sunspot/dsl/restriction.rb +0 -25
- data/sunspot/lib/sunspot/dsl/restriction_with_near.rb +0 -160
- data/sunspot/lib/sunspot/dsl/scope.rb +0 -214
- data/sunspot/lib/sunspot/dsl/search.rb +0 -30
- data/sunspot/lib/sunspot/dsl/standard_query.rb +0 -122
- data/sunspot/lib/sunspot/field.rb +0 -193
- data/sunspot/lib/sunspot/field_factory.rb +0 -129
- data/sunspot/lib/sunspot/indexer.rb +0 -136
- data/sunspot/lib/sunspot/query.rb +0 -11
- data/sunspot/lib/sunspot/query/abstract_field_facet.rb +0 -55
- data/sunspot/lib/sunspot/query/bbox.rb +0 -15
- data/sunspot/lib/sunspot/query/boost_query.rb +0 -24
- data/sunspot/lib/sunspot/query/common_query.rb +0 -96
- data/sunspot/lib/sunspot/query/composite_fulltext.rb +0 -36
- data/sunspot/lib/sunspot/query/connective.rb +0 -206
- data/sunspot/lib/sunspot/query/date_field_facet.rb +0 -14
- data/sunspot/lib/sunspot/query/dismax.rb +0 -132
- data/sunspot/lib/sunspot/query/field_facet.rb +0 -41
- data/sunspot/lib/sunspot/query/field_group.rb +0 -37
- data/sunspot/lib/sunspot/query/filter.rb +0 -38
- data/sunspot/lib/sunspot/query/function_query.rb +0 -52
- data/sunspot/lib/sunspot/query/geo.rb +0 -53
- data/sunspot/lib/sunspot/query/geofilt.rb +0 -16
- data/sunspot/lib/sunspot/query/highlighting.rb +0 -62
- data/sunspot/lib/sunspot/query/more_like_this.rb +0 -61
- data/sunspot/lib/sunspot/query/more_like_this_query.rb +0 -12
- data/sunspot/lib/sunspot/query/pagination.rb +0 -42
- data/sunspot/lib/sunspot/query/query_facet.rb +0 -53
- data/sunspot/lib/sunspot/query/range_facet.rb +0 -15
- data/sunspot/lib/sunspot/query/restriction.rb +0 -308
- data/sunspot/lib/sunspot/query/scope.rb +0 -9
- data/sunspot/lib/sunspot/query/sort.rb +0 -109
- data/sunspot/lib/sunspot/query/sort_composite.rb +0 -34
- data/sunspot/lib/sunspot/query/standard_query.rb +0 -16
- data/sunspot/lib/sunspot/query/text_field_boost.rb +0 -17
- data/sunspot/lib/sunspot/schema.rb +0 -151
- data/sunspot/lib/sunspot/search.rb +0 -9
- data/sunspot/lib/sunspot/search/abstract_search.rb +0 -286
- data/sunspot/lib/sunspot/search/date_facet.rb +0 -35
- data/sunspot/lib/sunspot/search/facet_row.rb +0 -27
- data/sunspot/lib/sunspot/search/field_facet.rb +0 -88
- data/sunspot/lib/sunspot/search/field_group.rb +0 -70
- data/sunspot/lib/sunspot/search/group.rb +0 -54
- data/sunspot/lib/sunspot/search/highlight.rb +0 -38
- data/sunspot/lib/sunspot/search/hit.rb +0 -150
- data/sunspot/lib/sunspot/search/hit_enumerable.rb +0 -68
- data/sunspot/lib/sunspot/search/more_like_this_search.rb +0 -31
- data/sunspot/lib/sunspot/search/paginated_collection.rb +0 -57
- data/sunspot/lib/sunspot/search/query_facet.rb +0 -67
- data/sunspot/lib/sunspot/search/range_facet.rb +0 -37
- data/sunspot/lib/sunspot/search/standard_search.rb +0 -21
- data/sunspot/lib/sunspot/session.rb +0 -262
- data/sunspot/lib/sunspot/session_proxy.rb +0 -95
- data/sunspot/lib/sunspot/session_proxy/abstract_session_proxy.rb +0 -29
- data/sunspot/lib/sunspot/session_proxy/class_sharding_session_proxy.rb +0 -66
- data/sunspot/lib/sunspot/session_proxy/id_sharding_session_proxy.rb +0 -89
- data/sunspot/lib/sunspot/session_proxy/master_slave_session_proxy.rb +0 -43
- data/sunspot/lib/sunspot/session_proxy/retry_5xx_session_proxy.rb +0 -67
- data/sunspot/lib/sunspot/session_proxy/sharding_session_proxy.rb +0 -222
- data/sunspot/lib/sunspot/session_proxy/silent_fail_session_proxy.rb +0 -42
- data/sunspot/lib/sunspot/session_proxy/thread_local_session_proxy.rb +0 -37
- data/sunspot/lib/sunspot/setup.rb +0 -350
- data/sunspot/lib/sunspot/text_field_setup.rb +0 -29
- data/sunspot/lib/sunspot/type.rb +0 -393
- data/sunspot/lib/sunspot/util.rb +0 -252
- data/sunspot/lib/sunspot/version.rb +0 -3
- data/sunspot/script/console +0 -10
- data/sunspot/spec/api/adapters_spec.rb +0 -68
- data/sunspot/spec/api/batcher_spec.rb +0 -112
- data/sunspot/spec/api/binding_spec.rb +0 -50
- data/sunspot/spec/api/class_set_spec.rb +0 -24
- data/sunspot/spec/api/hit_enumerable_spec.rb +0 -47
- data/sunspot/spec/api/indexer/attributes_spec.rb +0 -149
- data/sunspot/spec/api/indexer/batch_spec.rb +0 -72
- data/sunspot/spec/api/indexer/dynamic_fields_spec.rb +0 -42
- data/sunspot/spec/api/indexer/fixed_fields_spec.rb +0 -57
- data/sunspot/spec/api/indexer/fulltext_spec.rb +0 -43
- data/sunspot/spec/api/indexer/removal_spec.rb +0 -53
- data/sunspot/spec/api/indexer/spec_helper.rb +0 -1
- data/sunspot/spec/api/indexer_spec.rb +0 -14
- data/sunspot/spec/api/query/advanced_manipulation_examples.rb +0 -35
- data/sunspot/spec/api/query/connectives_examples.rb +0 -201
- data/sunspot/spec/api/query/dsl_spec.rb +0 -18
- data/sunspot/spec/api/query/dynamic_fields_examples.rb +0 -165
- data/sunspot/spec/api/query/faceting_examples.rb +0 -497
- data/sunspot/spec/api/query/fulltext_examples.rb +0 -313
- data/sunspot/spec/api/query/function_spec.rb +0 -79
- data/sunspot/spec/api/query/geo_examples.rb +0 -68
- data/sunspot/spec/api/query/group_spec.rb +0 -32
- data/sunspot/spec/api/query/highlighting_examples.rb +0 -245
- data/sunspot/spec/api/query/more_like_this_spec.rb +0 -140
- data/sunspot/spec/api/query/ordering_pagination_examples.rb +0 -116
- data/sunspot/spec/api/query/scope_examples.rb +0 -275
- data/sunspot/spec/api/query/spatial_examples.rb +0 -27
- data/sunspot/spec/api/query/spec_helper.rb +0 -1
- data/sunspot/spec/api/query/standard_spec.rb +0 -29
- data/sunspot/spec/api/query/text_field_scoping_examples.rb +0 -30
- data/sunspot/spec/api/query/types_spec.rb +0 -20
- data/sunspot/spec/api/search/dynamic_fields_spec.rb +0 -33
- data/sunspot/spec/api/search/faceting_spec.rb +0 -360
- data/sunspot/spec/api/search/highlighting_spec.rb +0 -69
- data/sunspot/spec/api/search/hits_spec.rb +0 -147
- data/sunspot/spec/api/search/paginated_collection_spec.rb +0 -36
- data/sunspot/spec/api/search/results_spec.rb +0 -72
- data/sunspot/spec/api/search/search_spec.rb +0 -23
- data/sunspot/spec/api/search/spec_helper.rb +0 -1
- data/sunspot/spec/api/session_proxy/class_sharding_session_proxy_spec.rb +0 -85
- data/sunspot/spec/api/session_proxy/id_sharding_session_proxy_spec.rb +0 -30
- data/sunspot/spec/api/session_proxy/master_slave_session_proxy_spec.rb +0 -41
- data/sunspot/spec/api/session_proxy/retry_5xx_session_proxy_spec.rb +0 -78
- data/sunspot/spec/api/session_proxy/sharding_session_proxy_spec.rb +0 -77
- data/sunspot/spec/api/session_proxy/silent_fail_session_proxy_spec.rb +0 -24
- data/sunspot/spec/api/session_proxy/spec_helper.rb +0 -9
- data/sunspot/spec/api/session_proxy/thread_local_session_proxy_spec.rb +0 -39
- data/sunspot/spec/api/session_spec.rb +0 -232
- data/sunspot/spec/api/spec_helper.rb +0 -3
- data/sunspot/spec/api/sunspot_spec.rb +0 -29
- data/sunspot/spec/ext.rb +0 -11
- data/sunspot/spec/helpers/indexer_helper.rb +0 -17
- data/sunspot/spec/helpers/integration_helper.rb +0 -8
- data/sunspot/spec/helpers/mock_session_helper.rb +0 -13
- data/sunspot/spec/helpers/query_helper.rb +0 -26
- data/sunspot/spec/helpers/search_helper.rb +0 -68
- data/sunspot/spec/integration/dynamic_fields_spec.rb +0 -57
- data/sunspot/spec/integration/faceting_spec.rb +0 -330
- data/sunspot/spec/integration/field_grouping_spec.rb +0 -100
- data/sunspot/spec/integration/geospatial_spec.rb +0 -96
- data/sunspot/spec/integration/highlighting_spec.rb +0 -44
- data/sunspot/spec/integration/indexing_spec.rb +0 -55
- data/sunspot/spec/integration/keyword_search_spec.rb +0 -317
- data/sunspot/spec/integration/local_search_spec.rb +0 -64
- data/sunspot/spec/integration/more_like_this_spec.rb +0 -43
- data/sunspot/spec/integration/scoped_search_spec.rb +0 -386
- data/sunspot/spec/integration/stored_fields_spec.rb +0 -12
- data/sunspot/spec/integration/test_pagination.rb +0 -43
- data/sunspot/spec/integration/unicode_spec.rb +0 -15
- data/sunspot/spec/mocks/adapters.rb +0 -33
- data/sunspot/spec/mocks/blog.rb +0 -3
- data/sunspot/spec/mocks/comment.rb +0 -21
- data/sunspot/spec/mocks/connection.rb +0 -126
- data/sunspot/spec/mocks/mock_adapter.rb +0 -30
- data/sunspot/spec/mocks/mock_class_sharding_session_proxy.rb +0 -24
- data/sunspot/spec/mocks/mock_record.rb +0 -52
- data/sunspot/spec/mocks/mock_sharding_session_proxy.rb +0 -15
- data/sunspot/spec/mocks/photo.rb +0 -11
- data/sunspot/spec/mocks/post.rb +0 -86
- data/sunspot/spec/mocks/super_class.rb +0 -2
- data/sunspot/spec/mocks/user.rb +0 -13
- data/sunspot/spec/spec_helper.rb +0 -40
- data/sunspot/sunspot.gemspec +0 -37
- data/sunspot/tasks/rdoc.rake +0 -27
- data/sunspot/tasks/schema.rake +0 -19
- data/sunspot_rails/.gitignore +0 -7
- data/sunspot_rails/LICENSE +0 -18
- data/sunspot_rails/Rakefile +0 -17
- data/sunspot_rails/dev_tasks/todo.rake +0 -4
- data/sunspot_solr/Gemfile +0 -3
- data/sunspot_solr/README.rdoc +0 -24
- data/sunspot_solr/bin/sunspot-installer +0 -20
- data/sunspot_solr/bin/sunspot-solr +0 -80
- data/sunspot_solr/lib/sunspot/solr/installer.rb +0 -25
- data/sunspot_solr/lib/sunspot/solr/installer/config_installer.rb +0 -46
- data/sunspot_solr/lib/sunspot/solr/installer/task_helper.rb +0 -13
- data/sunspot_solr/lib/sunspot/solr/java.rb +0 -10
- data/sunspot_solr/lib/sunspot/solr/railtie.rb +0 -15
- data/sunspot_solr/lib/sunspot/solr/server.rb +0 -223
- data/sunspot_solr/lib/sunspot/solr/tasks.rb +0 -49
- data/sunspot_solr/lib/sunspot_solr.rb +0 -5
- data/sunspot_solr/solr/README.txt +0 -42
- data/sunspot_solr/solr/etc/jetty.xml +0 -219
- data/sunspot_solr/solr/etc/webdefault.xml +0 -379
- data/sunspot_solr/solr/lib/jetty-6.1.26-patched-JETTY-1340.jar +0 -0
- data/sunspot_solr/solr/lib/jetty-util-6.1.26-patched-JETTY-1340.jar +0 -0
- data/sunspot_solr/solr/lib/jsp-2.1/ant-1.6.5.jar +0 -0
- data/sunspot_solr/solr/lib/jsp-2.1/core-3.1.1.jar +0 -0
- data/sunspot_solr/solr/lib/jsp-2.1/jsp-2.1.jar +0 -0
- data/sunspot_solr/solr/lib/jsp-2.1/jsp-api-2.1.jar +0 -0
- data/sunspot_solr/solr/lib/servlet-api-2.5-20081211.jar +0 -0
- data/sunspot_solr/solr/solr/.gitignore +0 -1
- data/sunspot_solr/solr/solr/README.txt +0 -54
- data/sunspot_solr/solr/solr/conf/admin-extra.html +0 -31
- data/sunspot_solr/solr/solr/conf/elevate.xml +0 -36
- data/sunspot_solr/solr/solr/conf/mapping-ISOLatin1Accent.txt +0 -246
- data/sunspot_solr/solr/solr/conf/protwords.txt +0 -21
- data/sunspot_solr/solr/solr/conf/schema.xml +0 -250
- data/sunspot_solr/solr/solr/conf/scripts.conf +0 -24
- data/sunspot_solr/solr/solr/conf/solrconfig.xml +0 -934
- data/sunspot_solr/solr/solr/conf/spellings.txt +0 -2
- data/sunspot_solr/solr/solr/conf/stopwords.txt +0 -58
- data/sunspot_solr/solr/solr/conf/synonyms.txt +0 -31
- data/sunspot_solr/solr/solr/conf/xslt/example.xsl +0 -132
- data/sunspot_solr/solr/solr/conf/xslt/example_atom.xsl +0 -67
- data/sunspot_solr/solr/solr/conf/xslt/example_rss.xsl +0 -66
- data/sunspot_solr/solr/solr/conf/xslt/luke.xsl +0 -337
- data/sunspot_solr/solr/start.jar +0 -0
- data/sunspot_solr/solr/webapps/solr.war +0 -0
- data/sunspot_solr/spec/server_spec.rb +0 -98
- data/sunspot_solr/spec/spec_helper.rb +0 -18
- data/sunspot_solr/sunspot_solr.gemspec +0 -37
- data/tools/gem_tasks.rb +0 -69
@@ -1,18 +0,0 @@
|
|
1
|
-
require File.expand_path('spec_helper', File.dirname(__FILE__))
|
2
|
-
|
3
|
-
describe 'query DSL', :type => :query do
|
4
|
-
it 'should allow building search using block argument rather than instance_eval' do
|
5
|
-
@blog_id = 1
|
6
|
-
session.search Post do |query|
|
7
|
-
query.with(:blog_id, @blog_id)
|
8
|
-
end
|
9
|
-
connection.should have_last_search_including(:fq, 'blog_id_i:1')
|
10
|
-
end
|
11
|
-
|
12
|
-
it 'should accept a block in the #new_search method' do
|
13
|
-
search = session.new_search(Post) { with(:blog_id, 1) }
|
14
|
-
search.execute
|
15
|
-
connection.should have_last_search_including(:fq, 'blog_id_i:1')
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
@@ -1,165 +0,0 @@
|
|
1
|
-
shared_examples_for "query with dynamic field support" do
|
2
|
-
it 'restricts by dynamic string field with equality restriction' do
|
3
|
-
search do
|
4
|
-
dynamic :custom_string do
|
5
|
-
with :test, 'string'
|
6
|
-
end
|
7
|
-
end
|
8
|
-
connection.should have_last_search_including(:fq, 'custom_string\:test_ss:string')
|
9
|
-
end
|
10
|
-
|
11
|
-
it 'restricts by dynamic integer field with less than restriction' do
|
12
|
-
search do
|
13
|
-
dynamic :custom_integer do
|
14
|
-
with(:test).less_than(1)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
connection.should have_last_search_including(:fq, 'custom_integer\:test_i:{* TO 1}')
|
18
|
-
end
|
19
|
-
|
20
|
-
it 'restricts by dynamic float field with between restriction' do
|
21
|
-
search do
|
22
|
-
dynamic :custom_float do
|
23
|
-
with(:test).between(2.2..3.3)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
connection.should have_last_search_including(:fq, 'custom_float\:test_fm:[2\.2 TO 3\.3]')
|
27
|
-
end
|
28
|
-
|
29
|
-
it 'restricts by dynamic time field with any of restriction' do
|
30
|
-
search do
|
31
|
-
dynamic :custom_time do
|
32
|
-
with(:test).any_of([Time.parse('2009-02-10 14:00:00 UTC'),
|
33
|
-
Time.parse('2009-02-13 18:00:00 UTC')])
|
34
|
-
end
|
35
|
-
end
|
36
|
-
connection.should have_last_search_including(:fq, 'custom_time\:test_d:(2009\-02\-10T14\:00\:00Z OR 2009\-02\-13T18\:00\:00Z)')
|
37
|
-
end
|
38
|
-
|
39
|
-
it 'restricts by dynamic boolean field with equality restriction' do
|
40
|
-
search do
|
41
|
-
dynamic :custom_boolean do
|
42
|
-
with :test, false
|
43
|
-
end
|
44
|
-
end
|
45
|
-
connection.should have_last_search_including(:fq, 'custom_boolean\:test_b:false')
|
46
|
-
end
|
47
|
-
|
48
|
-
it 'negates a dynamic field restriction' do
|
49
|
-
search do
|
50
|
-
dynamic :custom_string do
|
51
|
-
without :test, 'foo'
|
52
|
-
end
|
53
|
-
end
|
54
|
-
connection.should have_last_search_including(:fq, '-custom_string\:test_ss:foo')
|
55
|
-
end
|
56
|
-
|
57
|
-
it 'scopes by a dynamic field inside a disjunction' do
|
58
|
-
search do
|
59
|
-
any_of do
|
60
|
-
dynamic :custom_string do
|
61
|
-
with :test, 'foo'
|
62
|
-
end
|
63
|
-
with :title, 'bar'
|
64
|
-
end
|
65
|
-
end
|
66
|
-
connection.should have_last_search_including(
|
67
|
-
:fq, '(custom_string\:test_ss:foo OR title_ss:bar)'
|
68
|
-
)
|
69
|
-
end
|
70
|
-
|
71
|
-
it 'orders by a dynamic field' do
|
72
|
-
search do
|
73
|
-
dynamic :custom_integer do
|
74
|
-
order_by :test, :desc
|
75
|
-
end
|
76
|
-
end
|
77
|
-
connection.should have_last_search_with(:sort => 'custom_integer:test_i desc')
|
78
|
-
end
|
79
|
-
|
80
|
-
it 'orders by a dynamic field and static field, with given precedence' do
|
81
|
-
search do
|
82
|
-
dynamic :custom_integer do
|
83
|
-
order_by :test, :desc
|
84
|
-
end
|
85
|
-
order_by :sort_title, :asc
|
86
|
-
end
|
87
|
-
connection.should have_last_search_with(:sort => 'custom_integer:test_i desc, sort_title_s asc')
|
88
|
-
end
|
89
|
-
|
90
|
-
it 'raises an UnrecognizedFieldError if an unknown dynamic field is searched by' do
|
91
|
-
lambda do
|
92
|
-
search do
|
93
|
-
dynamic(:bogus) { with :some, 'value' }
|
94
|
-
end
|
95
|
-
end.should raise_error(Sunspot::UnrecognizedFieldError)
|
96
|
-
end
|
97
|
-
|
98
|
-
it 'raises a NoMethodError if pagination is attempted in a dynamic query' do
|
99
|
-
lambda do
|
100
|
-
search do
|
101
|
-
dynamic :custom_string do
|
102
|
-
paginate :page => 3, :per_page => 10
|
103
|
-
end
|
104
|
-
end
|
105
|
-
end.should raise_error(NoMethodError)
|
106
|
-
end
|
107
|
-
|
108
|
-
it 'requests field facet on dynamic field' do
|
109
|
-
search do
|
110
|
-
dynamic :custom_string do
|
111
|
-
facet(:test)
|
112
|
-
end
|
113
|
-
end
|
114
|
-
connection.should have_last_search_including(:"facet.field", 'custom_string:test_ss')
|
115
|
-
end
|
116
|
-
|
117
|
-
it 'requests named field facet on dynamic field' do
|
118
|
-
search do
|
119
|
-
dynamic :custom_string do
|
120
|
-
facet(:test, :name => :bogus)
|
121
|
-
end
|
122
|
-
end
|
123
|
-
connection.should have_last_search_including(:"facet.field", '{!key=bogus}custom_string:test_ss')
|
124
|
-
end
|
125
|
-
|
126
|
-
it 'requests query facet with internal dynamic field' do
|
127
|
-
search do
|
128
|
-
facet :test do
|
129
|
-
row 'foo' do
|
130
|
-
dynamic :custom_string do
|
131
|
-
with :test, 'foo'
|
132
|
-
end
|
133
|
-
end
|
134
|
-
end
|
135
|
-
end
|
136
|
-
connection.should have_last_search_with(
|
137
|
-
:"facet.query" => 'custom_string\:test_ss:foo'
|
138
|
-
)
|
139
|
-
end
|
140
|
-
|
141
|
-
it 'requests query facet with external dynamic field' do
|
142
|
-
search do
|
143
|
-
dynamic :custom_string do
|
144
|
-
facet :test do
|
145
|
-
row 'foo' do
|
146
|
-
with :test, 'foo'
|
147
|
-
end
|
148
|
-
end
|
149
|
-
end
|
150
|
-
end
|
151
|
-
connection.should have_last_search_including(
|
152
|
-
:"facet.query",
|
153
|
-
'custom_string\:test_ss:foo'
|
154
|
-
)
|
155
|
-
end
|
156
|
-
|
157
|
-
it 'allows scoping on dynamic fields common to all types' do
|
158
|
-
search Post, Namespaced::Comment do
|
159
|
-
dynamic :custom_float do
|
160
|
-
with(:test, 1.23)
|
161
|
-
end
|
162
|
-
end
|
163
|
-
connection.should have_last_search_including(:fq, 'custom_float\\:test_fm:1\\.23')
|
164
|
-
end
|
165
|
-
end
|
@@ -1,497 +0,0 @@
|
|
1
|
-
shared_examples_for "facetable query" do
|
2
|
-
describe 'on fields' do
|
3
|
-
it 'does not turn faceting on if no facet requested' do
|
4
|
-
search
|
5
|
-
connection.should_not have_last_search_with('facet')
|
6
|
-
end
|
7
|
-
|
8
|
-
it 'turns faceting on if facet is requested' do
|
9
|
-
search do
|
10
|
-
facet :category_ids
|
11
|
-
end
|
12
|
-
connection.should have_last_search_with(:facet => 'true')
|
13
|
-
end
|
14
|
-
|
15
|
-
it 'requests single field facet' do
|
16
|
-
search do
|
17
|
-
facet :category_ids
|
18
|
-
end
|
19
|
-
connection.should have_last_search_with(:"facet.field" => %w(category_ids_im))
|
20
|
-
end
|
21
|
-
|
22
|
-
it 'requests multiple field facets' do
|
23
|
-
search do
|
24
|
-
facet :category_ids, :blog_id
|
25
|
-
end
|
26
|
-
connection.should have_last_search_with(:"facet.field" => %w(category_ids_im blog_id_i))
|
27
|
-
end
|
28
|
-
|
29
|
-
it 'sets facet sort by count' do
|
30
|
-
search do
|
31
|
-
facet :category_ids, :sort => :count
|
32
|
-
end
|
33
|
-
connection.should have_last_search_with(:"f.category_ids_im.facet.sort" => 'true')
|
34
|
-
end
|
35
|
-
|
36
|
-
it 'sets facet sort by index' do
|
37
|
-
search do
|
38
|
-
facet :category_ids, :sort => :index
|
39
|
-
end
|
40
|
-
connection.should have_last_search_with(:"f.category_ids_im.facet.sort" => 'false')
|
41
|
-
end
|
42
|
-
|
43
|
-
it 'raises ArgumentError if bogus facet sort provided' do
|
44
|
-
lambda do
|
45
|
-
search do
|
46
|
-
facet :category_ids, :sort => :sideways
|
47
|
-
end
|
48
|
-
end.should raise_error(ArgumentError)
|
49
|
-
end
|
50
|
-
|
51
|
-
it 'sets the facet limit' do
|
52
|
-
search do
|
53
|
-
facet :category_ids, :limit => 10
|
54
|
-
end
|
55
|
-
connection.should have_last_search_with(:"f.category_ids_im.facet.limit" => 10)
|
56
|
-
end
|
57
|
-
|
58
|
-
it 'sets the facet offset' do
|
59
|
-
search do
|
60
|
-
facet :category_ids, :offset => 10
|
61
|
-
end
|
62
|
-
connection.should have_last_search_with(:"f.category_ids_im.facet.offset" => 10)
|
63
|
-
end
|
64
|
-
|
65
|
-
it 'sets the facet minimum count' do
|
66
|
-
search do
|
67
|
-
facet :category_ids, :minimum_count => 5
|
68
|
-
end
|
69
|
-
connection.should have_last_search_with(:"f.category_ids_im.facet.mincount" => 5)
|
70
|
-
end
|
71
|
-
|
72
|
-
it 'sets the facet minimum count to zero if zeros are allowed' do
|
73
|
-
search do
|
74
|
-
facet :category_ids, :zeros => true
|
75
|
-
end
|
76
|
-
connection.should have_last_search_with(:"f.category_ids_im.facet.mincount" => 0)
|
77
|
-
end
|
78
|
-
|
79
|
-
it 'sets the facet minimum count to one by default' do
|
80
|
-
search do
|
81
|
-
facet :category_ids
|
82
|
-
end
|
83
|
-
connection.should have_last_search_with(:"f.category_ids_im.facet.mincount" => 1)
|
84
|
-
end
|
85
|
-
|
86
|
-
it 'sets the facet prefix' do
|
87
|
-
search do
|
88
|
-
facet :title, :prefix => 'Test'
|
89
|
-
end
|
90
|
-
connection.should have_last_search_with(:"f.title_ss.facet.prefix" => 'Test')
|
91
|
-
end
|
92
|
-
|
93
|
-
it 'sends a query facet for :any extra' do
|
94
|
-
search do
|
95
|
-
facet :category_ids, :extra => :any
|
96
|
-
end
|
97
|
-
connection.should have_last_search_with(:"facet.query" => "category_ids_im:[* TO *]")
|
98
|
-
end
|
99
|
-
|
100
|
-
it 'sends a query facet for :none extra' do
|
101
|
-
search do
|
102
|
-
facet :category_ids, :extra => :none
|
103
|
-
end
|
104
|
-
connection.should have_last_search_with(:"facet.query" => "-category_ids_im:[* TO *]")
|
105
|
-
end
|
106
|
-
|
107
|
-
it 'raises an ArgumentError if bogus extra is passed' do
|
108
|
-
lambda do
|
109
|
-
search do
|
110
|
-
facet :category_ids, :extra => :bogus
|
111
|
-
end
|
112
|
-
end.should raise_error(ArgumentError)
|
113
|
-
end
|
114
|
-
|
115
|
-
it 'tags and excludes a scope filter in a field facet' do
|
116
|
-
search do
|
117
|
-
blog_filter = with(:blog_id, 1)
|
118
|
-
facet(:blog_id, :exclude => blog_filter)
|
119
|
-
end
|
120
|
-
filter_tag = get_filter_tag('blog_id_i:1')
|
121
|
-
connection.should have_last_search_with(
|
122
|
-
:"facet.field" => %W({!ex=#{filter_tag}}blog_id_i)
|
123
|
-
)
|
124
|
-
end
|
125
|
-
|
126
|
-
it 'tags and excludes a disjunction filter in a field facet' do
|
127
|
-
search do
|
128
|
-
blog_filter = any_of do
|
129
|
-
with(:blog_id, 1)
|
130
|
-
with(:blog_id, 2)
|
131
|
-
end
|
132
|
-
facet(:blog_id, :exclude => blog_filter)
|
133
|
-
end
|
134
|
-
filter_tag = get_filter_tag('(blog_id_i:1 OR blog_id_i:2)')
|
135
|
-
connection.should have_last_search_with(
|
136
|
-
:"facet.field" => %W({!ex=#{filter_tag}}blog_id_i)
|
137
|
-
)
|
138
|
-
end
|
139
|
-
|
140
|
-
it 'tags and excludes multiple filters in a field facet' do
|
141
|
-
search do
|
142
|
-
blog_filter = with(:blog_id, 1)
|
143
|
-
category_filter = with(:category_ids, 2)
|
144
|
-
facet(:blog_id, :exclude => [blog_filter, category_filter])
|
145
|
-
end
|
146
|
-
filter_tags = %w(blog_id_i:1 category_ids_im:2).map do |phrase|
|
147
|
-
get_filter_tag(phrase)
|
148
|
-
end.join(',')
|
149
|
-
connection.should have_last_search_with(
|
150
|
-
:"facet.field" => %W({!ex=#{filter_tags}}blog_id_i)
|
151
|
-
)
|
152
|
-
end
|
153
|
-
|
154
|
-
it 'does not tag a filter if it is not excluded' do
|
155
|
-
search do
|
156
|
-
with(:blog_id, 1)
|
157
|
-
end
|
158
|
-
connection.should have_last_search_including(:fq, "blog_id_i:1")
|
159
|
-
end
|
160
|
-
|
161
|
-
it 'names a field facet' do
|
162
|
-
search do
|
163
|
-
facet(:blog_id, :name => :blog)
|
164
|
-
end
|
165
|
-
connection.should have_last_search_including(:"facet.field", "{!key=blog}blog_id_i")
|
166
|
-
end
|
167
|
-
|
168
|
-
it 'uses the custom field facet name in facet option parameters' do
|
169
|
-
search do
|
170
|
-
facet(:blog_id, :name => :blog, :sort => :count)
|
171
|
-
end
|
172
|
-
connection.should have_last_search_with(:"f.blog.facet.sort" => 'true')
|
173
|
-
end
|
174
|
-
|
175
|
-
it 'raises an ArgumentError if exclusion attempted on a restricted field facet' do
|
176
|
-
lambda do
|
177
|
-
search do
|
178
|
-
blog_filter = with(:blog_id, 1)
|
179
|
-
facet(:blog_id, :only => 1, :exclude => blog_filter)
|
180
|
-
end
|
181
|
-
end.should raise_error(ArgumentError)
|
182
|
-
end
|
183
|
-
|
184
|
-
it 'raises an ArgumentError if exclusion attempted on a facet with :extra' do
|
185
|
-
lambda do
|
186
|
-
search do
|
187
|
-
blog_filter = with(:blog_id, 1)
|
188
|
-
facet(:blog_id, :extra => :all, :exclude => blog_filter)
|
189
|
-
end
|
190
|
-
end.should raise_error(ArgumentError)
|
191
|
-
end
|
192
|
-
end
|
193
|
-
|
194
|
-
describe 'on time ranges' do
|
195
|
-
before :each do
|
196
|
-
@time_range = (Time.parse('2009-06-01 00:00:00 -0400')..
|
197
|
-
Time.parse('2009-07-01 00:00:00 -0400'))
|
198
|
-
end
|
199
|
-
|
200
|
-
it 'does not send date facet parameters if time range is not specified' do
|
201
|
-
search do |query|
|
202
|
-
query.facet :published_at
|
203
|
-
end
|
204
|
-
connection.should_not have_last_search_with(:"facet.date")
|
205
|
-
end
|
206
|
-
|
207
|
-
it 'sets the facet to a date facet if time range is specified' do
|
208
|
-
search do |query|
|
209
|
-
query.facet :published_at, :time_range => @time_range
|
210
|
-
end
|
211
|
-
connection.should have_last_search_with(:"facet.date" => ['published_at_dt'])
|
212
|
-
end
|
213
|
-
|
214
|
-
it 'sets the facet start and end' do
|
215
|
-
search do |query|
|
216
|
-
query.facet :published_at, :time_range => @time_range
|
217
|
-
end
|
218
|
-
connection.should have_last_search_with(
|
219
|
-
:"f.published_at_dt.facet.date.start" => '2009-06-01T04:00:00Z',
|
220
|
-
:"f.published_at_dt.facet.date.end" => '2009-07-01T04:00:00Z'
|
221
|
-
)
|
222
|
-
end
|
223
|
-
|
224
|
-
it 'defaults the time interval to 1 day' do
|
225
|
-
search do |query|
|
226
|
-
query.facet :published_at, :time_range => @time_range
|
227
|
-
end
|
228
|
-
connection.should have_last_search_with(:"f.published_at_dt.facet.date.gap" => "+86400SECONDS")
|
229
|
-
end
|
230
|
-
|
231
|
-
it 'uses custom time interval' do
|
232
|
-
search do |query|
|
233
|
-
query.facet :published_at, :time_range => @time_range, :time_interval => 3600
|
234
|
-
end
|
235
|
-
connection.should have_last_search_with(:"f.published_at_dt.facet.date.gap" => "+3600SECONDS")
|
236
|
-
end
|
237
|
-
|
238
|
-
it 'does not allow date faceting on a non-date field' do
|
239
|
-
lambda do
|
240
|
-
search do |query|
|
241
|
-
query.facet :blog_id, :time_range => @time_range
|
242
|
-
end
|
243
|
-
end.should raise_error(ArgumentError)
|
244
|
-
end
|
245
|
-
end
|
246
|
-
|
247
|
-
describe 'on range facets' do
|
248
|
-
before :each do
|
249
|
-
@range = 2..4
|
250
|
-
end
|
251
|
-
|
252
|
-
it 'does not send range facet parameters if integer range is not specified' do
|
253
|
-
search do |query|
|
254
|
-
query.facet :average_rating
|
255
|
-
end
|
256
|
-
connection.should_not have_last_search_with(:"facet.range")
|
257
|
-
end
|
258
|
-
|
259
|
-
it 'sets the facet to a range facet if the range is specified' do
|
260
|
-
search do |query|
|
261
|
-
query.facet :average_rating, :range => @range
|
262
|
-
end
|
263
|
-
connection.should have_last_search_with(:"facet.range" => ['average_rating_ft'])
|
264
|
-
end
|
265
|
-
|
266
|
-
it 'sets the facet start and end' do
|
267
|
-
search do |query|
|
268
|
-
query.facet :average_rating, :range => @range
|
269
|
-
end
|
270
|
-
connection.should have_last_search_with(
|
271
|
-
:"f.average_rating_ft.facet.range.start" => '2.0',
|
272
|
-
:"f.average_rating_ft.facet.range.end" => '4.0'
|
273
|
-
)
|
274
|
-
end
|
275
|
-
|
276
|
-
it 'defaults the range interval to 10' do
|
277
|
-
search do |query|
|
278
|
-
query.facet :average_rating, :range => @range
|
279
|
-
end
|
280
|
-
connection.should have_last_search_with(:"f.average_rating_ft.facet.range.gap" => "10")
|
281
|
-
end
|
282
|
-
|
283
|
-
it 'uses custom range interval' do
|
284
|
-
search do |query|
|
285
|
-
query.facet :average_rating, :range => @range, :range_interval => 1
|
286
|
-
end
|
287
|
-
connection.should have_last_search_with(:"f.average_rating_ft.facet.range.gap" => "1")
|
288
|
-
end
|
289
|
-
|
290
|
-
it 'sets the include if one is specified' do
|
291
|
-
search do |query|
|
292
|
-
query.facet :average_rating, :range => @range, :include => :edge
|
293
|
-
end
|
294
|
-
connection.should have_last_search_with(:"f.average_rating_ft.facet.range.include" => "edge")
|
295
|
-
end
|
296
|
-
|
297
|
-
it 'does not allow date faceting on a non-continuous field' do
|
298
|
-
lambda do
|
299
|
-
search do |query|
|
300
|
-
query.facet :title, :range => @range
|
301
|
-
end
|
302
|
-
end.should raise_error(ArgumentError)
|
303
|
-
end
|
304
|
-
end
|
305
|
-
|
306
|
-
describe 'using queries' do
|
307
|
-
it 'turns faceting on' do
|
308
|
-
search do
|
309
|
-
facet :foo do
|
310
|
-
row :bar do
|
311
|
-
with(:average_rating).between(4.0..5.0)
|
312
|
-
end
|
313
|
-
end
|
314
|
-
end
|
315
|
-
connection.should have_last_search_with(:facet => 'true')
|
316
|
-
end
|
317
|
-
|
318
|
-
it 'facets by query' do
|
319
|
-
search do
|
320
|
-
facet :foo do
|
321
|
-
row :bar do
|
322
|
-
with(:average_rating).between(4.0..5.0)
|
323
|
-
end
|
324
|
-
end
|
325
|
-
end
|
326
|
-
connection.should have_last_search_with(:"facet.query" => 'average_rating_ft:[4\.0 TO 5\.0]')
|
327
|
-
end
|
328
|
-
|
329
|
-
it 'requests multiple query facets' do
|
330
|
-
search do
|
331
|
-
facet :foo do
|
332
|
-
row :bar do
|
333
|
-
with(:average_rating).between(3.0..4.0)
|
334
|
-
end
|
335
|
-
row :baz do
|
336
|
-
with(:average_rating).between(4.0..5.0)
|
337
|
-
end
|
338
|
-
end
|
339
|
-
end
|
340
|
-
connection.should have_last_search_with(
|
341
|
-
:"facet.query" => [
|
342
|
-
'average_rating_ft:[3\.0 TO 4\.0]',
|
343
|
-
'average_rating_ft:[4\.0 TO 5\.0]'
|
344
|
-
]
|
345
|
-
)
|
346
|
-
end
|
347
|
-
|
348
|
-
it 'requests query facet with multiple conditions' do
|
349
|
-
search do
|
350
|
-
facet :foo do
|
351
|
-
row :bar do
|
352
|
-
with(:category_ids, 1)
|
353
|
-
with(:blog_id, 2)
|
354
|
-
end
|
355
|
-
end
|
356
|
-
end
|
357
|
-
connection.should have_last_search_with(
|
358
|
-
:"facet.query" => '(category_ids_im:1 AND blog_id_i:2)'
|
359
|
-
)
|
360
|
-
end
|
361
|
-
|
362
|
-
it 'requests query facet with disjunction' do
|
363
|
-
search do
|
364
|
-
facet :foo do
|
365
|
-
row :bar do
|
366
|
-
any_of do
|
367
|
-
with(:category_ids, 1)
|
368
|
-
with(:blog_id, 2)
|
369
|
-
end
|
370
|
-
end
|
371
|
-
end
|
372
|
-
end
|
373
|
-
connection.should have_last_search_with(
|
374
|
-
:"facet.query" => '(category_ids_im:1 OR blog_id_i:2)'
|
375
|
-
)
|
376
|
-
end
|
377
|
-
|
378
|
-
it 'builds query facets when passed :only argument to field facet declaration' do
|
379
|
-
search do
|
380
|
-
facet :category_ids, :only => [1, 3]
|
381
|
-
end
|
382
|
-
connection.should have_last_search_with(
|
383
|
-
:"facet.query" => ['category_ids_im:1', 'category_ids_im:3']
|
384
|
-
)
|
385
|
-
end
|
386
|
-
|
387
|
-
it 'converts limited query facet values to the correct type' do
|
388
|
-
search do
|
389
|
-
facet :published_at, :only => [Time.utc(2009, 8, 28, 15, 33), Time.utc(2008,8, 28, 15, 33)]
|
390
|
-
end
|
391
|
-
connection.should have_last_search_with(
|
392
|
-
:"facet.query" => [
|
393
|
-
'published_at_dt:2009\-08\-28T15\:33\:00Z',
|
394
|
-
'published_at_dt:2008\-08\-28T15\:33\:00Z'
|
395
|
-
]
|
396
|
-
)
|
397
|
-
end
|
398
|
-
|
399
|
-
it 'ignores facet query with no rows' do
|
400
|
-
search do
|
401
|
-
facet(:foo) {}
|
402
|
-
end
|
403
|
-
connection.should_not have_last_search_with(:"facet.query")
|
404
|
-
end
|
405
|
-
|
406
|
-
it 'ignores facet query row with no restrictions' do
|
407
|
-
search do
|
408
|
-
facet :foo do
|
409
|
-
row(:bar) do
|
410
|
-
with(:blog_id, 1)
|
411
|
-
end
|
412
|
-
row(:baz) {}
|
413
|
-
end
|
414
|
-
end
|
415
|
-
connection.searches.last[:"facet.query"].should be_a(String)
|
416
|
-
end
|
417
|
-
|
418
|
-
it 'tags and excludes a scope filter in a query facet' do
|
419
|
-
search do
|
420
|
-
blog_filter = with(:blog_id, 1)
|
421
|
-
facet:foo, :exclude => blog_filter do
|
422
|
-
row(:bar) do
|
423
|
-
with(:category_ids, 1)
|
424
|
-
end
|
425
|
-
end
|
426
|
-
end
|
427
|
-
filter_tag = get_filter_tag('blog_id_i:1')
|
428
|
-
connection.should have_last_search_with(
|
429
|
-
:"facet.query" => "{!ex=#{filter_tag}}category_ids_im:1"
|
430
|
-
)
|
431
|
-
end
|
432
|
-
|
433
|
-
it 'tags and excludes a disjunction filter in a query facet' do
|
434
|
-
search do
|
435
|
-
blog_filter = any_of do
|
436
|
-
with(:blog_id, 1)
|
437
|
-
with(:blog_id, 2)
|
438
|
-
end
|
439
|
-
facet:foo, :exclude => blog_filter do
|
440
|
-
row(:bar) do
|
441
|
-
with(:category_ids, 1)
|
442
|
-
end
|
443
|
-
end
|
444
|
-
end
|
445
|
-
filter_tag = get_filter_tag('(blog_id_i:1 OR blog_id_i:2)')
|
446
|
-
connection.should have_last_search_with(
|
447
|
-
:"facet.query" => "{!ex=#{filter_tag}}category_ids_im:1"
|
448
|
-
)
|
449
|
-
end
|
450
|
-
|
451
|
-
it 'tags and excludes multiple filters in a query facet' do
|
452
|
-
search do
|
453
|
-
blog_filter = with(:blog_id, 1)
|
454
|
-
category_filter = with(:category_ids, 2)
|
455
|
-
facet:foo, :exclude => [blog_filter, category_filter] do
|
456
|
-
row(:bar) do
|
457
|
-
with(:category_ids, 1)
|
458
|
-
end
|
459
|
-
end
|
460
|
-
end
|
461
|
-
filter_tags = %w(blog_id_i:1 category_ids_im:2).map do |phrase|
|
462
|
-
get_filter_tag(phrase)
|
463
|
-
end.join(',')
|
464
|
-
connection.should have_last_search_with(
|
465
|
-
:"facet.query" => "{!ex=#{filter_tags}}category_ids_im:1"
|
466
|
-
)
|
467
|
-
end
|
468
|
-
|
469
|
-
|
470
|
-
it 'ignores facet query with only empty rows' do
|
471
|
-
search do
|
472
|
-
facet :foo do
|
473
|
-
row(:bar) {}
|
474
|
-
end
|
475
|
-
end
|
476
|
-
connection.should_not have_last_search_with(:"facet.query")
|
477
|
-
end
|
478
|
-
|
479
|
-
it 'does not allow 0 arguments to facet method with block' do
|
480
|
-
lambda do
|
481
|
-
search do
|
482
|
-
facet do
|
483
|
-
end
|
484
|
-
end
|
485
|
-
end.should raise_error(ArgumentError)
|
486
|
-
end
|
487
|
-
|
488
|
-
it 'does not allow more than 1 argument to facet method with block' do
|
489
|
-
lambda do
|
490
|
-
search do
|
491
|
-
facet :foo, :bar do
|
492
|
-
end
|
493
|
-
end
|
494
|
-
end.should raise_error(ArgumentError)
|
495
|
-
end
|
496
|
-
end
|
497
|
-
end
|