order_test.rb
1.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
require_relative "test_helper"
class OrderTest < Minitest::Test
def test_order_hash
store_names ["Product A", "Product B", "Product C", "Product D"]
expected = ["Product D", "Product C", "Product B", "Product A"]
assert_order "product", expected, order: {name: :desc}
assert_equal expected, Product.search("product").order(name: :desc).map(&:name)
end
def test_order_string
store_names ["Product A", "Product B", "Product C", "Product D"]
expected = ["Product A", "Product B", "Product C", "Product D"]
assert_order "product", expected, order: "name"
assert_equal expected, Product.search("product").order("name").map(&:name)
end
def test_order_id
skip if cequel?
store_names ["Product A", "Product B"]
product_a = Product.where(name: "Product A").first
product_b = Product.where(name: "Product B").first
expected = [product_a, product_b].sort_by { |r| r.id.to_s }.map(&:name)
assert_order "product", expected, order: {id: :asc}
# TODO fix in query?
# assert_equal expected, Product.search("product").order(id: :asc).map(&:name)
end
def test_order_multiple
store [
{name: "Product A", color: "blue", store_id: 1},
{name: "Product B", color: "red", store_id: 3},
{name: "Product C", color: "red", store_id: 2}
]
expected = ["Product A", "Product B", "Product C"]
assert_order "product", expected, order: {color: :asc, store_id: :desc}
assert_equal expected, Product.search("product").order(:color).order(store_id: :desc).map(&:name)
end
def test_order_unmapped_type
assert_order "product", [], order: {not_mapped: {unmapped_type: "long"}}
assert_search_relation [], Product.search("product").order(not_mapped: {unmapped_type: "long"})
end
def test_order_array
store [{name: "San Francisco", latitude: 37.7833, longitude: -122.4167}]
assert_order "francisco", ["San Francisco"], order: [{_geo_distance: {location: "0,0"}}]
end
end