From c44a2dcdb0f56bddbd9a1562782272bafb232f50 Mon Sep 17 00:00:00 2001 From: Mac Siri Date: Tue, 23 Apr 2024 15:35:53 -0400 Subject: [PATCH] Add AlgoliaSearchable for Organization (#20883) * Add algolia for org * Add test * Remove redundant path --- .../searchable_organization.rb | 20 +++++++++++++++++++ app/models/organization.rb | 1 + spec/models/organization_spec.rb | 9 +++++++++ 3 files changed, 30 insertions(+) create mode 100644 app/models/concerns/algolia_searchable/searchable_organization.rb diff --git a/app/models/concerns/algolia_searchable/searchable_organization.rb b/app/models/concerns/algolia_searchable/searchable_organization.rb new file mode 100644 index 000000000..4ec874117 --- /dev/null +++ b/app/models/concerns/algolia_searchable/searchable_organization.rb @@ -0,0 +1,20 @@ +module AlgoliaSearchable + module SearchableOrganization + extend ActiveSupport::Concern + + included do + algoliasearch(**DEFAULT_ALGOLIA_SETTINGS) do + attribute :name, :tag_line, :summary, :slug + attribute :profile_image do + profile_image_90 + end + end + end + + class_methods do + def trigger_sidekiq_worker(record, delete) + AlgoliaSearch::SearchIndexWorker.perform_async(record.class.name, record.id, delete) + end + end + end +end diff --git a/app/models/organization.rb b/app/models/organization.rb index b8aa58327..4d6e76237 100644 --- a/app/models/organization.rb +++ b/app/models/organization.rb @@ -1,6 +1,7 @@ class Organization < ApplicationRecord include CloudinaryHelper include PgSearch::Model + include AlgoliaSearchable include Images::Profile.for(:profile_image_url) diff --git a/spec/models/organization_spec.rb b/spec/models/organization_spec.rb index 0c0e30cff..c4d51b620 100644 --- a/spec/models/organization_spec.rb +++ b/spec/models/organization_spec.rb @@ -439,4 +439,13 @@ RSpec.describe Organization do end end end + + context "when indexing with Algolia", :algolia do + it "indexes the organization on create" do + search_index_worker = AlgoliaSearch::SearchIndexWorker + allow(search_index_worker).to receive(:perform_async) + create(:organization) + expect(search_index_worker).to have_received(:perform_async).with("Organization", kind_of(Integer), false) + end + end end