elasticsearch-dsl 0.1.6 → 0.1.10

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 (383) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile +30 -8
  3. data/LICENSE.txt +199 -10
  4. data/README.md +62 -27
  5. data/Rakefile +29 -17
  6. data/elasticsearch-dsl.gemspec +40 -22
  7. data/lib/elasticsearch/dsl/search/aggregation.rb +21 -2
  8. data/lib/elasticsearch/dsl/search/aggregations/avg.rb +18 -1
  9. data/lib/elasticsearch/dsl/search/aggregations/cardinality.rb +18 -1
  10. data/lib/elasticsearch/dsl/search/aggregations/children.rb +18 -1
  11. data/lib/elasticsearch/dsl/search/aggregations/composite.rb +60 -0
  12. data/lib/elasticsearch/dsl/search/aggregations/date_histogram.rb +23 -5
  13. data/lib/elasticsearch/dsl/search/aggregations/date_range.rb +18 -1
  14. data/lib/elasticsearch/dsl/search/aggregations/extended_stats.rb +18 -1
  15. data/lib/elasticsearch/dsl/search/aggregations/filter.rb +18 -1
  16. data/lib/elasticsearch/dsl/search/aggregations/filters.rb +18 -1
  17. data/lib/elasticsearch/dsl/search/aggregations/geo_bounds.rb +18 -1
  18. data/lib/elasticsearch/dsl/search/aggregations/geo_distance.rb +18 -1
  19. data/lib/elasticsearch/dsl/search/aggregations/geohash_grid.rb +18 -1
  20. data/lib/elasticsearch/dsl/search/aggregations/global.rb +17 -0
  21. data/lib/elasticsearch/dsl/search/aggregations/histogram.rb +18 -1
  22. data/lib/elasticsearch/dsl/search/aggregations/ip_range.rb +18 -1
  23. data/lib/elasticsearch/dsl/search/aggregations/max.rb +18 -1
  24. data/lib/elasticsearch/dsl/search/aggregations/min.rb +18 -1
  25. data/lib/elasticsearch/dsl/search/aggregations/missing.rb +17 -0
  26. data/lib/elasticsearch/dsl/search/aggregations/nested.rb +18 -1
  27. data/lib/elasticsearch/dsl/search/aggregations/percentile_ranks.rb +18 -1
  28. data/lib/elasticsearch/dsl/search/aggregations/percentiles.rb +18 -1
  29. data/lib/elasticsearch/dsl/search/aggregations/pipeline/avg_bucket.rb +17 -0
  30. data/lib/elasticsearch/dsl/search/aggregations/pipeline/bucket_script.rb +17 -0
  31. data/lib/elasticsearch/dsl/search/aggregations/pipeline/bucket_selector.rb +17 -0
  32. data/lib/elasticsearch/dsl/search/aggregations/pipeline/bucket_sort.rb +106 -0
  33. data/lib/elasticsearch/dsl/search/aggregations/pipeline/cumulative_sum.rb +17 -0
  34. data/lib/elasticsearch/dsl/search/aggregations/pipeline/derivative.rb +17 -0
  35. data/lib/elasticsearch/dsl/search/aggregations/pipeline/extended_stats_bucket.rb +17 -0
  36. data/lib/elasticsearch/dsl/search/aggregations/pipeline/max_bucket.rb +17 -0
  37. data/lib/elasticsearch/dsl/search/aggregations/pipeline/min_bucket.rb +17 -0
  38. data/lib/elasticsearch/dsl/search/aggregations/pipeline/moving_avg.rb +17 -0
  39. data/lib/elasticsearch/dsl/search/aggregations/pipeline/percentiles_bucket.rb +17 -0
  40. data/lib/elasticsearch/dsl/search/aggregations/pipeline/serial_diff.rb +17 -0
  41. data/lib/elasticsearch/dsl/search/aggregations/pipeline/stats_bucket.rb +17 -0
  42. data/lib/elasticsearch/dsl/search/aggregations/pipeline/sum_bucket.rb +17 -0
  43. data/lib/elasticsearch/dsl/search/aggregations/range.rb +18 -1
  44. data/lib/elasticsearch/dsl/search/aggregations/reverse_nested.rb +18 -1
  45. data/lib/elasticsearch/dsl/search/aggregations/scripted_metric.rb +18 -1
  46. data/lib/elasticsearch/dsl/search/aggregations/significant_terms.rb +18 -1
  47. data/lib/elasticsearch/dsl/search/aggregations/significant_text.rb +62 -0
  48. data/lib/elasticsearch/dsl/search/aggregations/stats.rb +17 -0
  49. data/lib/elasticsearch/dsl/search/aggregations/sum.rb +18 -1
  50. data/lib/elasticsearch/dsl/search/aggregations/terms.rb +17 -0
  51. data/lib/elasticsearch/dsl/search/aggregations/top_hits.rb +18 -1
  52. data/lib/elasticsearch/dsl/search/aggregations/value_count.rb +18 -1
  53. data/lib/elasticsearch/dsl/search/base_aggregation_component.rb +20 -1
  54. data/lib/elasticsearch/dsl/search/base_component.rb +30 -1
  55. data/lib/elasticsearch/dsl/search/base_compound_filter_component.rb +20 -1
  56. data/lib/elasticsearch/dsl/search/collapse.rb +95 -0
  57. data/lib/elasticsearch/dsl/search/filter.rb +21 -2
  58. data/lib/elasticsearch/dsl/search/filters/and.rb +18 -1
  59. data/lib/elasticsearch/dsl/search/filters/bool.rb +23 -4
  60. data/lib/elasticsearch/dsl/search/filters/exists.rb +18 -1
  61. data/lib/elasticsearch/dsl/search/filters/geo_bounding_box.rb +18 -1
  62. data/lib/elasticsearch/dsl/search/filters/geo_distance.rb +18 -1
  63. data/lib/elasticsearch/dsl/search/filters/geo_distance_range.rb +18 -1
  64. data/lib/elasticsearch/dsl/search/filters/geo_polygon.rb +18 -1
  65. data/lib/elasticsearch/dsl/search/filters/geo_shape.rb +18 -1
  66. data/lib/elasticsearch/dsl/search/filters/geohash_cell.rb +18 -1
  67. data/lib/elasticsearch/dsl/search/filters/has_child.rb +18 -1
  68. data/lib/elasticsearch/dsl/search/filters/has_parent.rb +18 -1
  69. data/lib/elasticsearch/dsl/search/filters/ids.rb +18 -1
  70. data/lib/elasticsearch/dsl/search/filters/indices.rb +19 -2
  71. data/lib/elasticsearch/dsl/search/filters/limit.rb +18 -1
  72. data/lib/elasticsearch/dsl/search/filters/match_all.rb +18 -1
  73. data/lib/elasticsearch/dsl/search/filters/missing.rb +18 -1
  74. data/lib/elasticsearch/dsl/search/filters/nested.rb +27 -1
  75. data/lib/elasticsearch/dsl/search/filters/not.rb +21 -2
  76. data/lib/elasticsearch/dsl/search/filters/or.rb +18 -1
  77. data/lib/elasticsearch/dsl/search/filters/prefix.rb +18 -1
  78. data/lib/elasticsearch/dsl/search/filters/query.rb +18 -1
  79. data/lib/elasticsearch/dsl/search/filters/range.rb +18 -1
  80. data/lib/elasticsearch/dsl/search/filters/regexp.rb +18 -1
  81. data/lib/elasticsearch/dsl/search/filters/script.rb +18 -1
  82. data/lib/elasticsearch/dsl/search/filters/term.rb +18 -1
  83. data/lib/elasticsearch/dsl/search/filters/terms.rb +18 -1
  84. data/lib/elasticsearch/dsl/search/filters/type.rb +18 -1
  85. data/lib/elasticsearch/dsl/search/highlight.rb +18 -1
  86. data/lib/elasticsearch/dsl/search/options.rb +20 -2
  87. data/lib/elasticsearch/dsl/search/queries/bool.rb +24 -7
  88. data/lib/elasticsearch/dsl/search/queries/boosting.rb +18 -1
  89. data/lib/elasticsearch/dsl/search/queries/common.rb +18 -1
  90. data/lib/elasticsearch/dsl/search/queries/constant_score.rb +18 -1
  91. data/lib/elasticsearch/dsl/search/queries/dis_max.rb +18 -1
  92. data/lib/elasticsearch/dsl/search/queries/exists.rb +17 -0
  93. data/lib/elasticsearch/dsl/search/queries/filtered.rb +18 -1
  94. data/lib/elasticsearch/dsl/search/queries/function_score.rb +19 -1
  95. data/lib/elasticsearch/dsl/search/queries/fuzzy.rb +18 -1
  96. data/lib/elasticsearch/dsl/search/queries/fuzzy_like_this.rb +18 -1
  97. data/lib/elasticsearch/dsl/search/queries/fuzzy_like_this_field.rb +18 -1
  98. data/lib/elasticsearch/dsl/search/queries/geo_shape.rb +18 -1
  99. data/lib/elasticsearch/dsl/search/queries/has_child.rb +18 -1
  100. data/lib/elasticsearch/dsl/search/queries/has_parent.rb +18 -1
  101. data/lib/elasticsearch/dsl/search/queries/ids.rb +18 -1
  102. data/lib/elasticsearch/dsl/search/queries/indices.rb +18 -1
  103. data/lib/elasticsearch/dsl/search/queries/inner_hits.rb +133 -0
  104. data/lib/elasticsearch/dsl/search/queries/match.rb +18 -1
  105. data/lib/elasticsearch/dsl/search/queries/match_all.rb +18 -1
  106. data/lib/elasticsearch/dsl/search/queries/match_phrase.rb +17 -0
  107. data/lib/elasticsearch/dsl/search/queries/match_phrase_prefix.rb +17 -0
  108. data/lib/elasticsearch/dsl/search/queries/more_like_this.rb +18 -1
  109. data/lib/elasticsearch/dsl/search/queries/multi_match.rb +18 -1
  110. data/lib/elasticsearch/dsl/search/queries/nested.rb +18 -1
  111. data/lib/elasticsearch/dsl/search/queries/prefix.rb +18 -1
  112. data/lib/elasticsearch/dsl/search/queries/query_string.rb +20 -4
  113. data/lib/elasticsearch/dsl/search/queries/range.rb +18 -1
  114. data/lib/elasticsearch/dsl/search/queries/regexp.rb +18 -1
  115. data/lib/elasticsearch/dsl/search/queries/simple_query_string.rb +18 -1
  116. data/lib/elasticsearch/dsl/search/queries/span_first.rb +18 -1
  117. data/lib/elasticsearch/dsl/search/queries/span_multi.rb +18 -1
  118. data/lib/elasticsearch/dsl/search/queries/span_near.rb +18 -1
  119. data/lib/elasticsearch/dsl/search/queries/span_not.rb +18 -1
  120. data/lib/elasticsearch/dsl/search/queries/span_or.rb +18 -1
  121. data/lib/elasticsearch/dsl/search/queries/span_term.rb +18 -1
  122. data/lib/elasticsearch/dsl/search/queries/template.rb +18 -1
  123. data/lib/elasticsearch/dsl/search/queries/term.rb +18 -1
  124. data/lib/elasticsearch/dsl/search/queries/terms.rb +18 -1
  125. data/lib/elasticsearch/dsl/search/queries/top_children.rb +18 -1
  126. data/lib/elasticsearch/dsl/search/queries/wildcard.rb +18 -1
  127. data/lib/elasticsearch/dsl/search/query.rb +21 -2
  128. data/lib/elasticsearch/dsl/search/sort.rb +18 -1
  129. data/lib/elasticsearch/dsl/search/suggest.rb +18 -1
  130. data/lib/elasticsearch/dsl/search.rb +46 -4
  131. data/lib/elasticsearch/dsl/utils.rb +17 -0
  132. data/lib/elasticsearch/dsl/version.rb +18 -1
  133. data/lib/elasticsearch/dsl.rb +19 -1
  134. data/lib/elasticsearch-dsl.rb +17 -0
  135. data/spec/elasticsearch/dsl/search/aggregations/avg_spec.rb +43 -0
  136. data/spec/elasticsearch/dsl/search/aggregations/cardinality_spec.rb +110 -0
  137. data/spec/elasticsearch/dsl/search/aggregations/children_spec.rb +66 -0
  138. data/spec/elasticsearch/dsl/search/aggregations/composite_spec.rb +99 -0
  139. data/spec/elasticsearch/dsl/search/aggregations/date_histogram_spec.rb +182 -0
  140. data/spec/elasticsearch/dsl/search/aggregations/date_range_spec.rb +89 -0
  141. data/spec/elasticsearch/dsl/search/aggregations/extended_stats_spec.rb +43 -0
  142. data/spec/elasticsearch/dsl/search/aggregations/filter_spec.rb +48 -0
  143. data/spec/elasticsearch/dsl/search/aggregations/filters_spec.rb +89 -0
  144. data/spec/elasticsearch/dsl/search/aggregations/geo_bounds_spec.rb +77 -0
  145. data/spec/elasticsearch/dsl/search/aggregations/geo_distance_spec.rb +113 -0
  146. data/spec/elasticsearch/dsl/search/aggregations/geo_grid_spec.rb +100 -0
  147. data/spec/elasticsearch/dsl/search/aggregations/global_spec.rb +62 -0
  148. data/spec/elasticsearch/dsl/search/aggregations/historgram_spec.rb +122 -0
  149. data/spec/elasticsearch/dsl/search/aggregations/ip_range_spec.rb +93 -0
  150. data/spec/elasticsearch/dsl/search/aggregations/max_spec.rb +43 -0
  151. data/spec/elasticsearch/dsl/search/aggregations/min_spec.rb +43 -0
  152. data/spec/elasticsearch/dsl/search/aggregations/missing_spec.rb +81 -0
  153. data/spec/elasticsearch/dsl/search/aggregations/nested_spec.rb +86 -0
  154. data/spec/elasticsearch/dsl/search/aggregations/percentile_ranks_spec.rb +126 -0
  155. data/spec/elasticsearch/dsl/search/aggregations/percentiles_spec.rb +125 -0
  156. data/spec/elasticsearch/dsl/search/aggregations/pipeline/avg_bucket_spec.rb +88 -0
  157. data/spec/elasticsearch/dsl/search/aggregations/pipeline/bucket_script_spec.rb +99 -0
  158. data/spec/elasticsearch/dsl/search/aggregations/pipeline/bucket_selector_spec.rb +88 -0
  159. data/spec/elasticsearch/dsl/search/aggregations/pipeline/bucket_sort_spec.rb +104 -0
  160. data/spec/elasticsearch/dsl/search/aggregations/pipeline/cumulative_sum_spec.rb +77 -0
  161. data/spec/elasticsearch/dsl/search/aggregations/pipeline/derivative_spec.rb +88 -0
  162. data/spec/elasticsearch/dsl/search/aggregations/pipeline/extended_stats_bucket_spec.rb +88 -0
  163. data/spec/elasticsearch/dsl/search/aggregations/pipeline/max_bucket_spec.rb +88 -0
  164. data/spec/elasticsearch/dsl/search/aggregations/pipeline/min_bucket_spec.rb +88 -0
  165. data/spec/elasticsearch/dsl/search/aggregations/pipeline/moving_avg_test_spec.rb +132 -0
  166. data/spec/elasticsearch/dsl/search/aggregations/pipeline/percentiles_bucket_spec.rb +99 -0
  167. data/spec/elasticsearch/dsl/search/aggregations/pipeline/serial_diff_spec.rb +99 -0
  168. data/spec/elasticsearch/dsl/search/aggregations/pipeline/stats_bucket_spec.rb +88 -0
  169. data/spec/elasticsearch/dsl/search/aggregations/pipeline/sum_bucket_spec.rb +88 -0
  170. data/spec/elasticsearch/dsl/search/aggregations/range_spec.rb +119 -0
  171. data/spec/elasticsearch/dsl/search/aggregations/reverse_nested_spec.rb +32 -0
  172. data/spec/elasticsearch/dsl/search/aggregations/scripted_metric_spec.rb +121 -0
  173. data/spec/elasticsearch/dsl/search/aggregations/significant_terms_spec.rb +176 -0
  174. data/spec/elasticsearch/dsl/search/aggregations/significant_text_spec.rb +176 -0
  175. data/spec/elasticsearch/dsl/search/aggregations/stats_spec.rb +56 -0
  176. data/spec/elasticsearch/dsl/search/aggregations/sum_spec.rb +43 -0
  177. data/spec/elasticsearch/dsl/search/aggregations/terms_spec.rb +165 -0
  178. data/spec/elasticsearch/dsl/search/aggregations/top_hits_spec.rb +88 -0
  179. data/spec/elasticsearch/dsl/search/aggregations/value_count_spec.rb +43 -0
  180. data/spec/elasticsearch/dsl/search/collapse_spec.rb +93 -0
  181. data/spec/elasticsearch/dsl/search/filters/and_spec.rb +74 -0
  182. data/spec/elasticsearch/dsl/search/filters/bool_spec.rb +213 -0
  183. data/spec/elasticsearch/dsl/search/filters/exists_spec.rb +66 -0
  184. data/spec/elasticsearch/dsl/search/filters/geo_bounding_box_spec.rb +144 -0
  185. data/spec/elasticsearch/dsl/search/filters/geo_distance_range_spec.rb +103 -0
  186. data/spec/elasticsearch/dsl/search/filters/geo_distance_spec.rb +126 -0
  187. data/spec/elasticsearch/dsl/search/filters/geo_polygon_spec.rb +66 -0
  188. data/spec/elasticsearch/dsl/search/filters/geo_shape_spec.rb +77 -0
  189. data/spec/elasticsearch/dsl/search/filters/geohash_cell_spec.rb +99 -0
  190. data/spec/elasticsearch/dsl/search/filters/has_child_spec.rb +139 -0
  191. data/spec/elasticsearch/dsl/search/filters/has_parent_spec.rb +128 -0
  192. data/spec/elasticsearch/dsl/search/filters/ids_spec.rb +78 -0
  193. data/spec/elasticsearch/dsl/search/filters/indices_spec.rb +109 -0
  194. data/spec/elasticsearch/dsl/search/filters/limit_spec.rb +66 -0
  195. data/spec/elasticsearch/dsl/search/filters/match_all_spec.rb +32 -0
  196. data/spec/elasticsearch/dsl/search/filters/missing_spec.rb +66 -0
  197. data/spec/elasticsearch/dsl/search/filters/nested_spec.rb +91 -0
  198. data/spec/elasticsearch/dsl/search/filters/not_spec.rb +59 -0
  199. data/spec/elasticsearch/dsl/search/filters/or_spec.rb +75 -0
  200. data/spec/elasticsearch/dsl/search/filters/prefix_spec.rb +46 -0
  201. data/spec/elasticsearch/dsl/search/filters/query_spec.rb +59 -0
  202. data/spec/elasticsearch/dsl/search/filters/range_spec.rb +111 -0
  203. data/spec/elasticsearch/dsl/search/filters/regexp_spec.rb +88 -0
  204. data/spec/elasticsearch/dsl/search/filters/script_spec.rb +77 -0
  205. data/spec/elasticsearch/dsl/search/filters/term_spec.rb +57 -0
  206. data/spec/elasticsearch/dsl/search/filters/terms_spec.rb +46 -0
  207. data/spec/elasticsearch/dsl/search/filters/type_spec.rb +66 -0
  208. data/spec/elasticsearch/dsl/search/queries/bool_spec.rb +267 -0
  209. data/spec/elasticsearch/dsl/search/queries/boosting_spec.rb +90 -0
  210. data/spec/elasticsearch/dsl/search/queries/common_spec.rb +132 -0
  211. data/spec/elasticsearch/dsl/search/queries/constant_score_spec.rb +90 -0
  212. data/spec/elasticsearch/dsl/search/queries/dis_max_spec.rb +88 -0
  213. data/spec/elasticsearch/dsl/search/queries/exists_spec.rb +66 -0
  214. data/spec/elasticsearch/dsl/search/queries/filtered_spec.rb +93 -0
  215. data/spec/elasticsearch/dsl/search/queries/function_score_spec.rb +175 -0
  216. data/spec/elasticsearch/dsl/search/queries/fuzzy_like_this_field_spec.rb +132 -0
  217. data/spec/elasticsearch/dsl/search/queries/fuzzy_like_this_spec.rb +134 -0
  218. data/spec/elasticsearch/dsl/search/queries/fuzzy_spec.rb +110 -0
  219. data/spec/elasticsearch/dsl/search/queries/geo_shape_spec.rb +77 -0
  220. data/spec/elasticsearch/dsl/search/queries/has_child_spec.rb +126 -0
  221. data/spec/elasticsearch/dsl/search/queries/has_parent_spec.rb +100 -0
  222. data/spec/elasticsearch/dsl/search/queries/ids_spec.rb +78 -0
  223. data/spec/elasticsearch/dsl/search/queries/indices_spec.rb +89 -0
  224. data/spec/elasticsearch/dsl/search/queries/inner_hits_spec.rb +144 -0
  225. data/spec/elasticsearch/dsl/search/queries/match_all_spec.rb +66 -0
  226. data/spec/elasticsearch/dsl/search/queries/match_phrase_prefix_spec.rb +103 -0
  227. data/spec/elasticsearch/dsl/search/queries/match_phrase_spec.rb +114 -0
  228. data/spec/elasticsearch/dsl/search/queries/match_spec.rb +107 -0
  229. data/spec/elasticsearch/dsl/search/queries/more_like_this_spec.rb +87 -0
  230. data/spec/elasticsearch/dsl/search/queries/multi_match_spec.rb +74 -0
  231. data/spec/elasticsearch/dsl/search/queries/nested_spec.rb +98 -0
  232. data/spec/elasticsearch/dsl/search/queries/prefix_spec.rb +70 -0
  233. data/spec/elasticsearch/dsl/search/queries/query_string_spec.rb +85 -0
  234. data/spec/elasticsearch/dsl/search/queries/range_spec.rb +78 -0
  235. data/spec/elasticsearch/dsl/search/queries/regexp_spec.rb +82 -0
  236. data/spec/elasticsearch/dsl/search/queries/simple_query_string_spec.rb +74 -0
  237. data/spec/elasticsearch/dsl/search/queries/span_first_spec.rb +69 -0
  238. data/spec/elasticsearch/dsl/search/queries/span_multi_spec.rb +69 -0
  239. data/spec/elasticsearch/dsl/search/queries/span_near_spec.rb +72 -0
  240. data/spec/elasticsearch/dsl/search/queries/span_not_spec.rb +73 -0
  241. data/spec/elasticsearch/dsl/search/queries/span_or_spec.rb +69 -0
  242. data/spec/elasticsearch/dsl/search/queries/span_term_spec.rb +46 -0
  243. data/spec/elasticsearch/dsl/search/queries/template_spec.rb +84 -0
  244. data/spec/elasticsearch/dsl/search/queries/term_spec.rb +57 -0
  245. data/spec/elasticsearch/dsl/search/queries/terms_spec.rb +46 -0
  246. data/spec/elasticsearch/dsl/search/queries/top_children_spec.rb +93 -0
  247. data/spec/elasticsearch/dsl/search/queries/wildcard_spec.rb +81 -0
  248. data/spec/elasticsearch/dsl/search_spec.rb +385 -0
  249. data/spec/spec_helper.rb +24 -0
  250. data/test/integration/search_aggregation_children_test.rb +44 -37
  251. data/test/integration/search_aggregation_geo_test.rb +27 -16
  252. data/test/integration/search_aggregation_nested_test.rb +32 -20
  253. data/test/integration/search_aggregations_test.rb +28 -13
  254. data/test/integration/search_filters_test.rb +33 -22
  255. data/test/integration/search_options_test.rb +20 -3
  256. data/test/integration/search_query_test.rb +24 -11
  257. data/test/integration/search_size_from_test.rb +22 -5
  258. data/test/integration/search_sort_test.rb +20 -7
  259. data/test/integration/search_suggest_test.rb +30 -19
  260. data/test/integration/search_test.rb +21 -8
  261. data/test/test_helper.rb +30 -23
  262. data/test/unit/dsl_test.rb +17 -0
  263. data/test/unit/search_aggregation_test.rb +17 -0
  264. data/test/unit/search_base_aggregation_component_test.rb +17 -0
  265. data/test/unit/search_base_component_test.rb +17 -0
  266. data/test/unit/search_filter_test.rb +17 -0
  267. data/test/unit/search_highlight_test.rb +17 -0
  268. data/test/unit/search_options_test.rb +25 -0
  269. data/test/unit/search_query_test.rb +17 -0
  270. data/test/unit/search_size_from_test.rb +17 -0
  271. data/test/unit/search_sort_test.rb +17 -0
  272. data/test/unit/search_suggest_test.rb +17 -0
  273. data/test/unit/search_test.rb +24 -0
  274. data/test/unit/utils_test.rb +17 -0
  275. metadata +278 -270
  276. data/test/unit/aggregations/avg_test.rb +0 -24
  277. data/test/unit/aggregations/cardinality_test.rb +0 -40
  278. data/test/unit/aggregations/children_test.rb +0 -36
  279. data/test/unit/aggregations/date_histogram_test.rb +0 -49
  280. data/test/unit/aggregations/date_range_test.rb +0 -42
  281. data/test/unit/aggregations/extended_stats_test.rb +0 -24
  282. data/test/unit/aggregations/filter_test.rb +0 -31
  283. data/test/unit/aggregations/filters_test.rb +0 -52
  284. data/test/unit/aggregations/geo_bounds_test.rb +0 -37
  285. data/test/unit/aggregations/geo_distance_test.rb +0 -45
  286. data/test/unit/aggregations/geohash_grid_test.rb +0 -40
  287. data/test/unit/aggregations/global_test.rb +0 -38
  288. data/test/unit/aggregations/histogram_test.rb +0 -42
  289. data/test/unit/aggregations/ip_range_test.rb +0 -41
  290. data/test/unit/aggregations/max_test.rb +0 -24
  291. data/test/unit/aggregations/min_test.rb +0 -24
  292. data/test/unit/aggregations/missing_test.rb +0 -39
  293. data/test/unit/aggregations/nested_test.rb +0 -48
  294. data/test/unit/aggregations/percentile_ranks_test.rb +0 -41
  295. data/test/unit/aggregations/percentiles_test.rb +0 -40
  296. data/test/unit/aggregations/pipeline/avg_bucket_test.rb +0 -39
  297. data/test/unit/aggregations/pipeline/bucket_script_test.rb +0 -39
  298. data/test/unit/aggregations/pipeline/bucket_selector_test.rb +0 -38
  299. data/test/unit/aggregations/pipeline/cumulative_sum_test.rb +0 -37
  300. data/test/unit/aggregations/pipeline/derivative_test.rb +0 -39
  301. data/test/unit/aggregations/pipeline/extended_stats_bucket_test.rb +0 -38
  302. data/test/unit/aggregations/pipeline/max_bucket_test.rb +0 -38
  303. data/test/unit/aggregations/pipeline/min_bucket_test.rb +0 -38
  304. data/test/unit/aggregations/pipeline/moving_avg_test.rb +0 -41
  305. data/test/unit/aggregations/pipeline/percentiles_bucket_test.rb +0 -39
  306. data/test/unit/aggregations/pipeline/serial_diff_test.rb +0 -39
  307. data/test/unit/aggregations/pipeline/stats_bucket_test.rb +0 -38
  308. data/test/unit/aggregations/pipeline/sum_bucket_test.rb +0 -38
  309. data/test/unit/aggregations/range_test.rb +0 -59
  310. data/test/unit/aggregations/reverse_nested_test.rb +0 -20
  311. data/test/unit/aggregations/scripted_metric_test.rb +0 -41
  312. data/test/unit/aggregations/significant_terms_test.rb +0 -46
  313. data/test/unit/aggregations/stats_test.rb +0 -32
  314. data/test/unit/aggregations/sum_test.rb +0 -24
  315. data/test/unit/aggregations/terms_test.rb +0 -51
  316. data/test/unit/aggregations/top_hits_test.rb +0 -38
  317. data/test/unit/aggregations/value_count_test.rb +0 -24
  318. data/test/unit/filters/and_test.rb +0 -69
  319. data/test/unit/filters/bool_test.rb +0 -98
  320. data/test/unit/filters/exists_test.rb +0 -36
  321. data/test/unit/filters/geo_bounding_box_test.rb +0 -45
  322. data/test/unit/filters/geo_distance_range_test.rb +0 -51
  323. data/test/unit/filters/geo_distance_test.rb +0 -58
  324. data/test/unit/filters/geo_polygon_test.rb +0 -36
  325. data/test/unit/filters/geo_shape_test.rb +0 -37
  326. data/test/unit/filters/geohash_cell_test.rb +0 -43
  327. data/test/unit/filters/has_child_test.rb +0 -54
  328. data/test/unit/filters/has_parent_test.rb +0 -54
  329. data/test/unit/filters/ids_test.rb +0 -38
  330. data/test/unit/filters/indices_test.rb +0 -52
  331. data/test/unit/filters/limit_test.rb +0 -36
  332. data/test/unit/filters/match_all_test.rb +0 -20
  333. data/test/unit/filters/missing_test.rb +0 -38
  334. data/test/unit/filters/nested_test.rb +0 -40
  335. data/test/unit/filters/not_test.rb +0 -35
  336. data/test/unit/filters/or_test.rb +0 -53
  337. data/test/unit/filters/prefix_test.rb +0 -25
  338. data/test/unit/filters/query_test.rb +0 -33
  339. data/test/unit/filters/range_test.rb +0 -48
  340. data/test/unit/filters/regexp_test.rb +0 -42
  341. data/test/unit/filters/script_test.rb +0 -38
  342. data/test/unit/filters/term_test.rb +0 -27
  343. data/test/unit/filters/terms_test.rb +0 -24
  344. data/test/unit/filters/type_test.rb +0 -36
  345. data/test/unit/queries/bool_test.rb +0 -147
  346. data/test/unit/queries/boosting_test.rb +0 -41
  347. data/test/unit/queries/common_test.rb +0 -42
  348. data/test/unit/queries/constant_score_test.rb +0 -47
  349. data/test/unit/queries/dis_max_test.rb +0 -38
  350. data/test/unit/queries/exists_test.rb +0 -36
  351. data/test/unit/queries/filtered_test.rb +0 -51
  352. data/test/unit/queries/function_score_test.rb +0 -70
  353. data/test/unit/queries/fuzzy_like_this_field_test.rb +0 -42
  354. data/test/unit/queries/fuzzy_like_this_test.rb +0 -44
  355. data/test/unit/queries/fuzzy_test.rb +0 -40
  356. data/test/unit/queries/geo_shape_test.rb +0 -37
  357. data/test/unit/queries/has_child_test.rb +0 -55
  358. data/test/unit/queries/has_parent_test.rb +0 -41
  359. data/test/unit/queries/ids_test.rb +0 -38
  360. data/test/unit/queries/indices_test.rb +0 -39
  361. data/test/unit/queries/match_all_test.rb +0 -36
  362. data/test/unit/queries/match_phrase_prefix_test.rb +0 -62
  363. data/test/unit/queries/match_phrase_test.rb +0 -63
  364. data/test/unit/queries/match_test.rb +0 -65
  365. data/test/unit/queries/more_like_this_test.rb +0 -53
  366. data/test/unit/queries/multi_match_test.rb +0 -42
  367. data/test/unit/queries/nested_test.rb +0 -52
  368. data/test/unit/queries/prefix_test.rb +0 -37
  369. data/test/unit/queries/query_string_test.rb +0 -56
  370. data/test/unit/queries/range_test.rb +0 -41
  371. data/test/unit/queries/regexp_test.rb +0 -43
  372. data/test/unit/queries/simple_query_string_test.rb +0 -41
  373. data/test/unit/queries/span_first_test.rb +0 -36
  374. data/test/unit/queries/span_multi_test.rb +0 -36
  375. data/test/unit/queries/span_near_test.rb +0 -39
  376. data/test/unit/queries/span_not_test.rb +0 -40
  377. data/test/unit/queries/span_or_test.rb +0 -36
  378. data/test/unit/queries/span_term_test.rb +0 -24
  379. data/test/unit/queries/template_test.rb +0 -43
  380. data/test/unit/queries/term_test.rb +0 -27
  381. data/test/unit/queries/terms_test.rb +0 -24
  382. data/test/unit/queries/top_children_test.rb +0 -53
  383. data/test/unit/queries/wildcard_test.rb +0 -43
