From 2ad0b32dd5c10bf4194f0a2c46c7fad08a35ea4c Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 9 Mar 2026 05:31:56 -0400 Subject: [PATCH] Add basic ES-enabled index/service coverage (#38097) --- spec/chewy/accounts_index_spec.rb | 9 +++++++ spec/chewy/public_statuses_index_spec.rb | 9 +++++++ spec/chewy/statuses_index_spec.rb | 9 +++++++ spec/chewy/tags_index_spec.rb | 9 +++++++ spec/services/account_search_service_spec.rb | 12 +++++++++ spec/services/statuses_search_service_spec.rb | 22 ++++++++++++++++ spec/services/tag_search_service_spec.rb | 25 +++++++++++++------ 7 files changed, 88 insertions(+), 7 deletions(-) create mode 100644 spec/services/statuses_search_service_spec.rb diff --git a/spec/chewy/accounts_index_spec.rb b/spec/chewy/accounts_index_spec.rb index f7b5b2e249..3e5f38a408 100644 --- a/spec/chewy/accounts_index_spec.rb +++ b/spec/chewy/accounts_index_spec.rb @@ -3,6 +3,15 @@ require 'rails_helper' RSpec.describe AccountsIndex do + context 'when elasticsearch is enabled', :search do + describe 'indexing records' do + it 'indexes records from scope' do + expect { Fabricate :account } + .to change(described_class, :count).by(1) + end + end + end + describe 'Searching the index' do before do mock_elasticsearch_response(described_class, raw_response) diff --git a/spec/chewy/public_statuses_index_spec.rb b/spec/chewy/public_statuses_index_spec.rb index 6bc08832f3..f978677260 100644 --- a/spec/chewy/public_statuses_index_spec.rb +++ b/spec/chewy/public_statuses_index_spec.rb @@ -3,6 +3,15 @@ require 'rails_helper' RSpec.describe PublicStatusesIndex do + context 'when elasticsearch is enabled', :search do + describe 'indexing records' do + it 'indexes records from scope' do + expect { Fabricate :status, visibility: :public } + .to change(described_class, :count).by(1) + end + end + end + describe 'Searching the index' do before do mock_elasticsearch_response(described_class, raw_response) diff --git a/spec/chewy/statuses_index_spec.rb b/spec/chewy/statuses_index_spec.rb index e3899f3a17..78c86b4387 100644 --- a/spec/chewy/statuses_index_spec.rb +++ b/spec/chewy/statuses_index_spec.rb @@ -3,6 +3,15 @@ require 'rails_helper' RSpec.describe StatusesIndex do + context 'when elasticsearch is enabled', :search do + describe 'indexing records' do + it 'indexes records from scope' do + expect { Fabricate :status } + .to change(described_class, :count).by(1) + end + end + end + describe 'Searching the index' do before do mock_elasticsearch_response(described_class, raw_response) diff --git a/spec/chewy/tags_index_spec.rb b/spec/chewy/tags_index_spec.rb index 6b57da65e4..fac5f29144 100644 --- a/spec/chewy/tags_index_spec.rb +++ b/spec/chewy/tags_index_spec.rb @@ -3,6 +3,15 @@ require 'rails_helper' RSpec.describe TagsIndex do + context 'when elasticsearch is enabled', :search do + describe 'indexing records' do + it 'indexes records from scope' do + expect { Fabricate :tag, listable: true } + .to change(described_class, :count).by(1) + end + end + end + describe 'Searching the index' do before do mock_elasticsearch_response(described_class, raw_response) diff --git a/spec/services/account_search_service_spec.rb b/spec/services/account_search_service_spec.rb index 7d251641ee..6295d2f8ff 100644 --- a/spec/services/account_search_service_spec.rb +++ b/spec/services/account_search_service_spec.rb @@ -86,4 +86,16 @@ RSpec.describe AccountSearchService do expect(results).to eq [] end end + + context 'when elasticsearch is enabled', :search do + it 'returns matching accounts' do + account = Fabricate(:account, username: 'matchingusername') + + AccountsIndex.import! + + results = subject.call('match', nil, limit: 5) + + expect(results).to eq [account] + end + end end diff --git a/spec/services/statuses_search_service_spec.rb b/spec/services/statuses_search_service_spec.rb new file mode 100644 index 0000000000..982b67ac87 --- /dev/null +++ b/spec/services/statuses_search_service_spec.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe StatusesSearchService do + describe '#call' do + let!(:status) { Fabricate(:status, text: 'status number one') } + let(:results) { subject.call('one', status.account, limit: 5) } + + before { Fabricate(:status, text: 'status number two') } + + context 'when elasticsearch is enabled', :search do + it 'runs a search for statuses' do + expect(results) + .to have_attributes( + size: 1, + first: eq(status) + ) + end + end + end +end diff --git a/spec/services/tag_search_service_spec.rb b/spec/services/tag_search_service_spec.rb index de42e54071..4339424a1a 100644 --- a/spec/services/tag_search_service_spec.rb +++ b/spec/services/tag_search_service_spec.rb @@ -5,17 +5,28 @@ require 'rails_helper' RSpec.describe TagSearchService do describe '#call' do let!(:one) { Fabricate(:tag, name: 'one') } + let(:results) { subject.call('#one', limit: 5) } before { Fabricate(:tag, name: 'two') } - it 'runs a search for tags' do - results = subject.call('#one', limit: 5) + context 'with postgres search' do + it 'runs a search for tags' do + expect(results) + .to have_attributes( + size: 1, + first: eq(one) + ) + end + end - expect(results) - .to have_attributes( - size: 1, - first: eq(one) - ) + context 'when elasticsearch is enabled', :search do + it 'runs a search for tags' do + expect(results) + .to have_attributes( + size: 1, + first: eq(one) + ) + end end end end