From c59ad3e5783beb9d1e88a68af4c0ea4146a72929 Mon Sep 17 00:00:00 2001 From: david Date: Fri, 23 Dec 2016 17:48:14 +0100 Subject: [PATCH] Added test of the highlight problem when a stemming dictionary is configured. --- spec/lib/pg_search/features/tsearch_spec.rb | 27 +++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/spec/lib/pg_search/features/tsearch_spec.rb b/spec/lib/pg_search/features/tsearch_spec.rb index 0948a930..f1dc1c06 100644 --- a/spec/lib/pg_search/features/tsearch_spec.rb +++ b/spec/lib/pg_search/features/tsearch_spec.rb @@ -122,4 +122,31 @@ end end end + + describe "#highlight" do + with_model :Model do + table do |t| + t.string :name + t.text :content + end + end + + context "when options[:dictionary] is passed" do + it 'uses the provided dictionary' do + query = "query" + columns = [ + PgSearch::Configuration::Column.new(:name, nil, Model), + PgSearch::Configuration::Column.new(:content, nil, Model), + ] + options = { dictionary: "spanish", highlight: {start_sel: "", stop_sel: ""} } + config = double(:config, :ignore => []) + normalizer = PgSearch::Normalizer.new(config) + + feature = described_class.new(query, options, columns, Model, normalizer) + expect(feature.highlight.to_sql).to eq( + %{(ts_headline('#{options[:dictionary]}', (coalesce(#{Model.quoted_table_name}."name"::text, '') || ' ' || coalesce(#{Model.quoted_table_name}."content"::text, '')), (to_tsquery('#{options[:dictionary]}', ''' ' || 'query' || ' ''')), 'StartSel = #{options[:highlight][:start_sel]}, StopSel = #{options[:highlight][:stop_sel]}'))} + ) + end + end + end end