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.
Files changed (293) hide show
  1. data/.gitignore +6 -10
  2. data/{sunspot_rails/.rspec → .rspec} +0 -0
  3. data/{sunspot_rails/History.txt → History.txt} +0 -0
  4. data/{sunspot/LICENSE → LICENSE} +0 -0
  5. data/{sunspot_rails/MIT-LICENSE → MIT-LICENSE} +0 -0
  6. data/{sunspot_rails/README.rdoc → README.rdoc} +0 -0
  7. data/Rakefile +12 -32
  8. data/{sunspot_rails/TODO → TODO} +0 -0
  9. data/{sunspot_rails/dev_tasks → dev_tasks}/rdoc.rake +0 -0
  10. data/{sunspot_rails/dev_tasks → dev_tasks}/release.rake +0 -0
  11. data/{sunspot_rails/dev_tasks → dev_tasks}/spec.rake +0 -0
  12. data/{sunspot/tasks → dev_tasks}/todo.rake +0 -0
  13. data/{sunspot_rails/gemfiles → gemfiles}/rails-2.3.14 +0 -0
  14. data/{sunspot_rails/gemfiles → gemfiles}/rails-3.0.15 +0 -0
  15. data/{sunspot_rails/gemfiles → gemfiles}/rails-3.1.6 +0 -0
  16. data/{sunspot_rails/gemfiles → gemfiles}/rails-3.2.6 +0 -0
  17. data/{sunspot_rails/generators → generators}/sunspot/sunspot_generator.rb +0 -0
  18. data/{sunspot_rails/generators → generators}/sunspot/templates/sunspot.yml +0 -0
  19. data/{sunspot_rails/install.rb → install.rb} +0 -0
  20. data/{sunspot_rails/lib → lib}/generators/sunspot_rails.rb +0 -0
  21. data/{sunspot_rails/lib → lib}/generators/sunspot_rails/install/install_generator.rb +0 -0
  22. data/{sunspot_rails/lib → lib}/generators/sunspot_rails/install/templates/config/sunspot.yml +0 -0
  23. data/{sunspot_rails/lib → lib}/sunspot/rails.rb +0 -0
  24. data/{sunspot_rails/lib → lib}/sunspot/rails/adapters.rb +0 -0
  25. data/{sunspot_rails/lib → lib}/sunspot/rails/configuration.rb +0 -0
  26. data/{sunspot_rails/lib → lib}/sunspot/rails/init.rb +0 -0
  27. data/{sunspot_rails/lib → lib}/sunspot/rails/log_subscriber.rb +0 -0
  28. data/{sunspot_rails/lib → lib}/sunspot/rails/railtie.rb +0 -0
  29. data/{sunspot_rails/lib → lib}/sunspot/rails/railties/controller_runtime.rb +0 -0
  30. data/{sunspot_rails/lib → lib}/sunspot/rails/request_lifecycle.rb +0 -0
  31. data/{sunspot_rails/lib → lib}/sunspot/rails/searchable.rb +0 -0
  32. data/{sunspot_rails/lib → lib}/sunspot/rails/server.rb +0 -0
  33. data/{sunspot_rails/lib → lib}/sunspot/rails/solr_instrumentation.rb +0 -0
  34. data/{sunspot_rails/lib → lib}/sunspot/rails/solr_logging.rb +0 -0
  35. data/{sunspot_rails/lib → lib}/sunspot/rails/spec_helper.rb +0 -0
  36. data/{sunspot_rails/lib → lib}/sunspot/rails/stub_session_proxy.rb +0 -0
  37. data/{sunspot_rails/lib → lib}/sunspot/rails/tasks.rb +0 -0
  38. data/{sunspot_rails/lib → lib}/sunspot_rails.rb +0 -0
  39. data/{sunspot_rails/spec → spec}/configuration_spec.rb +0 -0
  40. data/{sunspot_rails/spec → spec}/model_lifecycle_spec.rb +0 -0
  41. data/{sunspot_rails/spec → spec}/model_spec.rb +0 -0
  42. data/{sunspot_rails/spec → spec}/rails_template/app/controllers/application_controller.rb +0 -0
  43. data/{sunspot_rails/spec → spec}/rails_template/app/controllers/posts_controller.rb +0 -0
  44. data/{sunspot_rails/spec → spec}/rails_template/app/models/author.rb +0 -0
  45. data/{sunspot_rails/spec → spec}/rails_template/app/models/blog.rb +0 -0
  46. data/{sunspot_rails/spec → spec}/rails_template/app/models/location.rb +0 -0
  47. data/{sunspot_rails/spec → spec}/rails_template/app/models/photo_post.rb +0 -0
  48. data/{sunspot_rails/spec → spec}/rails_template/app/models/post.rb +0 -0
  49. data/{sunspot_rails/spec → spec}/rails_template/app/models/post_with_auto.rb +0 -0
  50. data/{sunspot_rails/spec → spec}/rails_template/app/models/post_with_default_scope.rb +0 -0
  51. data/{sunspot_rails/spec → spec}/rails_template/config/boot.rb +0 -0
  52. data/{sunspot_rails/spec → spec}/rails_template/config/preinitializer.rb +0 -0
  53. data/{sunspot_rails/spec → spec}/rails_template/config/routes.rb +0 -0
  54. data/{sunspot_rails/spec → spec}/rails_template/config/sunspot.yml +0 -0
  55. data/{sunspot_rails/spec → spec}/rails_template/db/schema.rb +0 -0
  56. data/{sunspot_rails/spec → spec}/request_lifecycle_spec.rb +0 -0
  57. data/{sunspot_rails/spec → spec}/schema.rb +0 -0
  58. data/{sunspot_rails/spec → spec}/searchable_spec.rb +0 -0
  59. data/{sunspot_rails/spec → spec}/server_spec.rb +0 -0
  60. data/{sunspot_rails/spec → spec}/session_spec.rb +0 -0
  61. data/{sunspot_rails/spec → spec}/shared_examples/indexed_after_save.rb +0 -0
  62. data/{sunspot_rails/spec → spec}/shared_examples/not_indexed_after_save.rb +0 -0
  63. data/{sunspot_rails/spec → spec}/spec_helper.rb +0 -0
  64. data/{sunspot_rails/spec → spec}/stub_session_proxy_spec.rb +0 -0
  65. data/{sunspot_rails/sunspot_rails.gemspec → sunspot_rails.gemspec} +0 -0
  66. metadata +102 -305
  67. data/.travis.yml +0 -35
  68. data/README.md +0 -863
  69. data/ci/travis.sh +0 -67
  70. data/sunspot/.gitignore +0 -13
  71. data/sunspot/Gemfile +0 -5
  72. data/sunspot/History.txt +0 -258
  73. data/sunspot/Rakefile +0 -13
  74. data/sunspot/TODO +0 -13
  75. data/sunspot/lib/light_config.rb +0 -40
  76. data/sunspot/lib/sunspot.rb +0 -579
  77. data/sunspot/lib/sunspot/adapters.rb +0 -349
  78. data/sunspot/lib/sunspot/batcher.rb +0 -62
  79. data/sunspot/lib/sunspot/class_set.rb +0 -23
  80. data/sunspot/lib/sunspot/composite_setup.rb +0 -202
  81. data/sunspot/lib/sunspot/configuration.rb +0 -53
  82. data/sunspot/lib/sunspot/data_extractor.rb +0 -50
  83. data/sunspot/lib/sunspot/dsl.rb +0 -5
  84. data/sunspot/lib/sunspot/dsl/adjustable.rb +0 -47
  85. data/sunspot/lib/sunspot/dsl/field_group.rb +0 -57
  86. data/sunspot/lib/sunspot/dsl/field_query.rb +0 -345
  87. data/sunspot/lib/sunspot/dsl/fields.rb +0 -103
  88. data/sunspot/lib/sunspot/dsl/fulltext.rb +0 -243
  89. data/sunspot/lib/sunspot/dsl/function.rb +0 -27
  90. data/sunspot/lib/sunspot/dsl/functional.rb +0 -44
  91. data/sunspot/lib/sunspot/dsl/more_like_this_query.rb +0 -56
  92. data/sunspot/lib/sunspot/dsl/paginatable.rb +0 -32
  93. data/sunspot/lib/sunspot/dsl/query_facet.rb +0 -36
  94. data/sunspot/lib/sunspot/dsl/restriction.rb +0 -25
  95. data/sunspot/lib/sunspot/dsl/restriction_with_near.rb +0 -160
  96. data/sunspot/lib/sunspot/dsl/scope.rb +0 -214
  97. data/sunspot/lib/sunspot/dsl/search.rb +0 -30
  98. data/sunspot/lib/sunspot/dsl/standard_query.rb +0 -122
  99. data/sunspot/lib/sunspot/field.rb +0 -193
  100. data/sunspot/lib/sunspot/field_factory.rb +0 -129
  101. data/sunspot/lib/sunspot/indexer.rb +0 -136
  102. data/sunspot/lib/sunspot/query.rb +0 -11
  103. data/sunspot/lib/sunspot/query/abstract_field_facet.rb +0 -55
  104. data/sunspot/lib/sunspot/query/bbox.rb +0 -15
  105. data/sunspot/lib/sunspot/query/boost_query.rb +0 -24
  106. data/sunspot/lib/sunspot/query/common_query.rb +0 -96
  107. data/sunspot/lib/sunspot/query/composite_fulltext.rb +0 -36
  108. data/sunspot/lib/sunspot/query/connective.rb +0 -206
  109. data/sunspot/lib/sunspot/query/date_field_facet.rb +0 -14
  110. data/sunspot/lib/sunspot/query/dismax.rb +0 -132
  111. data/sunspot/lib/sunspot/query/field_facet.rb +0 -41
  112. data/sunspot/lib/sunspot/query/field_group.rb +0 -37
  113. data/sunspot/lib/sunspot/query/filter.rb +0 -38
  114. data/sunspot/lib/sunspot/query/function_query.rb +0 -52
  115. data/sunspot/lib/sunspot/query/geo.rb +0 -53
  116. data/sunspot/lib/sunspot/query/geofilt.rb +0 -16
  117. data/sunspot/lib/sunspot/query/highlighting.rb +0 -62
  118. data/sunspot/lib/sunspot/query/more_like_this.rb +0 -61
  119. data/sunspot/lib/sunspot/query/more_like_this_query.rb +0 -12
  120. data/sunspot/lib/sunspot/query/pagination.rb +0 -42
  121. data/sunspot/lib/sunspot/query/query_facet.rb +0 -53
  122. data/sunspot/lib/sunspot/query/range_facet.rb +0 -15
  123. data/sunspot/lib/sunspot/query/restriction.rb +0 -308
  124. data/sunspot/lib/sunspot/query/scope.rb +0 -9
  125. data/sunspot/lib/sunspot/query/sort.rb +0 -109
  126. data/sunspot/lib/sunspot/query/sort_composite.rb +0 -34
  127. data/sunspot/lib/sunspot/query/standard_query.rb +0 -16
  128. data/sunspot/lib/sunspot/query/text_field_boost.rb +0 -17
  129. data/sunspot/lib/sunspot/schema.rb +0 -151
  130. data/sunspot/lib/sunspot/search.rb +0 -9
  131. data/sunspot/lib/sunspot/search/abstract_search.rb +0 -286
  132. data/sunspot/lib/sunspot/search/date_facet.rb +0 -35
  133. data/sunspot/lib/sunspot/search/facet_row.rb +0 -27
  134. data/sunspot/lib/sunspot/search/field_facet.rb +0 -88
  135. data/sunspot/lib/sunspot/search/field_group.rb +0 -70
  136. data/sunspot/lib/sunspot/search/group.rb +0 -54
  137. data/sunspot/lib/sunspot/search/highlight.rb +0 -38
  138. data/sunspot/lib/sunspot/search/hit.rb +0 -150
  139. data/sunspot/lib/sunspot/search/hit_enumerable.rb +0 -68
  140. data/sunspot/lib/sunspot/search/more_like_this_search.rb +0 -31
  141. data/sunspot/lib/sunspot/search/paginated_collection.rb +0 -57
  142. data/sunspot/lib/sunspot/search/query_facet.rb +0 -67
  143. data/sunspot/lib/sunspot/search/range_facet.rb +0 -37
  144. data/sunspot/lib/sunspot/search/standard_search.rb +0 -21
  145. data/sunspot/lib/sunspot/session.rb +0 -262
  146. data/sunspot/lib/sunspot/session_proxy.rb +0 -95
  147. data/sunspot/lib/sunspot/session_proxy/abstract_session_proxy.rb +0 -29
  148. data/sunspot/lib/sunspot/session_proxy/class_sharding_session_proxy.rb +0 -66
  149. data/sunspot/lib/sunspot/session_proxy/id_sharding_session_proxy.rb +0 -89
  150. data/sunspot/lib/sunspot/session_proxy/master_slave_session_proxy.rb +0 -43
  151. data/sunspot/lib/sunspot/session_proxy/retry_5xx_session_proxy.rb +0 -67
  152. data/sunspot/lib/sunspot/session_proxy/sharding_session_proxy.rb +0 -222
  153. data/sunspot/lib/sunspot/session_proxy/silent_fail_session_proxy.rb +0 -42
  154. data/sunspot/lib/sunspot/session_proxy/thread_local_session_proxy.rb +0 -37
  155. data/sunspot/lib/sunspot/setup.rb +0 -350
  156. data/sunspot/lib/sunspot/text_field_setup.rb +0 -29
  157. data/sunspot/lib/sunspot/type.rb +0 -393
  158. data/sunspot/lib/sunspot/util.rb +0 -252
  159. data/sunspot/lib/sunspot/version.rb +0 -3
  160. data/sunspot/script/console +0 -10
  161. data/sunspot/spec/api/adapters_spec.rb +0 -68
  162. data/sunspot/spec/api/batcher_spec.rb +0 -112
  163. data/sunspot/spec/api/binding_spec.rb +0 -50
  164. data/sunspot/spec/api/class_set_spec.rb +0 -24
  165. data/sunspot/spec/api/hit_enumerable_spec.rb +0 -47
  166. data/sunspot/spec/api/indexer/attributes_spec.rb +0 -149
  167. data/sunspot/spec/api/indexer/batch_spec.rb +0 -72
  168. data/sunspot/spec/api/indexer/dynamic_fields_spec.rb +0 -42
  169. data/sunspot/spec/api/indexer/fixed_fields_spec.rb +0 -57
  170. data/sunspot/spec/api/indexer/fulltext_spec.rb +0 -43
  171. data/sunspot/spec/api/indexer/removal_spec.rb +0 -53
  172. data/sunspot/spec/api/indexer/spec_helper.rb +0 -1
  173. data/sunspot/spec/api/indexer_spec.rb +0 -14
  174. data/sunspot/spec/api/query/advanced_manipulation_examples.rb +0 -35
  175. data/sunspot/spec/api/query/connectives_examples.rb +0 -201
  176. data/sunspot/spec/api/query/dsl_spec.rb +0 -18
  177. data/sunspot/spec/api/query/dynamic_fields_examples.rb +0 -165
  178. data/sunspot/spec/api/query/faceting_examples.rb +0 -497
  179. data/sunspot/spec/api/query/fulltext_examples.rb +0 -313
  180. data/sunspot/spec/api/query/function_spec.rb +0 -79
  181. data/sunspot/spec/api/query/geo_examples.rb +0 -68
  182. data/sunspot/spec/api/query/group_spec.rb +0 -32
  183. data/sunspot/spec/api/query/highlighting_examples.rb +0 -245
  184. data/sunspot/spec/api/query/more_like_this_spec.rb +0 -140
  185. data/sunspot/spec/api/query/ordering_pagination_examples.rb +0 -116
  186. data/sunspot/spec/api/query/scope_examples.rb +0 -275
  187. data/sunspot/spec/api/query/spatial_examples.rb +0 -27
  188. data/sunspot/spec/api/query/spec_helper.rb +0 -1
  189. data/sunspot/spec/api/query/standard_spec.rb +0 -29
  190. data/sunspot/spec/api/query/text_field_scoping_examples.rb +0 -30
  191. data/sunspot/spec/api/query/types_spec.rb +0 -20
  192. data/sunspot/spec/api/search/dynamic_fields_spec.rb +0 -33
  193. data/sunspot/spec/api/search/faceting_spec.rb +0 -360
  194. data/sunspot/spec/api/search/highlighting_spec.rb +0 -69
  195. data/sunspot/spec/api/search/hits_spec.rb +0 -147
  196. data/sunspot/spec/api/search/paginated_collection_spec.rb +0 -36
  197. data/sunspot/spec/api/search/results_spec.rb +0 -72
  198. data/sunspot/spec/api/search/search_spec.rb +0 -23
  199. data/sunspot/spec/api/search/spec_helper.rb +0 -1
  200. data/sunspot/spec/api/session_proxy/class_sharding_session_proxy_spec.rb +0 -85
  201. data/sunspot/spec/api/session_proxy/id_sharding_session_proxy_spec.rb +0 -30
  202. data/sunspot/spec/api/session_proxy/master_slave_session_proxy_spec.rb +0 -41
  203. data/sunspot/spec/api/session_proxy/retry_5xx_session_proxy_spec.rb +0 -78
  204. data/sunspot/spec/api/session_proxy/sharding_session_proxy_spec.rb +0 -77
  205. data/sunspot/spec/api/session_proxy/silent_fail_session_proxy_spec.rb +0 -24
  206. data/sunspot/spec/api/session_proxy/spec_helper.rb +0 -9
  207. data/sunspot/spec/api/session_proxy/thread_local_session_proxy_spec.rb +0 -39
  208. data/sunspot/spec/api/session_spec.rb +0 -232
  209. data/sunspot/spec/api/spec_helper.rb +0 -3
  210. data/sunspot/spec/api/sunspot_spec.rb +0 -29
  211. data/sunspot/spec/ext.rb +0 -11
  212. data/sunspot/spec/helpers/indexer_helper.rb +0 -17
  213. data/sunspot/spec/helpers/integration_helper.rb +0 -8
  214. data/sunspot/spec/helpers/mock_session_helper.rb +0 -13
  215. data/sunspot/spec/helpers/query_helper.rb +0 -26
  216. data/sunspot/spec/helpers/search_helper.rb +0 -68
  217. data/sunspot/spec/integration/dynamic_fields_spec.rb +0 -57
  218. data/sunspot/spec/integration/faceting_spec.rb +0 -330
  219. data/sunspot/spec/integration/field_grouping_spec.rb +0 -100
  220. data/sunspot/spec/integration/geospatial_spec.rb +0 -96
  221. data/sunspot/spec/integration/highlighting_spec.rb +0 -44
  222. data/sunspot/spec/integration/indexing_spec.rb +0 -55
  223. data/sunspot/spec/integration/keyword_search_spec.rb +0 -317
  224. data/sunspot/spec/integration/local_search_spec.rb +0 -64
  225. data/sunspot/spec/integration/more_like_this_spec.rb +0 -43
  226. data/sunspot/spec/integration/scoped_search_spec.rb +0 -386
  227. data/sunspot/spec/integration/stored_fields_spec.rb +0 -12
  228. data/sunspot/spec/integration/test_pagination.rb +0 -43
  229. data/sunspot/spec/integration/unicode_spec.rb +0 -15
  230. data/sunspot/spec/mocks/adapters.rb +0 -33
  231. data/sunspot/spec/mocks/blog.rb +0 -3
  232. data/sunspot/spec/mocks/comment.rb +0 -21
  233. data/sunspot/spec/mocks/connection.rb +0 -126
  234. data/sunspot/spec/mocks/mock_adapter.rb +0 -30
  235. data/sunspot/spec/mocks/mock_class_sharding_session_proxy.rb +0 -24
  236. data/sunspot/spec/mocks/mock_record.rb +0 -52
  237. data/sunspot/spec/mocks/mock_sharding_session_proxy.rb +0 -15
  238. data/sunspot/spec/mocks/photo.rb +0 -11
  239. data/sunspot/spec/mocks/post.rb +0 -86
  240. data/sunspot/spec/mocks/super_class.rb +0 -2
  241. data/sunspot/spec/mocks/user.rb +0 -13
  242. data/sunspot/spec/spec_helper.rb +0 -40
  243. data/sunspot/sunspot.gemspec +0 -37
  244. data/sunspot/tasks/rdoc.rake +0 -27
  245. data/sunspot/tasks/schema.rake +0 -19
  246. data/sunspot_rails/.gitignore +0 -7
  247. data/sunspot_rails/LICENSE +0 -18
  248. data/sunspot_rails/Rakefile +0 -17
  249. data/sunspot_rails/dev_tasks/todo.rake +0 -4
  250. data/sunspot_solr/Gemfile +0 -3
  251. data/sunspot_solr/README.rdoc +0 -24
  252. data/sunspot_solr/bin/sunspot-installer +0 -20
  253. data/sunspot_solr/bin/sunspot-solr +0 -80
  254. data/sunspot_solr/lib/sunspot/solr/installer.rb +0 -25
  255. data/sunspot_solr/lib/sunspot/solr/installer/config_installer.rb +0 -46
  256. data/sunspot_solr/lib/sunspot/solr/installer/task_helper.rb +0 -13
  257. data/sunspot_solr/lib/sunspot/solr/java.rb +0 -10
  258. data/sunspot_solr/lib/sunspot/solr/railtie.rb +0 -15
  259. data/sunspot_solr/lib/sunspot/solr/server.rb +0 -223
  260. data/sunspot_solr/lib/sunspot/solr/tasks.rb +0 -49
  261. data/sunspot_solr/lib/sunspot_solr.rb +0 -5
  262. data/sunspot_solr/solr/README.txt +0 -42
  263. data/sunspot_solr/solr/etc/jetty.xml +0 -219
  264. data/sunspot_solr/solr/etc/webdefault.xml +0 -379
  265. data/sunspot_solr/solr/lib/jetty-6.1.26-patched-JETTY-1340.jar +0 -0
  266. data/sunspot_solr/solr/lib/jetty-util-6.1.26-patched-JETTY-1340.jar +0 -0
  267. data/sunspot_solr/solr/lib/jsp-2.1/ant-1.6.5.jar +0 -0
  268. data/sunspot_solr/solr/lib/jsp-2.1/core-3.1.1.jar +0 -0
  269. data/sunspot_solr/solr/lib/jsp-2.1/jsp-2.1.jar +0 -0
  270. data/sunspot_solr/solr/lib/jsp-2.1/jsp-api-2.1.jar +0 -0
  271. data/sunspot_solr/solr/lib/servlet-api-2.5-20081211.jar +0 -0
  272. data/sunspot_solr/solr/solr/.gitignore +0 -1
  273. data/sunspot_solr/solr/solr/README.txt +0 -54
  274. data/sunspot_solr/solr/solr/conf/admin-extra.html +0 -31
  275. data/sunspot_solr/solr/solr/conf/elevate.xml +0 -36
  276. data/sunspot_solr/solr/solr/conf/mapping-ISOLatin1Accent.txt +0 -246
  277. data/sunspot_solr/solr/solr/conf/protwords.txt +0 -21
  278. data/sunspot_solr/solr/solr/conf/schema.xml +0 -250
  279. data/sunspot_solr/solr/solr/conf/scripts.conf +0 -24
  280. data/sunspot_solr/solr/solr/conf/solrconfig.xml +0 -934
  281. data/sunspot_solr/solr/solr/conf/spellings.txt +0 -2
  282. data/sunspot_solr/solr/solr/conf/stopwords.txt +0 -58
  283. data/sunspot_solr/solr/solr/conf/synonyms.txt +0 -31
  284. data/sunspot_solr/solr/solr/conf/xslt/example.xsl +0 -132
  285. data/sunspot_solr/solr/solr/conf/xslt/example_atom.xsl +0 -67
  286. data/sunspot_solr/solr/solr/conf/xslt/example_rss.xsl +0 -66
  287. data/sunspot_solr/solr/solr/conf/xslt/luke.xsl +0 -337
  288. data/sunspot_solr/solr/start.jar +0 -0
  289. data/sunspot_solr/solr/webapps/solr.war +0 -0
  290. data/sunspot_solr/spec/server_spec.rb +0 -98
  291. data/sunspot_solr/spec/spec_helper.rb +0 -18
  292. data/sunspot_solr/sunspot_solr.gemspec +0 -37
  293. data/tools/gem_tasks.rb +0 -69
