From 1a66aaaeb69806d9c6b75da8eb742eaac709e002 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Sat, 25 May 2024 12:47:38 -0400 Subject: [PATCH] Only log admin actions when change actually happened --- .../concerns/accountable_concern.rb | 2 ++ .../concerns/accountable_concern_spec.rb | 22 +++++++++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/app/controllers/concerns/accountable_concern.rb b/app/controllers/concerns/accountable_concern.rb index c1349915f84..e111c213fcb 100644 --- a/app/controllers/concerns/accountable_concern.rb +++ b/app/controllers/concerns/accountable_concern.rb @@ -4,6 +4,8 @@ module AccountableConcern extend ActiveSupport::Concern def log_action(action, target) + return unless target.previous_changes.any? + Admin::ActionLog.create( account: current_account, action: action, diff --git a/spec/controllers/concerns/accountable_concern_spec.rb b/spec/controllers/concerns/accountable_concern_spec.rb index cd06d872bb5..95086d4336a 100644 --- a/spec/controllers/concerns/accountable_concern_spec.rb +++ b/spec/controllers/concerns/accountable_concern_spec.rb @@ -19,10 +19,24 @@ RSpec.describe AccountableConcern do let(:hoge) { hoge_class.new(user) } describe '#log_action' do - it 'creates Admin::ActionLog' do - expect do - hoge.log_action(:create, target) - end.to change(Admin::ActionLog, :count).by(1) + subject { hoge.log_action(:create, target) } + + before { target.reload } # Ensure changes from creation cleared + + context 'when target has changed' do + before { target.update!(username: 'new_value') } + + it 'creates Admin::ActionLog' do + expect { subject } + .to change(Admin::ActionLog, :count).by(1) + end + end + + context 'when target has not changed' do + it 'does not create Admin::ActionLog' do + expect { subject } + .to_not change(Admin::ActionLog, :count) + end end end end