after_do 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|