diff --git a/lib/searchkick/relation.rb b/lib/searchkick/relation.rb index b406f3d..1618253 100644 --- a/lib/searchkick/relation.rb +++ b/lib/searchkick/relation.rb @@ -163,6 +163,15 @@ module Searchkick self end + def operator(value) + spawn.operator!(value) + end + + def operator!(value) + options[:operator] = value + self + end + # same as Active Record def inspect entries = results.first(11).map!(&:inspect) diff --git a/test/sql_test.rb b/test/sql_test.rb index 2e52da4..0adc421 100644 --- a/test/sql_test.rb +++ b/test/sql_test.rb @@ -5,11 +5,14 @@ class SqlTest < Minitest::Test store_names ["Honey"] assert_search "fresh honey", [] assert_search "fresh honey", ["Honey"], operator: "or" + assert_search_relation ["Honey"], Product.search("fresh honey", relation: true).operator(:or) end def test_operator_scoring store_names ["Big Red Circle", "Big Green Circle", "Small Orange Circle"] - assert_order "big red circle", ["Big Red Circle", "Big Green Circle", "Small Orange Circle"], operator: "or" + expected = ["Big Red Circle", "Big Green Circle", "Small Orange Circle"] + assert_order "big red circle", expected, operator: "or" + assert_search_relation expected, Product.search("big red circle", relation: true).operator(:or) end def test_fields_operator @@ -20,7 +23,9 @@ class SqlTest < Minitest::Test {name: "magenta", color: "red blue"}, {name: "green", color: "green"} ] - assert_search "red blue", ["red", "blue", "cyan", "magenta"], operator: "or", fields: ["color"] + expected = ["red", "blue", "cyan", "magenta"] + assert_search "red blue", expected, operator: "or", fields: ["color"] + assert_search_relation expected, Product.search("red blue", relation: true).operator(:or).fields(:color) end def test_fields diff --git a/test/test_helper.rb b/test/test_helper.rb index 82d8161..2fd23fa 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -87,6 +87,10 @@ class Minitest::Test assert_equal expected.sort, klass.search(term, **options).map(&:name).sort end + def assert_search_relation(expected, relation) + assert_equal expected.sort, relation.map(&:name).sort + end + def assert_order(term, expected, options = {}, klass = Product) assert_equal expected, klass.search(term, **options).map(&:name) end -- libgit2 0.21.0