From d01d46c7e4647164c28d87549f1187800c8672d2 Mon Sep 17 00:00:00 2001 From: "Marcos G. Zimmermann" Date: Wed, 10 Jul 2024 18:36:39 -0300 Subject: [PATCH] hotfix: unfreeze items of esse_callback to let it be defined in same group for each type --- Gemfile.lock | 2 +- ci/Gemfile.rails-5.2.lock | 2 +- ci/Gemfile.rails-6.0.lock | 2 +- ci/Gemfile.rails-6.1.lock | 2 +- ci/Gemfile.rails-7.0.lock | 2 +- ci/Gemfile.rails-7.1.lock | 2 +- lib/esse/active_record/model.rb | 2 +- lib/esse/active_record/version.rb | 2 +- .../active_record/model/esse_callback_spec.rb | 15 +++++++++++++++ 9 files changed, 23 insertions(+), 8 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index fcd2f30..810a004 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - esse-active_record (0.3.1) + esse-active_record (0.3.2) activerecord (>= 4.2, < 8) esse (>= 0.3.0) diff --git a/ci/Gemfile.rails-5.2.lock b/ci/Gemfile.rails-5.2.lock index 5963372..b81bf79 100644 --- a/ci/Gemfile.rails-5.2.lock +++ b/ci/Gemfile.rails-5.2.lock @@ -1,7 +1,7 @@ PATH remote: .. specs: - esse-active_record (0.3.1) + esse-active_record (0.3.2) activerecord (>= 4.2, < 8) esse (>= 0.3.0) diff --git a/ci/Gemfile.rails-6.0.lock b/ci/Gemfile.rails-6.0.lock index b303506..863ddc6 100644 --- a/ci/Gemfile.rails-6.0.lock +++ b/ci/Gemfile.rails-6.0.lock @@ -1,7 +1,7 @@ PATH remote: .. specs: - esse-active_record (0.3.1) + esse-active_record (0.3.2) activerecord (>= 4.2, < 8) esse (>= 0.3.0) diff --git a/ci/Gemfile.rails-6.1.lock b/ci/Gemfile.rails-6.1.lock index 2cd9e1c..b475fae 100644 --- a/ci/Gemfile.rails-6.1.lock +++ b/ci/Gemfile.rails-6.1.lock @@ -1,7 +1,7 @@ PATH remote: .. specs: - esse-active_record (0.3.1) + esse-active_record (0.3.2) activerecord (>= 4.2, < 8) esse (>= 0.3.0) diff --git a/ci/Gemfile.rails-7.0.lock b/ci/Gemfile.rails-7.0.lock index b303506..863ddc6 100644 --- a/ci/Gemfile.rails-7.0.lock +++ b/ci/Gemfile.rails-7.0.lock @@ -1,7 +1,7 @@ PATH remote: .. specs: - esse-active_record (0.3.1) + esse-active_record (0.3.2) activerecord (>= 4.2, < 8) esse (>= 0.3.0) diff --git a/ci/Gemfile.rails-7.1.lock b/ci/Gemfile.rails-7.1.lock index a2ebe35..e91bf59 100644 --- a/ci/Gemfile.rails-7.1.lock +++ b/ci/Gemfile.rails-7.1.lock @@ -1,7 +1,7 @@ PATH remote: .. specs: - esse-active_record (0.3.1) + esse-active_record (0.3.2) activerecord (>= 4.2, < 8) esse (>= 0.3.0) diff --git a/lib/esse/active_record/model.rb b/lib/esse/active_record/model.rb index e04cfa8..bb43be0 100644 --- a/lib/esse/active_record/model.rb +++ b/lib/esse/active_record/model.rb @@ -23,7 +23,7 @@ def esse_callback(index_repo_name, operation_name, on: %i[create update destroy] raise ArgumentError, format('index repository %p already registered %s operation', name: index_repo_name, op: operation_name) end - @esse_callbacks[index_repo_name] ||= {} + @esse_callbacks[index_repo_name] = @esse_callbacks[index_repo_name]&.dup || {} @esse_callbacks[index_repo_name][identifier] = [klass, options, block] after_commit(on: event, if: if_enabled) do diff --git a/lib/esse/active_record/version.rb b/lib/esse/active_record/version.rb index 2daf1ef..676f809 100644 --- a/lib/esse/active_record/version.rb +++ b/lib/esse/active_record/version.rb @@ -2,6 +2,6 @@ module Esse module ActiveRecord - VERSION = '0.3.1' + VERSION = '0.3.2' end end diff --git a/spec/esse/active_record/model/esse_callback_spec.rb b/spec/esse/active_record/model/esse_callback_spec.rb index a516699..6551d4d 100644 --- a/spec/esse/active_record/model/esse_callback_spec.rb +++ b/spec/esse/active_record/model/esse_callback_spec.rb @@ -73,6 +73,21 @@ class DumpTempCallbackOnDestroy < DumpTempCallback; end end end + it 'allows to define multiple callbacks in the same model' do + model_class.esse_callback('states:state', :temp, on: :create) { :ok } + expect { + model_class.esse_callback('states:state', :temp, on: :update) { :ok } + }.not_to raise_error + expect(model_class.esse_callbacks).to a_hash_including( + 'states:state' => a_hash_including( + temp_on_create: contain_exactly(DumpTempCallbackOnCreate, {}, an_instance_of(Proc)), + temp_on_update: contain_exactly(DumpTempCallbackOnUpdate, {}, an_instance_of(Proc)), + ) + ) + expect(model_class.esse_callbacks).to be_frozen + expect(model_class.esse_callbacks['states:state']).to be_frozen + end + context 'when on :create' do it 'raises an error when the callback is not registered' do expect {