@@ -0,0 +1,126 @@
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
18
+ require 'spec_helper'
19
+
20
+ describe Elasticsearch::DSL::Search::Queries::HasChild do
21
+
22
+ describe '#to_hash' do
23
+
24
+ let(:search) do
25
+ described_class.new
26
+ end
27
+
28
+ it 'can be converted to a hash' do
29
+ expect(search.to_hash).to eq(has_child: {})
30
+ end
31
+ end
32
+
33
+ context 'when options methods are called' do
34
+
35
+ let(:search) do
36
+ described_class.new
37
+ end
38
+
39
+ describe '#type' do
40
+
41
+ before do
42
+ search.type('bar')
43
+ end
44
+
45
+ it 'applies the option' do
46
+ expect(search.to_hash[:has_child][:type]).to eq('bar')
47
+ end
48
+ end
49
+
50
+ describe '#query' do
51
+
52
+ before do
53
+ search.query('bar')
54
+ end
55
+
56
+ it 'applies the option' do
57
+ expect(search.to_hash[:has_child][:query]).to eq('bar')
58
+ end
59
+ end
60
+
61
+ describe '#score_mode' do
62
+
63
+ before do
64
+ search.score_mode('bar')
65
+ end
66
+
67
+ it 'applies the option' do
68
+ expect(search.to_hash[:has_child][:score_mode]).to eq('bar')
69
+ end
70
+ end
71
+
72
+ describe '#min_children' do
73
+
74
+ before do
75
+ search.min_children('bar')
76
+ end
77
+
78
+ it 'applies the option' do
79
+ expect(search.to_hash[:has_child][:min_children]).to eq('bar')
80
+ end
81
+ end
82
+
83
+ describe '#max_children' do
84
+
85
+ before do
86
+ search.max_children('bar')
87
+ end
88
+
89
+ it 'applies the option' do
90
+ expect(search.to_hash[:has_child][:max_children]).to eq('bar')
91
+ end
92
+ end
93
+
94
+ describe '#inner_hits' do
95
+
96
+ before do
97
+ search.inner_hits(size: 1)
98
+ end
99
+
100
+ it 'applies the option' do
101
+ expect(search.to_hash[:has_child][:inner_hits]).to eq(size: 1)
102
+ end
103
+ end
104
+ end
105
+
106
+ describe '#initialize' do
107
+
108
+ context 'when a block is provided' do
109
+
110
+ let(:search) do
111
+ described_class.new do
112
+ type 'bar'
113
+ query do
114
+ match :foo do
115
+ query 'bar'
116
+ end
117
+ end
118
+ end
119
+ end
120
+
121
+ it 'executes the block' do
122
+ expect(search.to_hash).to eq(has_child: { type: 'bar', query: { match: { foo: { query: 'bar'} } } })
123
+ end
124
+ end
125
+ end
126
+ end
@@ -0,0 +1,100 @@
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
18
+ require 'spec_helper'
19
+
20
+ describe Elasticsearch::DSL::Search::Queries::HasParent do
21
+
22
+ describe '#to_hash' do
23
+
24
+ let(:search) do
25
+ described_class.new
26
+ end
27
+
28
+ it 'can be converted to a hash' do
29
+ expect(search.to_hash).to eq(has_parent: {})
30
+ end
31
+ end
32
+
33
+ context 'when options methods are called' do
34
+
35
+ let(:search) do
36
+ described_class.new
37
+ end
38
+
39
+ describe '#parent_type' do
40
+
41
+ before do
42
+ search.parent_type('bar')
43
+ end
44
+
45
+ it 'applies the option' do
46
+ expect(search.to_hash[:has_parent][:parent_type]).to eq('bar')
47
+ end
48
+ end
49
+
50
+ describe '#query' do
51
+
52
+ before do
53
+ search.query('bar')
54
+ end
55
+
56
+ it 'applies the option' do
57
+ expect(search.to_hash[:has_parent][:query]).to eq('bar')
58
+ end
59
+ end
60
+
61
+ describe '#score_mode' do
62
+
63
+ before do
64
+ search.score_mode('bar')
65
+ end
66
+
67
+ it 'applies the option' do
68
+ expect(search.to_hash[:has_parent][:score_mode]).to eq('bar')
69
+ end
70
+ end
71
+
72
+ describe '#inner_hits' do
73
+
74
+ before do
75
+ search.inner_hits(size: 1)
76
+ end
77
+
78
+ it 'applies the option' do
79
+ expect(search.to_hash[:has_parent][:inner_hits]).to eq(size: 1)
80
+ end
81
+ end
82
+ end
83
+
84
+ describe '#initialize' do
85
+
86
+ context 'when a block is provided' do
87
+
88
+ let(:search) do
89
+ described_class.new do
90
+ parent_type 'bar'
91
+ query match: { foo: 'bar' }
92
+ end
93
+ end
94
+
95
+ it 'executes the block' do
96
+ expect(search.to_hash).to eq(has_parent: { parent_type: 'bar', query: { match: { foo: 'bar' } } })
97
+ end
98
+ end
99
+ end
100
+ end
@@ -0,0 +1,78 @@
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
18
+ require 'spec_helper'
19
+
20
+ describe Elasticsearch::DSL::Search::Queries::Ids do
21
+
22
+ describe '#to_hash' do
23
+
24
+ let(:search) do
25
+ described_class.new
26
+ end
27
+
28
+ it 'can be converted to a hash' do
29
+ expect(search.to_hash).to eq(ids: {})
30
+ end
31
+ end
32
+
33
+ context 'when options methods are called' do
34
+
35
+ let(:search) do
36
+ described_class.new
37
+ end
38
+
39
+ describe '#type' do
40
+
41
+ before do
42
+ search.type('bar')
43
+ end
44
+
45
+ it 'applies the option' do
46
+ expect(search.to_hash[:ids][:type]).to eq('bar')
47
+ end
48
+ end
49
+
50
+ describe '#values' do
51
+
52
+ before do
53
+ search.values('bar')
54
+ end
55
+
56
+ it 'applies the option' do
57
+ expect(search.to_hash[:ids][:values]).to eq('bar')
58
+ end
59
+ end
60
+ end
61
+
62
+ describe '#initialize' do
63
+
64
+ context 'when a block is provided' do
65
+
66
+ let(:search) do
67
+ described_class.new do
68
+ type 'bar'
69
+ values [1, 2, 3]
70
+ end
71
+ end
72
+
73
+ it 'executes the block' do
74
+ expect(search.to_hash).to eq(ids: { type: 'bar', values: [1, 2, 3] })
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,89 @@
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
18
+ require 'spec_helper'
19
+
20
+ describe Elasticsearch::DSL::Search::Queries::Indices do
21
+
22
+ describe '#to_hash' do
23
+
24
+ let(:search) do
25
+ described_class.new
26
+ end
27
+
28
+ it 'can be converted to a hash' do
29
+ expect(search.to_hash).to eq(indices: {})
30
+ end
31
+ end
32
+
33
+ context 'when options methods are called' do
34
+
35
+ let(:search) do
36
+ described_class.new
37
+ end
38
+
39
+ describe '#indices' do
40
+
41
+ before do
42
+ search.indices('bar')
43
+ end
44
+
45
+ it 'applies the option' do
46
+ expect(search.to_hash[:indices][:indices]).to eq('bar')
47
+ end
48
+ end
49
+
50
+ describe '#query' do
51
+
52
+ before do
53
+ search.query('bar')
54
+ end
55
+
56
+ it 'applies the option' do
57
+ expect(search.to_hash[:indices][:query]).to eq('bar')
58
+ end
59
+ end
60
+
61
+ describe '#no_match_query' do
62
+
63
+ before do
64
+ search.no_match_query('bar')
65
+ end
66
+
67
+ it 'applies the option' do
68
+ expect(search.to_hash[:indices][:no_match_query]).to eq('bar')
69
+ end
70
+ end
71
+ end
72
+
73
+ describe '#initialize' do
74
+
75
+ context 'when a block is provided' do
76
+
77
+ let(:search) do
78
+ described_class.new do
79
+ indices 'bar'
80
+ query term: { foo: 'bar' }
81
+ end
82
+ end
83
+
84
+ it 'executes the block' do
85
+ expect(search.to_hash).to eq(indices: { indices: 'bar', query: { term: { foo: 'bar' } } } )
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,144 @@
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
18
+ require 'spec_helper'
19
+
20
+ describe Elasticsearch::DSL::Search::Queries::InnerHits do
21
+
22
+ describe '#to_hash' do
23
+
24
+ let(:search) do
25
+ described_class.new :last_tweet do
26
+ size 10
27
+ from 5
28
+ sort do
29
+ by :date, order: 'desc'
30
+ by :likes, order: 'asc'
31
+ end
32
+ end
33
+ end
34
+
35
+ it 'can be converted to a hash' do
36
+ expect(search.to_hash).to eq(name: :last_tweet,
37
+ size: 10,
38
+ from: 5,
39
+ sort: [{ date: { order: 'desc' } },
40
+ { likes: { order: 'asc' } }])
41
+ end
42
+ end
43
+
44
+ context 'when options methods are called' do
45
+
46
+ let(:search) do
47
+ described_class.new
48
+ end
49
+
50
+ describe '#size' do
51
+
52
+ before do
53
+ search.size(10)
54
+ end
55
+
56
+ it 'applies the option' do
57
+ expect(search.to_hash[:size]).to eq(10)
58
+ end
59
+ end
60
+
61
+ describe '#from' do
62
+
63
+ before do
64
+ search.from(5)
65
+ end
66
+
67
+ it 'applies the option' do
68
+ expect(search.to_hash[:from]).to eq(5)
69
+ end
70
+ end
71
+
72
+ describe '#sort' do
73
+
74
+ before do
75
+ search.sort do
76
+ by :date, order: 'desc'
77
+ by :likes, order: 'asc'
78
+ end
79
+ end
80
+
81
+ it 'applies the sort' do
82
+ expect(search.to_hash).to eq(sort: [{ date: { order: 'desc' } },
83
+ { likes: { order: 'asc' } }])
84
+ end
85
+ end
86
+ end
87
+
88
+ describe '#initialize' do
89
+
90
+ context 'when a block is provided' do
91
+
92
+ context 'when a name is specified' do
93
+
94
+ let(:search) do
95
+ described_class.new(:last_tweet) do
96
+ size 5
97
+ end
98
+ end
99
+
100
+ it 'defines the search clause' do
101
+ expect(search.to_hash).to eq(name: :last_tweet, size: 5)
102
+ end
103
+ end
104
+
105
+ context 'when a name is not specified' do
106
+
107
+ let(:search) do
108
+ described_class.new do
109
+ size 5
110
+ end
111
+ end
112
+
113
+ it 'defines the search clause' do
114
+ expect(search.to_hash).to eq(size: 5)
115
+ end
116
+ end
117
+ end
118
+
119
+ context 'when a block is not provided' do
120
+
121
+ context 'when a name is specified' do
122
+
123
+ let(:search) do
124
+ described_class.new(:last_tweet)
125
+ end
126
+
127
+ it 'defines the search clause' do
128
+ expect(search.to_hash).to eq(name: :last_tweet)
129
+ end
130
+ end
131
+
132
+ context 'when a name is not specified' do
133
+
134
+ let(:search) do
135
+ described_class.new
136
+ end
137
+
138
+ it 'defines the search clause' do
139
+ expect(search.to_hash).to eq({ })
140
+ end
141
+ end
142
+ end
143
+ end
144
+ end
@@ -0,0 +1,66 @@
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
18
+ require 'spec_helper'
19
+
20
+ describe Elasticsearch::DSL::Search::Queries::MatchAll do
21
+
22
+ describe '#to_hash' do
23
+
24
+ let(:search) do
25
+ described_class.new
26
+ end
27
+
28
+ it 'can be converted to a hash' do
29
+ expect(search.to_hash).to eq(match_all: {})
30
+ end
31
+ end
32
+
33
+ context 'when options methods are called' do
34
+
35
+ let(:search) do
36
+ described_class.new
37
+ end
38
+
39
+ describe '#boost' do
40
+
41
+ before do
42
+ search.boost('bar')
43
+ end
44
+
45
+ it 'applies the option' do
46
+ expect(search.to_hash[:match_all][:boost]).to eq('bar')
47
+ end
48
+ end
49
+ end
50
+
51
+ describe '#initialize' do
52
+
53
+ context 'when a block is provided' do
54
+
55
+ let(:search) do
56
+ described_class.new do
57
+ boost 'bar'
58
+ end
59
+ end
60
+
61
+ it 'executes the block' do
62
+ expect(search.to_hash).to eq(match_all: { boost: 'bar' })
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,103 @@
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
18
+ require 'spec_helper'
19
+
20
+ describe Elasticsearch::DSL::Search::Queries::MatchPhrasePrefix do
21
+
22
+ describe '#to_hash' do
23
+
24
+ let(:search) do
25
+ described_class.new
26
+ end
27
+
28
+ it 'can be converted to a hash' do
29
+ expect(search.to_hash).to eq(match_phrase_prefix: {})
30
+ end
31
+ end
32
+
33
+ context 'when options methods are called' do
34
+
35
+ let(:search) do
36
+ described_class.new
37
+ end
38
+
39
+ describe '#query' do
40
+
41
+ before do
42
+ search.query('bar')
43
+ end
44
+
45
+ it 'applies the option' do
46
+ expect(search.to_hash[:match_phrase_prefix][:query]).to eq('bar')
47
+ end
48
+ end
49
+
50
+ describe '#boost' do
51
+
52
+ before do
53
+ search.boost(10)
54
+ end
55
+
56
+ it 'applies the option' do
57
+ expect(search.to_hash[:match_phrase_prefix][:boost]).to eq(10)
58
+ end
59
+ end
60
+
61
+ describe '#max_expansions' do
62
+
63
+ before do
64
+ search.max_expansions(2)
65
+ end
66
+
67
+ it 'applies the option' do
68
+ expect(search.to_hash[:match_phrase_prefix][:max_expansions]).to eq(2)
69
+ end
70
+ end
71
+ end
72
+
73
+ describe '#initialize' do
74
+
75
+ context 'when a hash is provided' do
76
+
77
+ let(:search) do
78
+ described_class.new(message: 'test')
79
+ end
80
+
81
+ it 'sets the value' do
82
+ expect(search.to_hash).to eq(match_phrase_prefix: { message: 'test' })
83
+ end
84
+ end
85
+
86
+ context 'when a block is provided' do
87
+
88
+ let(:search) do
89
+ described_class.new do
90
+ query 'test'
91
+ boost 2
92
+ max_expansions 1
93
+ end
94
+ end
95
+
96
+ it 'executes the block' do
97
+ expect(search.to_hash[:match_phrase_prefix][:query]).to eq('test')
98
+ expect(search.to_hash[:match_phrase_prefix][:boost]).to eq(2)
99
+ expect(search.to_hash[:match_phrase_prefix][:max_expansions]).to eq(1)
100
+ end
101
+ end
102
+ end
103
+ end