From 9e64fdf91c9e1cc90be5f3228dea6c08c74165a4 Mon Sep 17 00:00:00 2001 From: Povilas Jurcys Date: Wed, 24 Jul 2019 10:12:05 +0300 Subject: [PATCH] Add more tests for hooks inheritance --- spec/interactor/hooks_spec.rb | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/spec/interactor/hooks_spec.rb b/spec/interactor/hooks_spec.rb index df1b245..f143a5b 100644 --- a/spec/interactor/hooks_spec.rb +++ b/spec/interactor/hooks_spec.rb @@ -364,11 +364,16 @@ def add_after2 } let(:inherited) { Class.new(hooked) } + let(:deeply_inherited) { Class.new(Class.new(inherited)) } - it "inherites around hooks from parent class" do + it "inherits around hooks from parent class" do expect(inherited.around_hooks).to eq(hooked.around_hooks) end + it "inherits around hooks from all ancestor classes" do + expect(deeply_inherited.around_hooks).to eq(hooked.around_hooks) + end + it "does not add hook to parent class" do inherited.class_eval { around { |hooked| hooked.call } } expect(inherited.around_hooks.size).not_to eq(hooked.around_hooks.size) @@ -384,11 +389,16 @@ def add_after2 } let(:inherited) { Class.new(hooked) } + let(:deeply_inherited) { Class.new(Class.new(inherited)) } - it "inherites before hooks from parent class" do + it "inherits before hooks from parent class" do expect(inherited.before_hooks).to eq(hooked.before_hooks) end + it "inherits before hooks from all ancestor classes" do + expect(deeply_inherited.before_hooks).to eq(hooked.before_hooks) + end + it "does not add hook to parent class" do inherited.class_eval { before {} } expect(inherited.before_hooks).not_to eq(hooked.before_hooks) @@ -404,11 +414,16 @@ def add_after2 } let(:inherited) { Class.new(hooked) } + let(:deeply_inherited) { Class.new(Class.new(inherited)) } - it "inherites after hooks from parent class" do + it "inherits after hooks from parent class" do expect(inherited.after_hooks).to eq(hooked.after_hooks) end + it "inherits after hooks from all ancestor classes" do + expect(deeply_inherited.before_hooks).to eq(hooked.before_hooks) + end + it "does not add hook to parent class" do inherited.class_eval { after {} } expect(inherited.after_hooks).not_to eq(hooked.after_hooks)