relation_test.rb
2.56 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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
require_relative "test_helper"
class RelationTest < Minitest::Test
def test_works
store_names ["Product A", "Product B"]
relation = Product.search("product").where(name: "Product A").limit(1).offset(0).order(name: :desc)
assert_equal ["Product A"], relation.map(&:name)
end
def test_no_term
store_names ["Product A"]
assert_equal ["Product A"], Product.search.map(&:name)
end
def test_where
store_names ["Product A", "Product B"]
assert_search_relation [], Product.search("*").where(name: "Product A").where(name: "Product B")
end
def test_none
store_names ["Product A", "Product B"]
assert_search_relation [], Product.search("*").none
end
def test_unscoped
store_names ["Red", "Blue"]
# keeps term
assert_search_relation ["Red"], Product.search("red").where(store_id: 1).unscoped
end
def test_unscope
store_names ["Red", "Blue"]
assert_search_relation ["Red"], Product.search("red").where(store_id: 1).unscope(:where)
end
def test_pluck
store_names ["Blue", "Red"]
assert_equal ["Blue", "Red"], Product.order(:name).pluck(:name) if defined?(ActiveRecord)
assert_equal ["Blue", "Red"], Product.search.order(:name).pluck(:name)
end
def test_pluck_many
store_names ["Blue", "Red"]
assert_equal [["Blue", nil], ["Red", nil]], Product.order(:name).pluck(:name, :store_id) if defined?(ActiveRecord)
assert_equal [["Blue", nil], ["Red", nil]], Product.search.order(:name).pluck(:name, :store_id)
end
def test_pluck_empty
Product.search_index.refresh
assert_equal [], Product.search.pluck
store_names ["Blue", "Red"]
assert Product.search.pluck
end
def test_first
store_names ["Blue", "Red"]
assert_kind_of Product, Product.first
assert_kind_of Product, Product.search.first if defined?(ActiveRecord)
assert_equal 1, Product.first(1).size
assert_equal 1, Product.search.first(1).size if defined?(ActiveRecord)
end
def test_take
store_names ["Blue", "Red"]
assert_kind_of Product, Product.take
assert_kind_of Product, Product.search.take if defined?(ActiveRecord)
assert_equal 1, Product.take(1).size
assert_equal 1, Product.search.take(1).size if defined?(ActiveRecord)
end
def test_parameters
skip unless defined?(ActiveRecord)
require "action_controller"
params = ActionController::Parameters.new({store_id: 1})
assert_raises(ActiveModel::ForbiddenAttributesError) do
Product.where(params)
end
assert_raises(ActiveModel::ForbiddenAttributesError) do
Product.search.where(params)
end
end
end