diff --git a/lib/dry/system/container.rb b/lib/dry/system/container.rb index e6cc4ad4..89be5b21 100644 --- a/lib/dry/system/container.rb +++ b/lib/dry/system/container.rb @@ -325,10 +325,10 @@ def finalize!(freeze: true, &) [providers, auto_registrar, manifest_registrar, importer].each(&:finalize!) @__finalized__ = true - - self.freeze if freeze end + self.freeze if freeze + self end diff --git a/spec/unit/container/hooks/after_hooks_spec.rb b/spec/unit/container/hooks/after_hooks_spec.rb index c5e59da7..8bae351b 100644 --- a/spec/unit/container/hooks/after_hooks_spec.rb +++ b/spec/unit/container/hooks/after_hooks_spec.rb @@ -12,5 +12,33 @@ system.register(:foo) { "bar" } }.to yield_with_args(:foo) end + + it "provides the fully-qualified key" do + expect { |hook| + system.after(:register, &hook) + system.namespace :foo do + register(:bar) { "baz" } + end + }.to yield_with_args("foo.bar") + end + end + + describe "after_finalize hook" do + it "executes after finalization" do + expect { |hook| + system.after(:finalize, &hook) + system.finalize! + }.to yield_control + end + + it "executes before the container is frozen" do + is_frozen = nil + + system.after(:finalize) { is_frozen = frozen? } + system.finalize! + + expect(is_frozen).to eq false + expect(system).to be_frozen + end end end