Class: FactoryGirl::Proxy::Stub
Overview
Constant Summary
collapse
- @@next_id =
1000
Instance Attribute Summary
#callbacks
Instance Method Summary
collapse
#add_callback, #method_missing, #run_callbacks, #set_ignored
Constructor Details
#initialize(klass) ⇒ Stub
Returns a new instance of Stub.
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# File 'lib/factory_girl/proxy/stub.rb', line 6
def initialize(klass)
super(klass)
@instance = klass.new
@ignored_attributes = {}
@instance.id = next_id
@instance.instance_eval do
def persisted?
!new_record?
end
def created_at
@created_at ||= Time.now
end
def new_record?
id.nil?
end
def save(*args)
raise "stubbed models are not allowed to access the database"
end
def destroy(*args)
raise "stubbed models are not allowed to access the database"
end
def connection
raise "stubbed models are not allowed to access the database"
end
def reload
raise "stubbed models are not allowed to access the database"
end
def update_attribute(*args)
raise "stubbed models are not allowed to access the database"
end
end
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
in the class FactoryGirl::Proxy
Instance Method Details
#associate(name, factory_name, overrides) ⇒ Object
62
63
64
65
|
# File 'lib/factory_girl/proxy/stub.rb', line 62
def associate(name, factory_name, overrides)
factory = FactoryGirl.factory_by_name(factory_name)
set(name, factory.run(Proxy::Stub, remove_method(overrides)))
end
|
#association(factory_name, overrides = {}) ⇒ Object
67
68
69
70
|
# File 'lib/factory_girl/proxy/stub.rb', line 67
def association(factory_name, overrides = {})
factory = FactoryGirl.factory_by_name(factory_name)
factory.run(Proxy::Stub, remove_method(overrides))
end
|
#get(attribute) ⇒ Object
50
51
52
53
54
55
56
|
# File 'lib/factory_girl/proxy/stub.rb', line 50
def get(attribute)
if @ignored_attributes.has_key?(attribute)
@ignored_attributes[attribute]
else
@instance.send(attribute)
end
end
|
#next_id ⇒ Object
46
47
48
|
# File 'lib/factory_girl/proxy/stub.rb', line 46
def next_id
@@next_id += 1
end
|
#remove_method(overrides) ⇒ Object
72
73
74
|
# File 'lib/factory_girl/proxy/stub.rb', line 72
def remove_method(overrides)
overrides.dup.delete_if {|key, value| key == :method}
end
|
#result(to_create) ⇒ Object
76
77
78
79
|
# File 'lib/factory_girl/proxy/stub.rb', line 76
def result(to_create)
run_callbacks(:after_stub)
@instance
end
|
#set(attribute, value) ⇒ Object
58
59
60
|
# File 'lib/factory_girl/proxy/stub.rb', line 58
def set(attribute, value)
@instance.send(:"#{attribute}=", value)
end
|