@@ -1,69 +0,0 @@
1
- require File.expand_path('spec_helper', File.dirname(__FILE__))
2
-
3
- describe 'search with highlighting results', :type => :search do
4
- before :each do
5
- @posts = Array.new(2) { Post.new }
6
- stub_results_with_highlighting(
7
- @posts[0],
8
- { 'title_text' => ['one @@@hl@@@two@@@endhl@@@ three'] },
9
- @posts[1],
10
- { 'title_text' => ['three four @@@hl@@@five@@@endhl@@@'],
11
- 'body_text' => ['@@@hl@@@five@@@ six seven', '@@@hl@@@eight@@@endhl@@@ nine @@@hl@@@ten@@@endhl@@@'] }
12
- )
13
- @search = session.search(Post)
14
- end
15
-
16
- it 'returns all highlights' do
17
- @search.hits.last.should have(3).highlights
18
- end
19
-
20
- it 'returns all highlights for a specified field' do
21
- @search.hits.last.should have(2).highlights(:body)
22
- end
23
-
24
- it 'returns first highlight for a specified field' do
25
- @search.hits.first.highlight(:title).format.should == 'one <em>two</em> three'
26
- end
27
-
28
- it 'returns an empty array if a given field does not have a highlight' do
29
- @search.hits.first.highlights(:body).should == []
30
- end
31
-
32
- it 'formats hits with <em> by default' do
33
- highlight = @search.hits.first.highlights(:title).first.formatted
34
- highlight.should == 'one <em>two</em> three'
35
- end
36
-
37
- it 'formats hits with provided block' do
38
- highlight = @search.hits.first.highlights(:title).first.format do |word|
39
- "<i>#{word}</i>"
40
- end
41
- highlight.should == 'one <i>two</i> three'
42
- end
43
-
44
- it 'handles multiple highlighted words' do
45
- highlight = @search.hits.last.highlights(:body).last.format do |word|
46
- "<b>#{word}</b>"
47
- end
48
- highlight.should == '<b>eight</b> nine <b>ten</b>'
49
- end
50
-
51
- private
52
-
53
- def stub_results_with_highlighting(*instances_and_highlights)
54
- docs, highlights = [], []
55
- instances_and_highlights.each_slice(2) do |doc, highlight|
56
- docs << doc
57
- highlights << highlight
58
- end
59
- response = stub_full_results(*docs.map { |doc| { 'instance' => doc }})
60
- highlighting = response['highlighting'] = {}
61
- highlights.each_with_index do |highlight, i|
62
- if highlight
63
- instance = docs[i]
64
- highlighting["#{instance.class.name} #{instance.id}"] = highlight
65
- end
66
- end
67
- response
68
- end
69
- end
@@ -1,147 +0,0 @@
1
- require File.expand_path('spec_helper', File.dirname(__FILE__))
2
-
3
- describe 'hits', :type => :search do
4
- it 'should return hits without loading instances' do
5
- post_1, post_2 = Array.new(2) { Post.new }
6
- stub_results(post_1, post_2)
7
- %w(load load_all).each do |message|
8
- MockAdapter::DataAccessor.should_not_receive(message)
9
- end
10
- session.search(Post).hits.map do |hit|
11
- [hit.class_name, hit.primary_key]
12
- end.should == [['Post', post_1.id.to_s], ['Post', post_2.id.to_s]]
13
- end
14
-
15
- it 'returns search total as attribute of hits' do
16
- stub_results(Post.new, 4)
17
- session.search(Post) do
18
- paginate(:page => 1)
19
- end.hits.total_entries.should == 4
20
- end
21
-
22
- it 'returns search total as attribute of verified hits' do
23
- stub_results(Post.new, 4)
24
- session.search(Post) do
25
- paginate(:page => 1)
26
- end.hits(:verify => true).total_entries.should == 4
27
- end
28
-
29
- it 'should return instance from hit' do
30
- posts = Array.new(2) { Post.new }
31
- stub_results(*posts)
32
- session.search(Post).hits.first.instance.should == posts.first
33
- end
34
-
35
- it 'should return the instance primary key when you use it as a param' do
36
- posts = Array.new(2) { Post.new }
37
- stub_results(*posts)
38
- session.search(Post).hits.first.to_param.should == posts.first.id.to_s
39
- end
40
-
41
- it 'should provide iterator over hits with instances' do
42
- posts = Array.new(2) { Post.new }
43
- stub_results(*posts)
44
- search = session.search(Post)
45
- hits, results = [], []
46
-
47
- search.each_hit_with_result do |hit, result|
48
- hits << hit
49
- results << result
50
- end
51
-
52
- hits.should have(2).hits
53
- results.should have(2).results
54
- end
55
-
56
- it 'should provide an Enumerator over hits with instances' do
57
- posts = Array.new(2) { Post.new }
58
- stub_results(*posts)
59
- search = session.search(Post)
60
- hits, results = [], []
61
- search.each_hit_with_result.with_index do |(hit, result), index|
62
- hit.should be_kind_of(Sunspot::Search::Hit)
63
- result.should be_kind_of(Post)
64
- index.should be_kind_of(Integer)
65
- end
66
- end
67
-
68
- it 'should hydrate all hits when an instance is requested from a hit' do
69
- posts = Array.new(2) { Post.new }
70
- stub_results(*posts)
71
- search = session.search(Post)
72
- search.hits.first.instance
73
- %w(load load_all).each do |message|
74
- MockAdapter::DataAccessor.should_not_receive(message)
75
- end
76
- search.hits.last.instance.should == posts.last
77
- end
78
-
79
- it 'should return only hits whose referenced object exists in the data store if :verify option passed' do
80
- posts = Array.new(2) { Post.new }
81
- posts.last.destroy
82
- stub_results(*posts)
83
- search = session.search(Post)
84
- search.hits(:verify => true).map { |hit| hit.instance }.should == posts[0..0]
85
- end
86
-
87
- it 'should return verified and unverified hits from the same search' do
88
- posts = Array.new(2) { Post.new }
89
- posts.last.destroy
90
- stub_results(*posts)
91
- search = session.search(Post)
92
- search.hits(:verify => true).map { |hit| hit.instance }.should == posts[0..0]
93
- search.hits.map { |hit| hit.instance }.should == [posts.first, nil]
94
- end
95
-
96
- it 'should attach score to hits' do
97
- stub_full_results('instance' => Post.new, 'score' => 1.23)
98
- session.search(Post).hits.first.score.should == 1.23
99
- end
100
-
101
- it 'should return stored field values in hits' do
102
- stub_full_results('instance' => Post.new, 'title_ss' => 'Title')
103
- session.search(Post).hits.first.stored(:title).should == 'Title'
104
- end
105
-
106
- it 'should return stored field values for searches against multiple types' do
107
- stub_full_results('instance' => Post.new, 'title_ss' => 'Title')
108
- session.search(Post, Namespaced::Comment).hits.first.stored(:title).should == 'Title'
109
- end
110
-
111
- it 'should return stored field values for searches against base type when subtype matches' do
112
- class SubclassedPost < Post; end;
113
- stub_full_results('instance' => SubclassedPost.new, 'title_ss' => 'Title')
114
- session.search(Post).hits.first.stored(:title).should == 'Title'
115
- end
116
-
117
- it 'should return stored text fields' do
118
- stub_full_results('instance' => Post.new, 'body_textsv' => 'Body')
119
- session.search(Post, Namespaced::Comment).hits.first.stored(:body).should == 'Body'
120
- end
121
-
122
- it 'should return stored boolean fields' do
123
- stub_full_results('instance' => Post.new, 'featured_bs' => true)
124
- session.search(Post, Namespaced::Comment).hits.first.stored(:featured).should be_true
125
- end
126
-
127
- it 'should return stored boolean fields that evaluate to false' do
128
- stub_full_results('instance' => Post.new, 'featured_bs' => false)
129
- session.search(Post, Namespaced::Comment).hits.first.stored(:featured).should == false
130
- end
131
-
132
- it 'should return stored dynamic fields' do
133
- stub_full_results('instance' => Post.new, 'custom_string:test_ss' => 'Custom')
134
- session.search(Post, Namespaced::Comment).hits.first.stored(:custom_string, :test).should == 'Custom'
135
- end
136
-
137
- it 'should typecast stored field values in hits' do
138
- time = Time.utc(2008, 7, 8, 2, 45)
139
- stub_full_results('instance' => Post.new, 'last_indexed_at_ds' => time.xmlschema)
140
- session.search(Post).hits.first.stored(:last_indexed_at).should == time
141
- end
142
-
143
- it 'should return stored values for multi-valued fields' do
144
- stub_full_results('instance' => User.new, 'role_ids_ims' => %w(1 4 5))
145
- session.search(User).hits.first.stored(:role_ids).should == [1, 4, 5]
146
- end
147
- end
@@ -1,36 +0,0 @@
1
- require File.expand_path('spec_helper', File.dirname(__FILE__))
2
-
3
- describe "PaginatedCollection" do
4
- subject { Sunspot::Search::PaginatedCollection.new [], 1, 10, 20 }
5
-
6
- it { subject.should be_an(Array) }
7
-
8
- context "behaves like a WillPaginate::Collection" do
9
- it { subject.total_entries.should eql(20) }
10
- it { subject.total_pages.should eql(2) }
11
- it { subject.current_page.should eql(1) }
12
- it { subject.per_page.should eql(10) }
13
- it { subject.previous_page.should be_nil }
14
- it { subject.next_page.should eql(2) }
15
- it { subject.out_of_bounds?.should_not be_true }
16
- it { subject.offset.should eql(0) }
17
-
18
- it 'should allow setting total_count' do
19
- subject.total_count = 1
20
- subject.total_count.should eql(1)
21
- end
22
-
23
- it 'should allow setting total_entries' do
24
- subject.total_entries = 1
25
- subject.total_entries.should eql(1)
26
- end
27
- end
28
-
29
- context "behaves like Kaminari" do
30
- it { subject.total_count.should eql(20) }
31
- it { subject.num_pages.should eql(2) }
32
- it { subject.limit_value.should eql(10) }
33
- it { subject.first_page?.should be_true }
34
- it { subject.last_page?.should_not be_true }
35
- end
36
- end
@@ -1,72 +0,0 @@
1
- require File.expand_path('spec_helper', File.dirname(__FILE__))
2
-
3
- describe 'search results', :type => :search do
4
- it 'loads single result' do
5
- post = Post.new
6
- stub_results(post)
7
- session.search(Post).results.should == [post]
8
- end
9
-
10
- it 'loads multiple results in order' do
11
- post_1, post_2 = Post.new, Post.new
12
- stub_results(post_1, post_2)
13
- session.search(Post).results.should == [post_1, post_2]
14
- stub_results(post_2, post_1)
15
- session.search(Post).results.should == [post_2, post_1]
16
- end
17
-
18
- # This is a reduction of a crazy bug I found in production where some hits
19
- # were inexplicably not being populated.
20
- it 'properly loads results of multiple classes that have the same primary key' do
21
- Post.reset!
22
- Namespaced::Comment.reset!
23
- results = [Post.new, Namespaced::Comment.new]
24
- stub_results(*results)
25
- session.search(Post, Namespaced::Comment).results.should == results
26
- end
27
-
28
- it 'gracefully returns empty results when response is nil' do
29
- stub_nil_results
30
- session.search(Post).results.should == []
31
- end
32
-
33
- it 'returns search total as attribute of results' do
34
- stub_results(Post.new, 4)
35
- session.search(Post) do
36
- paginate(:page => 1)
37
- end.results.total_entries.should == 4
38
- end
39
-
40
- it 'returns total' do
41
- stub_results(Post.new, Post.new, 4)
42
- session.search(Post) { paginate(:page => 1) }.total.should == 4
43
- end
44
-
45
- it 'returns query time' do
46
- stub_nil_results
47
- connection.response['responseHeader'] = { 'QTime' => 42 }
48
- session.search(Post) { paginate(:page => 1) }.query_time.should == 42
49
- end
50
-
51
- it 'returns total for nil search' do
52
- stub_nil_results
53
- session.search(Post).total.should == 0
54
- end
55
-
56
- it 'returns available results if some results are not available from data store' do
57
- posts = [Post.new, Post.new]
58
- posts.last.destroy
59
- stub_results(*posts)
60
- session.search(Post).results.should == posts[0..0]
61
- end
62
-
63
- it 'does not attempt to query the data store more than once when results are unavailable' do
64
- posts = [Post.new, Post.new]
65
- posts.each { |post| post.destroy }
66
- stub_results(*posts)
67
- search = session.search(Post) do
68
- data_accessor_for(Post).should_receive(:load_all).once.and_return([])
69
- end
70
- search.results.should == []
71
- end
72
- end
@@ -1,23 +0,0 @@
1
- require File.expand_path('spec_helper', File.dirname(__FILE__))
2
-
3
- describe Sunspot::Search do
4
- it 'should allow access to the data accessor' do
5
- stub_results(posts = Post.new)
6
- search = session.search Post do
7
- data_accessor_for(Post).custom_title = 'custom title'
8
- end
9
- search.results.first.title.should == 'custom title'
10
- end
11
-
12
- it 'should re-execute search' do
13
- post_1, post_2 = Post.new, Post.new
14
-
15
- stub_results(post_1)
16
- search = session.search Post
17
- search.results.should == [post_1]
18
-
19
- stub_results(post_2)
20
- search.execute!
21
- search.results.should == [post_2]
22
- end
23
- end
@@ -1 +0,0 @@
1
- require File.expand_path('spec_helper', File.join(File.dirname(__FILE__), '..'))
@@ -1,85 +0,0 @@
1
- require File.expand_path('spec_helper', File.dirname(__FILE__))
2
-
3
- describe Sunspot::SessionProxy::ClassShardingSessionProxy do
4
- before do
5
- @proxy = MockClassShardingSessionProxy.new(session)
6
- end
7
-
8
- [:index, :index!, :remove, :remove!].each do |method|
9
- it "should delegate #{method} to appropriate shard" do
10
- post = Post.new
11
- photo = Photo.new
12
- @proxy.post_session.should_receive(method).with([post])
13
- @proxy.photo_session.should_receive(method).with([photo])
14
- @proxy.send(method, post)
15
- @proxy.send(method, photo)
16
- end
17
- end
18
-
19
- [:remove_by_id, :remove_by_id!].each do |method|
20
- it "should delegate #{method} to appropriate shard" do
21
- @proxy.post_session.should_receive(method).with(Post, 1)
22
- @proxy.photo_session.should_receive(method).with(Photo, 1)
23
- @proxy.send(method, Post, 1)
24
- @proxy.send(method, Photo, 1)
25
- end
26
- end
27
-
28
- [:remove_all, :remove_all!].each do |method|
29
- it "should delegate #{method} with argument to appropriate shard" do
30
- @proxy.post_session.should_receive(method).with(Post)
31
- @proxy.photo_session.should_receive(method).with(Photo)
32
- @proxy.send(method, Post)
33
- @proxy.send(method, Photo)
34
- end
35
-
36
- it "should delegate #{method} without argument to all shards" do
37
- @proxy.post_session.should_receive(method)
38
- @proxy.photo_session.should_receive(method)
39
- @proxy.send(method)
40
- end
41
- end
42
-
43
- [:commit, :commit_if_dirty, :commit_if_delete_dirty, :optimize].each do |method|
44
- it "should delegate #{method} to all sessions" do
45
- [@proxy.post_session, @proxy.photo_session].each do |session|
46
- session.should_receive(method)
47
- end
48
- @proxy.send(method)
49
- end
50
- end
51
-
52
- it "should not support the :batch method" do
53
- lambda { @proxy.batch }.should raise_error(Sunspot::SessionProxy::NotSupportedError)
54
- end
55
-
56
- it "should delegate new_search to search session, adding in shards parameter" do
57
- search = @proxy.new_search(Post)
58
- search.query[:shards].should ==
59
- 'http://photos.solr.local/solr,http://posts.solr.local/solr'
60
- end
61
-
62
- it "should delegate search to search session, adding in shards parameter" do
63
- @proxy.search(Post)
64
- connection.should have_last_search_with(
65
- :shards => 'http://photos.solr.local/solr,http://posts.solr.local/solr'
66
- )
67
- end
68
-
69
- [:dirty, :delete_dirty].each do |method|
70
- it "should be dirty if any of the sessions are dirty" do
71
- @proxy.post_session.stub!(:"#{method}?").and_return(true)
72
- @proxy.should send("be_#{method}")
73
- end
74
-
75
- it "should not be dirty if none of the sessions are dirty" do
76
- @proxy.should_not send("be_#{method}")
77
- end
78
- end
79
-
80
- it "should raise a NotSupportedError when :config is called" do
81
- lambda { @proxy.config }.should raise_error(Sunspot::SessionProxy::NotSupportedError)
82
- end
83
-
84
- it_should_behave_like 'session proxy'
85
- end
@@ -1,30 +0,0 @@
1
- require File.expand_path('spec_helper', File.dirname(__FILE__))
2
-
3
- describe Sunspot::SessionProxy::ShardingSessionProxy do
4
- before do
5
- search_session = Sunspot::Session.new
6
- @sessions = Array.new(2) { Sunspot::Session.new }
7
- @proxy = Sunspot::SessionProxy::IdShardingSessionProxy.new(search_session, @sessions)
8
- end
9
-
10
- [:index, :index!, :remove, :remove!].each do |method|
11
- it "should delegate #{method} to appropriate shard" do
12
- posts = [Post.new(:id => 2), Post.new(:id => 1)]
13
- @proxy.sessions[0].should_receive(method).with([posts[0]])
14
- @proxy.sessions[1].should_receive(method).with([posts[1]])
15
- @proxy.send(method, posts[0])
16
- @proxy.send(method, posts[1])
17
- end
18
- end
19
-
20
- [:remove_by_id, :remove_by_id!].each do |method|
21
- it "should delegate #{method} to appropriate session" do
22
- @proxy.sessions[0].should_receive(method).with(Post, 2)
23
- @proxy.sessions[1].should_receive(method).with(Post, 1)
24
- @proxy.send(method, Post, 1)
25
- @proxy.send(method, Post, 2)
26
- end
27
- end
28
-
29
- it_should_behave_like 'session proxy'
30
- end