Commit a1466b692b299022ed24894e96291b15b8b2ef9c
1 parent
7727d533
Exists in
relation
Added reorder [skip ci]
Showing
2 changed files
with
19 additions
and
0 deletions
Show diff stats
lib/searchkick/relation.rb
@@ -78,6 +78,15 @@ module Searchkick | @@ -78,6 +78,15 @@ module Searchkick | ||
78 | self | 78 | self |
79 | end | 79 | end |
80 | 80 | ||
81 | + def reorder(*args) | ||
82 | + spawn.reorder!(*args) | ||
83 | + end | ||
84 | + | ||
85 | + def reorder!(*args) | ||
86 | + options[:order] = args | ||
87 | + self | ||
88 | + end | ||
89 | + | ||
81 | def select(*fields, &block) | 90 | def select(*fields, &block) |
82 | if block_given? | 91 | if block_given? |
83 | # TODO better error message | 92 | # TODO better error message |
test/order_test.rb
@@ -38,6 +38,16 @@ class OrderTest < Minitest::Test | @@ -38,6 +38,16 @@ class OrderTest < Minitest::Test | ||
38 | assert_equal expected, Product.search("product").order(:color).order(store_id: :desc).map(&:name) | 38 | assert_equal expected, Product.search("product").order(:color).order(store_id: :desc).map(&:name) |
39 | end | 39 | end |
40 | 40 | ||
41 | + def test_reorder | ||
42 | + store [ | ||
43 | + {name: "Product A", color: "blue", store_id: 1}, | ||
44 | + {name: "Product B", color: "red", store_id: 3}, | ||
45 | + {name: "Product C", color: "red", store_id: 2} | ||
46 | + ] | ||
47 | + expected = ["Product C", "Product B", "Product A"] | ||
48 | + assert_equal expected, Product.search("product").order(:store_id).reorder(name: :desc).map(&:name) | ||
49 | + end | ||
50 | + | ||
41 | def test_order_unmapped_type | 51 | def test_order_unmapped_type |
42 | assert_order "product", [], order: {not_mapped: {unmapped_type: "long"}} | 52 | assert_order "product", [], order: {not_mapped: {unmapped_type: "long"}} |
43 | assert_search_relation [], Product.search("product").order(not_mapped: {unmapped_type: "long"}) | 53 | assert_search_relation [], Product.search("product").order(not_mapped: {unmapped_type: "long"}) |