imitate 0.1.3 → 0.1.4
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/Gemfile +1 -0
- data/Gemfile.lock +4 -0
- data/VERSION +1 -1
- data/imitate.gemspec +4 -1
- data/lib/imitate.rb +12 -3
- data/spec/imitate_spec.rb +19 -2
- data/spec/spec_helper.rb +1 -1
- metadata +21 -10
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -9,6 +9,9 @@ GEM
|
|
9
9
|
rake
|
10
10
|
rdoc
|
11
11
|
json (1.7.0)
|
12
|
+
metaclass (0.0.1)
|
13
|
+
mocha (0.11.3)
|
14
|
+
metaclass (~> 0.0.1)
|
12
15
|
rake (0.9.2.2)
|
13
16
|
rdoc (3.12)
|
14
17
|
json (~> 1.4)
|
@@ -27,5 +30,6 @@ PLATFORMS
|
|
27
30
|
DEPENDENCIES
|
28
31
|
bundler (~> 1.0.0)
|
29
32
|
jeweler (~> 1.8.3)
|
33
|
+
mocha
|
30
34
|
rdoc (~> 3.12)
|
31
35
|
rspec (~> 2.8.0)
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.4
|
data/imitate.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "imitate"
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Petr Janda"]
|
@@ -44,17 +44,20 @@ Gem::Specification.new do |s|
|
|
44
44
|
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
45
45
|
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
46
46
|
s.add_development_dependency(%q<jeweler>, ["~> 1.8.3"])
|
47
|
+
s.add_development_dependency(%q<mocha>, [">= 0"])
|
47
48
|
else
|
48
49
|
s.add_dependency(%q<rspec>, ["~> 2.8.0"])
|
49
50
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
50
51
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
51
52
|
s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
|
53
|
+
s.add_dependency(%q<mocha>, [">= 0"])
|
52
54
|
end
|
53
55
|
else
|
54
56
|
s.add_dependency(%q<rspec>, ["~> 2.8.0"])
|
55
57
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
56
58
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
57
59
|
s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
|
60
|
+
s.add_dependency(%q<mocha>, [">= 0"])
|
58
61
|
end
|
59
62
|
end
|
60
63
|
|
data/lib/imitate.rb
CHANGED
@@ -36,7 +36,7 @@ module Imitate
|
|
36
36
|
#
|
37
37
|
def unmock(name)
|
38
38
|
process_name(name) {|parent, token|
|
39
|
-
self.send(was_mocked?(parent, token) ? :
|
39
|
+
self.send(was_mocked?(parent, token) ? :remove_mock : :get_const, parent, token)
|
40
40
|
}
|
41
41
|
end
|
42
42
|
|
@@ -45,7 +45,9 @@ module Imitate
|
|
45
45
|
# way then using Imitate.
|
46
46
|
#
|
47
47
|
def unmock_all
|
48
|
-
|
48
|
+
while mock = MOCKED.shift
|
49
|
+
remove_mock(mock[:parent], mock[:name])
|
50
|
+
end
|
49
51
|
end
|
50
52
|
|
51
53
|
private
|
@@ -63,12 +65,19 @@ module Imitate
|
|
63
65
|
MOCKED.index({:parent => parent, :name => name})
|
64
66
|
end
|
65
67
|
|
68
|
+
def remove_mock(parent, name)
|
69
|
+
MOCKED.delete({:parent => parent, :name => name})
|
70
|
+
remove_const(parent, name)
|
71
|
+
end
|
72
|
+
|
66
73
|
def remove_const(parent, name)
|
67
74
|
parent.instance_eval { remove_const name }
|
68
75
|
end
|
69
76
|
|
70
77
|
def get_const(parent, name)
|
71
|
-
|
78
|
+
parent.const_get(name)
|
79
|
+
rescue
|
80
|
+
nil
|
72
81
|
end
|
73
82
|
|
74
83
|
def create_const(clazz, parent, name, &block)
|
data/spec/imitate_spec.rb
CHANGED
@@ -18,8 +18,8 @@ describe "Imitate" do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
describe '.unmock' do
|
21
|
-
context '
|
22
|
-
context '
|
21
|
+
context 'const exists' do
|
22
|
+
context 'const was mocked by imitate' do
|
23
23
|
it 'should remove the class' do
|
24
24
|
Imitate.mock_class('Foo')
|
25
25
|
Imitate.unmock('Foo')
|
@@ -34,6 +34,15 @@ describe "Imitate" do
|
|
34
34
|
lambda { Foo::Bar }.should raise_error
|
35
35
|
lambda { Foo }.should raise_error
|
36
36
|
end
|
37
|
+
|
38
|
+
it 'should remove record from MOCKED' do
|
39
|
+
Imitate.mock_class('Foo')
|
40
|
+
Imitate.unmock('Foo')
|
41
|
+
|
42
|
+
Imitate.expects(:remove_const).never
|
43
|
+
|
44
|
+
Imitate.unmock('Foo')
|
45
|
+
end
|
37
46
|
end
|
38
47
|
|
39
48
|
context 'if const was not mocked' do
|
@@ -68,6 +77,14 @@ describe "Imitate" do
|
|
68
77
|
end
|
69
78
|
end
|
70
79
|
end
|
80
|
+
|
81
|
+
context 'class doesnt exist' do
|
82
|
+
it 'should do nothing' do
|
83
|
+
Imitate.unmock('Foo1')
|
84
|
+
|
85
|
+
Imitate.expects(:remove_const).never
|
86
|
+
end
|
87
|
+
end
|
71
88
|
end
|
72
89
|
|
73
90
|
describe '.mock_class' do
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: imitate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-05-03 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &2160205840 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 2.8.0
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2160205840
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rdoc
|
27
|
-
requirement: &
|
27
|
+
requirement: &2160203080 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '3.12'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2160203080
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: bundler
|
38
|
-
requirement: &
|
38
|
+
requirement: &2160200860 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 1.0.0
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2160200860
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: jeweler
|
49
|
-
requirement: &
|
49
|
+
requirement: &2160198100 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,7 +54,18 @@ dependencies:
|
|
54
54
|
version: 1.8.3
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2160198100
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: mocha
|
60
|
+
requirement: &2160194700 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *2160194700
|
58
69
|
description: Simple class mock
|
59
70
|
email: petrjanda@me.com
|
60
71
|
executables: []
|
@@ -90,7 +101,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
90
101
|
version: '0'
|
91
102
|
segments:
|
92
103
|
- 0
|
93
|
-
hash:
|
104
|
+
hash: 2598245985460209889
|
94
105
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
95
106
|
none: false
|
96
107
|
requirements:
|