after_do 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/after_do.rb +5 -1
- data/lib/after_do/version.rb +1 -1
- data/spec/after_do_spec.rb +23 -5
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 53c375dcc4890f556937b57e4c425fe504bc5774
|
4
|
+
data.tar.gz: 66f9df14bb68c11f643e36d267b80eb435c7ea6a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9848d290fe04c511fe23f0ce298033626ee2ae75f4720c5118aaf9f553703fb1d2c095853d312ee2275bb77c11abc0be46a72ac8a2983bdc295d723064fa20e7
|
7
|
+
data.tar.gz: 21ea282c3a6c143c1efd2491df07cd53e66b8967006143c0b63d68e9608b79c705f4ff8d7b7e9ca54e9a55ac77a28a802b1b48317c0360008c6ad1e5e95ef381
|
data/lib/after_do.rb
CHANGED
@@ -53,7 +53,7 @@ module AfterDo
|
|
53
53
|
end
|
54
54
|
|
55
55
|
def _after_do_make_after_do_version_of_method(method)
|
56
|
-
_after_do_raise_no_method_error(method) unless
|
56
|
+
_after_do_raise_no_method_error(method) unless _after_do_defined?(method)
|
57
57
|
@_after_do_callbacks[:before][method] = []
|
58
58
|
@_after_do_callbacks[:after][method] = []
|
59
59
|
alias_name = _after_do_aliased_name method
|
@@ -61,6 +61,10 @@ module AfterDo
|
|
61
61
|
_after_do_redefine_method_with_callback(method, alias_name)
|
62
62
|
end
|
63
63
|
|
64
|
+
def _after_do_defined?(method)
|
65
|
+
method_defined?(method) || private_method_defined?(method)
|
66
|
+
end
|
67
|
+
|
64
68
|
def _after_do_raise_no_method_error(method)
|
65
69
|
raise NonExistingMethodError, "There is no method #{method} on #{self} to attach a block to with AfterDo"
|
66
70
|
end
|
data/lib/after_do/version.rb
CHANGED
data/spec/after_do_spec.rb
CHANGED
@@ -31,12 +31,21 @@ describe AfterDo do
|
|
31
31
|
@dummy_class.should respond_to callback_adder
|
32
32
|
end
|
33
33
|
|
34
|
-
|
34
|
+
def simple_callback_called_test(callback_adder)
|
35
35
|
@dummy_class.send callback_adder, :zero do mockie.call_method end
|
36
36
|
mockie.should_receive :call_method
|
37
37
|
dummy_instance.zero
|
38
38
|
end
|
39
39
|
|
40
|
+
it 'calls a method on the injected mockie' do
|
41
|
+
simple_callback_called_test callback_adder
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'calls a method on the injected mockie even if that method is private' do
|
45
|
+
@dummy_class.send(:private, :zero)
|
46
|
+
simple_callback_called_test callback_adder
|
47
|
+
end
|
48
|
+
|
40
49
|
it 'does not change the return value' do
|
41
50
|
before_return_value = dummy_instance.zero
|
42
51
|
@dummy_class.send callback_adder, :zero do 42 end
|
@@ -70,10 +79,19 @@ describe AfterDo do
|
|
70
79
|
end
|
71
80
|
|
72
81
|
describe 'errors' do
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
82
|
+
describe 'NonExistingMethodError' do
|
83
|
+
it 'throws an error when you try to add a hook to a non existing method' do
|
84
|
+
expect do
|
85
|
+
@dummy_class.send callback_adder, :non_existing_method do ; end
|
86
|
+
end.to raise_error(AfterDo::NonExistingMethodError)
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'does not throw the error for private methods (see #9)' do
|
90
|
+
@dummy_class.send(:private, :zero)
|
91
|
+
expect do
|
92
|
+
@dummy_class.send callback_adder, :zero do ; end
|
93
|
+
end.to_not raise_error
|
94
|
+
end
|
77
95
|
end
|
78
96
|
|
79
97
|
describe 'errors in callbacks' do
|