Testing Search Term Exclusion Patterns in Searchkick
This test suite validates the exclude functionality in Searchkick, focusing on search term exclusion patterns and matching behaviors. The tests verify different search scenarios with excluded terms across exact matches, word starts, and field-specific exclusions.
Test Coverage Overview
Implementation Analysis
Technical Details
Best Practices Demonstrated
ankane/searchkick
test/exclude_test.rb
require_relative "test_helper"
class ExcludeTest < Minitest::Test
def test_butter
store_names ["Butter Tub", "Peanut Butter Tub"]
assert_search "butter", ["Butter Tub"], exclude: ["peanut butter"]
end
def test_butter_word_start
store_names ["Butter Tub", "Peanut Butter Tub"]
assert_search "butter", ["Butter Tub"], exclude: ["peanut butter"], match: :word_start
end
def test_butter_exact
store_names ["Butter Tub", "Peanut Butter Tub"]
assert_search "butter", [], exclude: ["peanut butter"], fields: [{name: :exact}]
end
def test_same_exact
store_names ["Butter Tub", "Peanut Butter Tub"]
assert_search "Butter Tub", ["Butter Tub"], exclude: ["Peanut Butter Tub"], fields: [{name: :exact}]
end
def test_egg_word_start
store_names ["eggs", "eggplant"]
assert_search "egg", ["eggs"], exclude: ["eggplant"], match: :word_start
end
def test_string
store_names ["Butter Tub", "Peanut Butter Tub"]
assert_search "butter", ["Butter Tub"], exclude: "peanut butter"
end
def test_match_all
store_names ["Butter"]
assert_search "*", [], exclude: "butter"
end
def test_match_all_fields
store_names ["Butter"]
assert_search "*", [], fields: [:name], exclude: "butter"
assert_search "*", ["Butter"], fields: [:color], exclude: "butter"
end
end