uberhook 0.0.1 → 0.0.2
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.
- data/README.md +2 -0
- data/lib/uberhook.rb +10 -3
- data/test/uberhook_test.rb +35 -16
- data/uberhook.gemspec +3 -3
- metadata +10 -10
data/README.md
CHANGED
data/lib/uberhook.rb
CHANGED
@@ -48,9 +48,16 @@ module Uberhook
|
|
48
48
|
|
49
49
|
def define_hook(type, target, callback)
|
50
50
|
alias_method "#{target}_without_callbacks", target
|
51
|
-
|
52
|
-
|
53
|
-
|
51
|
+
if type == :pre
|
52
|
+
define_method target do
|
53
|
+
send callback
|
54
|
+
send "#{target}_without_callbacks"
|
55
|
+
end
|
56
|
+
elsif type == :post
|
57
|
+
define_method target do
|
58
|
+
send "#{target}_without_callbacks"
|
59
|
+
send callback
|
60
|
+
end
|
54
61
|
end
|
55
62
|
end
|
56
63
|
|
data/test/uberhook_test.rb
CHANGED
@@ -3,9 +3,10 @@ require 'test_helper'
|
|
3
3
|
class UberhookTest < Uberhook::TestCase
|
4
4
|
def setup
|
5
5
|
@car = Class.new do
|
6
|
+
attr_reader :status
|
6
7
|
include Uberhook
|
7
|
-
def drive; end
|
8
|
-
def start; end
|
8
|
+
def drive; @status = :drive; end
|
9
|
+
def start; @status = :start; end
|
9
10
|
def stop; end
|
10
11
|
end
|
11
12
|
end
|
@@ -16,7 +17,7 @@ class UberhookTest < Uberhook::TestCase
|
|
16
17
|
before :drive, :start
|
17
18
|
end
|
18
19
|
end
|
19
|
-
|
20
|
+
|
20
21
|
test 'should register :post hook' do
|
21
22
|
@car.expects(:register_hook).with(:post, :drive, :stop).once
|
22
23
|
@car.class_eval do
|
@@ -32,41 +33,39 @@ class UberhookTest < Uberhook::TestCase
|
|
32
33
|
def two; end
|
33
34
|
end
|
34
35
|
end
|
35
|
-
|
36
|
+
|
36
37
|
test 'should not define :pre hook when target is not defined' do
|
37
38
|
@car.expects(:define_hook).times(0)
|
38
39
|
@car.class_eval do
|
39
40
|
register_hook :pre, :two, :one
|
40
41
|
end
|
41
42
|
end
|
42
|
-
|
43
|
+
|
43
44
|
test 'should not define :post hook when target is not defined' do
|
44
45
|
@car.expects(:define_hook).times(0)
|
45
46
|
@car.class_eval do
|
46
47
|
register_hook :post, :one, :two
|
47
48
|
end
|
48
49
|
end
|
49
|
-
|
50
|
+
|
50
51
|
test 'should run callback before the hook method' do
|
51
52
|
@car.class_eval do
|
52
53
|
register_hook :pre, :drive, :start
|
53
54
|
end
|
54
55
|
beatle = @car.new
|
55
|
-
# TODO how to test before call
|
56
56
|
beatle.expects(:start).once
|
57
57
|
beatle.drive
|
58
58
|
end
|
59
|
-
|
59
|
+
|
60
60
|
test 'should run callback after the hook method' do
|
61
61
|
@car.class_eval do
|
62
|
-
register_hook :post, :
|
62
|
+
register_hook :post, :start, :drive
|
63
63
|
end
|
64
64
|
beatle = @car.new
|
65
|
-
|
66
|
-
beatle.
|
67
|
-
beatle.drive
|
65
|
+
beatle.expects(:drive).once
|
66
|
+
beatle.start
|
68
67
|
end
|
69
|
-
|
68
|
+
|
70
69
|
test 'should run :pre callback when hook method gets defined' do
|
71
70
|
@car.class_eval do
|
72
71
|
register_hook :pre, :two, :one
|
@@ -74,11 +73,21 @@ class UberhookTest < Uberhook::TestCase
|
|
74
73
|
def two; end
|
75
74
|
end
|
76
75
|
beatle = @car.new
|
77
|
-
# TODO how to test before call
|
78
76
|
beatle.expects(:one).once
|
79
77
|
beatle.two
|
80
78
|
end
|
81
|
-
|
79
|
+
|
80
|
+
test 'should run :pre callback after hook method gets defined' do
|
81
|
+
@car.class_eval do
|
82
|
+
register_hook :pre, :two, :one
|
83
|
+
def one; @status = :one; end
|
84
|
+
def two; @status = :two; end
|
85
|
+
end
|
86
|
+
beatle = @car.new
|
87
|
+
beatle.two
|
88
|
+
assert_equal :two, beatle.status
|
89
|
+
end
|
90
|
+
|
82
91
|
test 'should run :post callback when hook method gets defined' do
|
83
92
|
@car.class_eval do
|
84
93
|
register_hook :post, :one, :two
|
@@ -86,8 +95,18 @@ class UberhookTest < Uberhook::TestCase
|
|
86
95
|
def two; end
|
87
96
|
end
|
88
97
|
beatle = @car.new
|
89
|
-
# TODO how to test after call
|
90
98
|
beatle.expects(:two).once
|
91
99
|
beatle.one
|
92
100
|
end
|
101
|
+
|
102
|
+
test 'should run :post callback after hook method gets defined' do
|
103
|
+
@car.class_eval do
|
104
|
+
register_hook :post, :one, :two
|
105
|
+
def one; @status = :one; end
|
106
|
+
def two; @status = :two; end
|
107
|
+
end
|
108
|
+
beatle = @car.new
|
109
|
+
beatle.one
|
110
|
+
assert_equal :two, beatle.status
|
111
|
+
end
|
93
112
|
end
|
data/uberhook.gemspec
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
Gem::Specification.new do |gem|
|
2
2
|
gem.name = 'uberhook'
|
3
|
-
gem.version = '0.0.
|
3
|
+
gem.version = '0.0.2'
|
4
4
|
gem.authors = ['Martin Jagusch']
|
5
5
|
gem.email = ['_@mj.io']
|
6
6
|
gem.description = 'Allows you to define :before and :after hooks for your classes and models.'
|
7
7
|
gem.summary = ':before and :after hooks'
|
8
8
|
gem.homepage = 'https://github.com/mjio/uberhook'
|
9
9
|
|
10
|
-
gem.add_development_dependency 'rake'
|
11
|
-
gem.add_development_dependency 'mocha'
|
10
|
+
gem.add_development_dependency 'rake'
|
11
|
+
gem.add_development_dependency 'mocha'
|
12
12
|
|
13
13
|
gem.files = `git ls-files`.split($/)
|
14
14
|
gem.test_files = gem.files.grep(%r{^test/})
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: uberhook
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,40 +9,40 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-08-
|
12
|
+
date: 2012-08-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - ! '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0
|
21
|
+
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
none: false
|
26
26
|
requirements:
|
27
|
-
- -
|
27
|
+
- - ! '>='
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0
|
29
|
+
version: '0'
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: mocha
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
33
33
|
none: false
|
34
34
|
requirements:
|
35
|
-
- -
|
35
|
+
- - ! '>='
|
36
36
|
- !ruby/object:Gem::Version
|
37
|
-
version: 0
|
37
|
+
version: '0'
|
38
38
|
type: :development
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
42
|
requirements:
|
43
|
-
- -
|
43
|
+
- - ! '>='
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version: 0
|
45
|
+
version: '0'
|
46
46
|
description: Allows you to define :before and :after hooks for your classes and models.
|
47
47
|
email:
|
48
48
|
- _@mj.io
|