Commit b2e5050cfa3ebc68e6051e7058cd65469a7532af

Authored by Andrew Kane
1 parent cc6cde78

Test operations

lib/searchkick/relation.rb
@@ -163,6 +163,15 @@ module Searchkick @@ -163,6 +163,15 @@ module Searchkick
163 self 163 self
164 end 164 end
165 165
  166 + def operator(value)
  167 + spawn.operator!(value)
  168 + end
  169 +
  170 + def operator!(value)
  171 + options[:operator] = value
  172 + self
  173 + end
  174 +
166 # same as Active Record 175 # same as Active Record
167 def inspect 176 def inspect
168 entries = results.first(11).map!(&:inspect) 177 entries = results.first(11).map!(&:inspect)
test/sql_test.rb
@@ -5,11 +5,14 @@ class SqlTest < Minitest::Test @@ -5,11 +5,14 @@ class SqlTest < Minitest::Test
5 store_names ["Honey"] 5 store_names ["Honey"]
6 assert_search "fresh honey", [] 6 assert_search "fresh honey", []
7 assert_search "fresh honey", ["Honey"], operator: "or" 7 assert_search "fresh honey", ["Honey"], operator: "or"
  8 + assert_search_relation ["Honey"], Product.search("fresh honey", relation: true).operator(:or)
8 end 9 end
9 10
10 def test_operator_scoring 11 def test_operator_scoring
11 store_names ["Big Red Circle", "Big Green Circle", "Small Orange Circle"] 12 store_names ["Big Red Circle", "Big Green Circle", "Small Orange Circle"]
12 - assert_order "big red circle", ["Big Red Circle", "Big Green Circle", "Small Orange Circle"], operator: "or" 13 + expected = ["Big Red Circle", "Big Green Circle", "Small Orange Circle"]
  14 + assert_order "big red circle", expected, operator: "or"
  15 + assert_search_relation expected, Product.search("big red circle", relation: true).operator(:or)
13 end 16 end
14 17
15 def test_fields_operator 18 def test_fields_operator
@@ -20,7 +23,9 @@ class SqlTest < Minitest::Test @@ -20,7 +23,9 @@ class SqlTest < Minitest::Test
20 {name: "magenta", color: "red blue"}, 23 {name: "magenta", color: "red blue"},
21 {name: "green", color: "green"} 24 {name: "green", color: "green"}
22 ] 25 ]
23 - assert_search "red blue", ["red", "blue", "cyan", "magenta"], operator: "or", fields: ["color"] 26 + expected = ["red", "blue", "cyan", "magenta"]
  27 + assert_search "red blue", expected, operator: "or", fields: ["color"]
  28 + assert_search_relation expected, Product.search("red blue", relation: true).operator(:or).fields(:color)
24 end 29 end
25 30
26 def test_fields 31 def test_fields
test/test_helper.rb
@@ -87,6 +87,10 @@ class Minitest::Test @@ -87,6 +87,10 @@ class Minitest::Test
87 assert_equal expected.sort, klass.search(term, **options).map(&:name).sort 87 assert_equal expected.sort, klass.search(term, **options).map(&:name).sort
88 end 88 end
89 89
  90 + def assert_search_relation(expected, relation)
  91 + assert_equal expected.sort, relation.map(&:name).sort
  92 + end
  93 +
90 def assert_order(term, expected, options = {}, klass = Product) 94 def assert_order(term, expected, options = {}, klass = Product)
91 assert_equal expected, klass.search(term, **options).map(&:name) 95 assert_equal expected, klass.search(term, **options).map(&:name)
92 end 96 end