From d28b69b658fb8fa80ae88ff84c113c8fb18088aa Mon Sep 17 00:00:00 2001 From: Rajat Talesra Date: Thu, 3 Aug 2023 21:56:57 +0530 Subject: [PATCH] Bust cache of organization page when new member is added (#19861) --- app/models/organization_membership.rb | 8 ++++++++ spec/models/organization_spec.rb | 14 ++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/app/models/organization_membership.rb b/app/models/organization_membership.rb index a0ba6055a..bfceec769 100644 --- a/app/models/organization_membership.rb +++ b/app/models/organization_membership.rb @@ -14,6 +14,8 @@ class OrganizationMembership < ApplicationRecord after_create :update_user_organization_info_updated_at after_destroy :update_user_organization_info_updated_at + after_commit :bust_cache + scope :admin, -> { where(type_of_user: "admin") } scope :member, -> { where(type_of_user: %w[admin member]) } @@ -23,4 +25,10 @@ class OrganizationMembership < ApplicationRecord def update_user_organization_info_updated_at user.touch(:organization_info_updated_at) end + + private + + def bust_cache + BustCachePathWorker.perform_async(organization.path.to_s) + end end diff --git a/spec/models/organization_spec.rb b/spec/models/organization_spec.rb index ff1530bbf..aa1e11032 100644 --- a/spec/models/organization_spec.rb +++ b/spec/models/organization_spec.rb @@ -390,4 +390,18 @@ RSpec.describe Organization do expect(results.size).to eq(3) end end + + describe "#bust_cache" do + context "when a new user is added to the organization" do + let(:user) { create(:user) } + + it "calls BustCachePathWorker after creating an organization membership" do + org_membership = OrganizationMembership.create(user: user, organization: organization, type_of_user: "admin") + + allow(org_membership).to receive(:bust_cache) + org_membership.save + expect(org_membership).to have_received(:bust_cache) + end + end + end end