fakes 1.0.1 → 1.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/lib/core/class_swap.rb +8 -4
- data/lib/core/version.rb +1 -1
- data/spec/specs/class_swap_spec.rb +3 -3
- data/spec/specs/class_swaps_spec.rb +19 -0
- metadata +2 -2
data/lib/core/class_swap.rb
CHANGED
@@ -3,11 +3,15 @@ module Fakes
|
|
3
3
|
attr_accessor :original,:replacement
|
4
4
|
attr_reader :klass
|
5
5
|
|
6
|
-
def initialize(
|
7
|
-
|
6
|
+
def initialize(fully_qualified_klass,replacement,options ={})
|
7
|
+
klass_parts = fully_qualified_klass.to_s
|
8
|
+
parts = klass_parts.split('::')
|
9
|
+
the_module = parts.count == 1 ? Object : eval(parts.slice(0,parts.count - 1).join('::'))
|
10
|
+
@klass = parts[parts.count - 1].to_s.to_sym
|
11
|
+
|
8
12
|
@replacement = replacement
|
9
|
-
@remove_strategy = options.fetch(:remove_strategy,lambda{|klass_symbol|
|
10
|
-
@set_strategy = options.fetch(:set_strategy,lambda{|klass_symbol,new_value|
|
13
|
+
@remove_strategy = options.fetch(:remove_strategy,lambda{|klass_symbol| the_module.send(:remove_const,klass_symbol)})
|
14
|
+
@set_strategy = options.fetch(:set_strategy,lambda{|klass_symbol,new_value| the_module.const_set(klass_symbol,new_value)})
|
11
15
|
end
|
12
16
|
|
13
17
|
def initiate
|
data/lib/core/version.rb
CHANGED
@@ -8,12 +8,12 @@ module Fakes
|
|
8
8
|
let(:sut){ClassSwap.new(MyClass,Object.new)}
|
9
9
|
|
10
10
|
it "should store the symbol of the class it is going to replace" do
|
11
|
-
sut.klass.should == MyClass
|
11
|
+
sut.klass.should == :MyClass
|
12
12
|
end
|
13
13
|
end
|
14
14
|
context "when initiated" do
|
15
15
|
let(:replacement){Object.new}
|
16
|
-
let(:the_sym){MyClass
|
16
|
+
let(:the_sym){:MyClass}
|
17
17
|
let(:remove_strategy){Proc.new do|klass_to_remove|
|
18
18
|
@klass_to_remove = klass_to_remove
|
19
19
|
MyClass
|
@@ -39,7 +39,7 @@ module Fakes
|
|
39
39
|
end
|
40
40
|
context "when reset" do
|
41
41
|
let(:original){MyClass}
|
42
|
-
let(:the_sym){MyClass
|
42
|
+
let(:the_sym){:MyClass}
|
43
43
|
let(:replacement){Object.new}
|
44
44
|
let(:remove_strategy){Proc.new do|klass_to_remove|
|
45
45
|
@klass_to_remove = klass_to_remove
|
@@ -1,5 +1,13 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
+
module SomeModule
|
4
|
+
module NestedModule
|
5
|
+
class AClassInANestedModule
|
6
|
+
end
|
7
|
+
end
|
8
|
+
class ClassInAModule
|
9
|
+
end
|
10
|
+
end
|
3
11
|
module Fakes
|
4
12
|
class SomeClass
|
5
13
|
def self.calculate
|
@@ -94,6 +102,17 @@ module Fakes
|
|
94
102
|
ClassSwaps.instance.reset
|
95
103
|
Dir.should_not == replacement
|
96
104
|
end
|
105
|
+
it 'should be able to swap class values in another module' do
|
106
|
+
ClassSwaps.instance.add_fake_for(SomeModule::ClassInAModule,replacement)
|
107
|
+
SomeModule::ClassInAModule.should == replacement
|
108
|
+
ClassSwaps.instance.reset
|
109
|
+
SomeModule::ClassInAModule.should_not == replacement
|
110
|
+
|
111
|
+
ClassSwaps.instance.add_fake_for(SomeModule::NestedModule::AClassInANestedModule,replacement)
|
112
|
+
SomeModule::NestedModule::AClassInANestedModule.should == replacement
|
113
|
+
ClassSwaps.instance.reset
|
114
|
+
SomeModule::NestedModule::AClassInANestedModule.should_not == replacement
|
115
|
+
end
|
97
116
|
end
|
98
117
|
end
|
99
118
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fakes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-06-
|
12
|
+
date: 2012-06-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|