Browse Source

Fixes #3598 - Search results missing for users with two names within lastname.

Rolf Schmidt 3 years ago
parent
commit
1bf188d7ac
2 changed files with 17 additions and 1 deletions
  1. 1 0
      app/models/user/search_index.rb
  2. 16 1
      spec/lib/search_index_backend_spec.rb

+ 1 - 0
app/models/user/search_index.rb

@@ -6,6 +6,7 @@ class User
 
     def search_index_attribute_lookup(include_references: true)
       attributes = super
+      attributes['fullname'] = fullname
       attributes.delete('password')
 
       if include_references

+ 16 - 1
spec/lib/search_index_backend_spec.rb

@@ -27,7 +27,7 @@ RSpec.describe SearchIndexBackend, searchindex: true do
       let(:record) { create :ticket }
 
       before do
-        described_class.add(record_type, record)
+        record.search_index_update_backend
         described_class.refresh
       end
 
@@ -37,6 +37,21 @@ RSpec.describe SearchIndexBackend, searchindex: true do
       end
     end
 
+    context 'when search for user firstname + double lastname' do
+      let(:record_type) { 'User'.freeze }
+      let(:record) { create :user, login: 'a', email: 'a@a.de', firstname: 'AnFirst', lastname: 'ASplit Lastname' }
+
+      before do
+        record.search_index_update_backend
+        described_class.refresh
+      end
+
+      it 'finds user record' do
+        result = described_class.search('AnFirst ASplit Lastname', record_type, sort_by: ['updated_at'], order_by: ['desc'])
+        expect(result).to eq([{ id: record.id.to_s, type: record_type }])
+      end
+    end
+
     context 'for query with no results' do
       subject(:search) { described_class.search(query, index, limit: 3000) }