factory_girl 2.3.2 → 2.4.0
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/.travis.yml +5 -3
- data/Appraisals +4 -0
- data/CONTRIBUTION_GUIDELINES.md +1 -1
- data/Changelog +13 -0
- data/GETTING_STARTED.md +362 -286
- data/Gemfile.lock +1 -1
- data/README.md +8 -8
- data/features/factory_girl_steps.feature +4 -0
- data/features/support/factories.rb +19 -0
- data/gemfiles/2.1.gemfile.lock +1 -1
- data/gemfiles/2.3.gemfile.lock +1 -1
- data/gemfiles/3.0.gemfile.lock +1 -1
- data/gemfiles/3.1.gemfile.lock +1 -1
- data/gemfiles/3.2.gemfile +7 -0
- data/gemfiles/3.2.gemfile.lock +90 -0
- data/lib/factory_girl.rb +4 -0
- data/lib/factory_girl/attribute.rb +1 -9
- data/lib/factory_girl/attribute/association.rb +2 -2
- data/lib/factory_girl/attribute/dynamic.rb +2 -2
- data/lib/factory_girl/attribute/sequence.rb +1 -1
- data/lib/factory_girl/attribute/static.rb +1 -1
- data/lib/factory_girl/attribute_assigner.rb +73 -0
- data/lib/factory_girl/attribute_list.rb +6 -15
- data/lib/factory_girl/callback.rb +2 -2
- data/lib/factory_girl/evaluator.rb +57 -0
- data/lib/factory_girl/evaluator_class_definer.rb +34 -0
- data/lib/factory_girl/factory.rb +31 -80
- data/lib/factory_girl/null_factory.rb +2 -1
- data/lib/factory_girl/null_object.rb +19 -0
- data/lib/factory_girl/proxy.rb +6 -87
- data/lib/factory_girl/proxy/attributes_for.rb +2 -7
- data/lib/factory_girl/proxy/build.rb +4 -3
- data/lib/factory_girl/proxy/create.rb +6 -7
- data/lib/factory_girl/proxy/stub.rb +19 -18
- data/lib/factory_girl/step_definitions.rb +4 -3
- data/lib/factory_girl/version.rb +1 -1
- data/spec/acceptance/aliases_spec.rb +19 -0
- data/spec/acceptance/attributes_for_spec.rb +10 -1
- data/spec/acceptance/attributes_from_instance_spec.rb +53 -0
- data/spec/acceptance/build_spec.rb +8 -0
- data/spec/acceptance/build_stubbed_spec.rb +9 -0
- data/spec/acceptance/create_spec.rb +8 -0
- data/spec/factory_girl/attribute/association_spec.rb +5 -4
- data/spec/factory_girl/attribute/dynamic_spec.rb +9 -10
- data/spec/factory_girl/attribute/sequence_spec.rb +1 -2
- data/spec/factory_girl/attribute/static_spec.rb +1 -2
- data/spec/factory_girl/attribute_list_spec.rb +14 -4
- data/spec/factory_girl/evaluator_class_definer_spec.rb +54 -0
- data/spec/factory_girl/factory_spec.rb +23 -16
- data/spec/factory_girl/null_factory_spec.rb +2 -1
- data/spec/factory_girl/null_object_spec.rb +8 -0
- data/spec/factory_girl/proxy/attributes_for_spec.rb +8 -24
- data/spec/factory_girl/proxy/build_spec.rb +1 -7
- data/spec/factory_girl/proxy/create_spec.rb +2 -27
- data/spec/factory_girl/proxy/stub_spec.rb +14 -13
- data/spec/factory_girl/proxy_spec.rb +1 -33
- data/spec/support/shared_examples/proxy.rb +22 -45
- metadata +133 -177
@@ -114,13 +114,14 @@ FactoryGirl.factories.each do |factory|
|
|
114
114
|
|
115
115
|
if factory.build_class.respond_to?(:columns)
|
116
116
|
factory.build_class.columns.each do |column|
|
117
|
-
|
117
|
+
name = column.respond_to?(:name) ? column.name : column.to_s
|
118
|
+
human_column_name = name.downcase.gsub('_', ' ')
|
118
119
|
Given /^an? #{human_name} exists with an? #{human_column_name} of "([^"]*)"$/i do |value|
|
119
|
-
FactoryGirl.create(factory.name,
|
120
|
+
FactoryGirl.create(factory.name, name => value)
|
120
121
|
end
|
121
122
|
|
122
123
|
Given /^(\d+) #{human_name.pluralize} exist with an? #{human_column_name} of "([^"]*)"$/i do |count, value|
|
123
|
-
FactoryGirl.create_list(factory.name, count.to_i,
|
124
|
+
FactoryGirl.create_list(factory.name, count.to_i, name => value)
|
124
125
|
end
|
125
126
|
end
|
126
127
|
end
|
data/lib/factory_girl/version.rb
CHANGED
@@ -0,0 +1,19 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "aliases and overrides" do
|
4
|
+
before do
|
5
|
+
Factory.alias /one/, "two"
|
6
|
+
|
7
|
+
define_model("User", :two => :string, :one => :string)
|
8
|
+
|
9
|
+
FactoryGirl.define do
|
10
|
+
factory :user do
|
11
|
+
two "set value"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
subject { FactoryGirl.create(:user, :one => "override") }
|
17
|
+
its(:one) { should == "override" }
|
18
|
+
its(:two) { should be_nil }
|
19
|
+
end
|
@@ -40,7 +40,8 @@ describe "a generated attributes hash" do
|
|
40
40
|
end
|
41
41
|
|
42
42
|
it "doesn't assign associations" do
|
43
|
-
subject
|
43
|
+
subject.should_not have_key(:user_id)
|
44
|
+
subject.should_not have_key(:user)
|
44
45
|
end
|
45
46
|
end
|
46
47
|
|
@@ -60,6 +61,14 @@ describe "calling `attributes_for` with a block" do
|
|
60
61
|
attributes[:name].should eq('thoughtbot')
|
61
62
|
end
|
62
63
|
end
|
64
|
+
|
65
|
+
it "returns the hash of attributes" do
|
66
|
+
expected = nil
|
67
|
+
attributes_for(:company) do |attributes|
|
68
|
+
expected = attributes
|
69
|
+
"hello!"
|
70
|
+
end.should == expected
|
71
|
+
end
|
63
72
|
end
|
64
73
|
|
65
74
|
describe "`attributes_for` for a class whose constructor has required params" do
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "calling methods on the model instance" do
|
4
|
+
before do
|
5
|
+
define_model('User', :age => :integer, :age_copy => :integer) do
|
6
|
+
def age
|
7
|
+
read_attribute(:age) || 18
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
FactoryGirl.define do
|
12
|
+
factory :user do
|
13
|
+
age_copy { age }
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
context "without the attribute being overridden" do
|
19
|
+
it "returns the correct value from the instance" do
|
20
|
+
FactoryGirl.build(:user).age_copy.should == 18
|
21
|
+
end
|
22
|
+
|
23
|
+
it "returns nil during attributes_for" do
|
24
|
+
FactoryGirl.attributes_for(:user)[:age_copy].should be_nil
|
25
|
+
end
|
26
|
+
|
27
|
+
it "doesn't instantiate a record with attributes_for" do
|
28
|
+
User.stubs(:new)
|
29
|
+
FactoryGirl.attributes_for(:user)
|
30
|
+
User.should have_received(:new).never
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
context "with the attribute being overridden" do
|
35
|
+
it "uses the overridden value" do
|
36
|
+
FactoryGirl.build(:user, :age_copy => nil).age_copy.should be_nil
|
37
|
+
end
|
38
|
+
|
39
|
+
it "uses the overridden value during attributes_for" do
|
40
|
+
FactoryGirl.attributes_for(:user, :age_copy => 25)[:age_copy].should == 25
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
context "with the referenced attribute being overridden" do
|
45
|
+
it "uses the overridden value" do
|
46
|
+
FactoryGirl.build(:user, :age => nil).age_copy.should be_nil
|
47
|
+
end
|
48
|
+
|
49
|
+
it "uses the overridden value during attributes_for" do
|
50
|
+
FactoryGirl.attributes_for(:user, :age => 25)[:age_copy].should == 25
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -78,4 +78,12 @@ describe "calling `build` with a block" do
|
|
78
78
|
company.name.should eq('thoughtbot')
|
79
79
|
end
|
80
80
|
end
|
81
|
+
|
82
|
+
it "returns the built instance" do
|
83
|
+
expected = nil
|
84
|
+
build(:company) do |company|
|
85
|
+
expected = company
|
86
|
+
"hello!"
|
87
|
+
end.should == expected
|
88
|
+
end
|
81
89
|
end
|
@@ -8,6 +8,7 @@ describe "a generated stub instance" do
|
|
8
8
|
|
9
9
|
define_model('Post', :title => :string,
|
10
10
|
:body => :string,
|
11
|
+
:age => :integer,
|
11
12
|
:user_id => :integer) do
|
12
13
|
belongs_to :user
|
13
14
|
end
|
@@ -92,4 +93,12 @@ describe "calling `build_stubbed` with a block" do
|
|
92
93
|
expect { company.save }.to raise_error(RuntimeError)
|
93
94
|
end
|
94
95
|
end
|
96
|
+
|
97
|
+
it "returns the stub instance" do
|
98
|
+
expected = nil
|
99
|
+
build_stubbed(:company) do |company|
|
100
|
+
expected = company
|
101
|
+
"hello!"
|
102
|
+
end.should == expected
|
103
|
+
end
|
95
104
|
end
|
@@ -106,4 +106,12 @@ describe "calling `create` with a block" do
|
|
106
106
|
company.name.should eq('thoughtbot')
|
107
107
|
end
|
108
108
|
end
|
109
|
+
|
110
|
+
it "returns the created instance" do
|
111
|
+
expected = nil
|
112
|
+
create(:company) do |company|
|
113
|
+
expected = company
|
114
|
+
"hello!"
|
115
|
+
end.should == expected
|
116
|
+
end
|
109
117
|
end
|
@@ -7,18 +7,19 @@ describe FactoryGirl::Attribute::Association do
|
|
7
7
|
let(:association) { stub("association") }
|
8
8
|
let(:proxy) { stub("proxy", :association => association) }
|
9
9
|
|
10
|
-
subject
|
10
|
+
subject { FactoryGirl::Attribute::Association.new(name, factory, overrides) }
|
11
|
+
before { subject.stubs(:association => association) }
|
11
12
|
|
12
13
|
it { should be_association }
|
13
14
|
its(:name) { should == name }
|
14
15
|
|
15
16
|
it "builds the association when calling the proc" do
|
16
|
-
subject.to_proc
|
17
|
+
subject.to_proc.call.should == association
|
17
18
|
end
|
18
19
|
|
19
20
|
it "builds the association when calling the proc" do
|
20
|
-
subject.to_proc
|
21
|
-
|
21
|
+
subject.to_proc.call
|
22
|
+
subject.should have_received(:association).with(factory, overrides)
|
22
23
|
end
|
23
24
|
end
|
24
25
|
|
@@ -2,7 +2,6 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe FactoryGirl::Attribute::Dynamic do
|
4
4
|
let(:name) { :first_name }
|
5
|
-
let(:proxy) { stub("proxy", :set => nil) }
|
6
5
|
let(:block) { lambda { } }
|
7
6
|
|
8
7
|
subject { FactoryGirl::Attribute::Dynamic.new(name, false, block) }
|
@@ -13,28 +12,28 @@ describe FactoryGirl::Attribute::Dynamic do
|
|
13
12
|
let(:block) { lambda { "value" } }
|
14
13
|
|
15
14
|
it "returns the value when executing the proc" do
|
16
|
-
subject.to_proc
|
15
|
+
subject.to_proc.call.should == "value"
|
17
16
|
end
|
18
17
|
end
|
19
18
|
|
20
19
|
context "with a block returning its block-level variable" do
|
21
20
|
let(:block) { lambda {|thing| thing } }
|
22
21
|
|
23
|
-
it "returns
|
24
|
-
subject.to_proc
|
22
|
+
it "returns self when executing the proc" do
|
23
|
+
subject.to_proc.call.should == subject
|
25
24
|
end
|
26
25
|
end
|
27
26
|
|
28
|
-
context "with a block referencing an attribute on the
|
29
|
-
let(:block) { lambda {
|
27
|
+
context "with a block referencing an attribute on the attribute" do
|
28
|
+
let(:block) { lambda { attribute_defined_on_attribute } }
|
30
29
|
let(:result) { "other attribute value" }
|
31
30
|
|
32
31
|
before do
|
33
|
-
|
32
|
+
subject.stubs(:attribute_defined_on_attribute => result)
|
34
33
|
end
|
35
34
|
|
36
|
-
it "evaluates the attribute from the
|
37
|
-
subject.to_proc
|
35
|
+
it "evaluates the attribute from the attribute" do
|
36
|
+
subject.to_proc.call.should == result
|
38
37
|
end
|
39
38
|
end
|
40
39
|
|
@@ -42,7 +41,7 @@ describe FactoryGirl::Attribute::Dynamic do
|
|
42
41
|
let(:block) { lambda { Factory.sequence(:email) } }
|
43
42
|
|
44
43
|
it "raises a sequence abuse error" do
|
45
|
-
expect { subject.to_proc
|
44
|
+
expect { subject.to_proc.call }.to raise_error(FactoryGirl::SequenceAbuseError)
|
46
45
|
end
|
47
46
|
end
|
48
47
|
end
|
@@ -4,7 +4,6 @@ describe FactoryGirl::Attribute::Sequence do
|
|
4
4
|
let(:sequence_name) { :name }
|
5
5
|
let(:name) { :first_name }
|
6
6
|
let(:sequence) { FactoryGirl::Sequence.new(sequence_name, 5) { |n| "Name #{n}" } }
|
7
|
-
let(:proxy) { stub("proxy") }
|
8
7
|
|
9
8
|
subject { FactoryGirl::Attribute::Sequence.new(name, sequence_name, false) }
|
10
9
|
before { FactoryGirl.register_sequence(sequence) }
|
@@ -12,6 +11,6 @@ describe FactoryGirl::Attribute::Sequence do
|
|
12
11
|
its(:name) { should == name }
|
13
12
|
|
14
13
|
it "assigns the next value in the sequence" do
|
15
|
-
subject.to_proc
|
14
|
+
subject.to_proc.call.should == "Name 5"
|
16
15
|
end
|
17
16
|
end
|
@@ -3,14 +3,13 @@ require 'spec_helper'
|
|
3
3
|
describe FactoryGirl::Attribute::Static do
|
4
4
|
let(:name) { :first_name }
|
5
5
|
let(:value) { "John" }
|
6
|
-
let(:proxy) { stub("proxy") }
|
7
6
|
|
8
7
|
subject { FactoryGirl::Attribute::Static.new(name, value, false) }
|
9
8
|
|
10
9
|
its(:name) { should == name }
|
11
10
|
|
12
11
|
it "returns the value when executing the proc" do
|
13
|
-
subject.to_proc
|
12
|
+
subject.to_proc.call.should == value
|
14
13
|
end
|
15
14
|
end
|
16
15
|
|
@@ -57,12 +57,22 @@ describe FactoryGirl::AttributeList, "#apply_attributes" do
|
|
57
57
|
subject.apply_attributes(list(city_attribute, email_attribute))
|
58
58
|
subject.to_a.should == [full_name_attribute, login_attribute, city_attribute, email_attribute]
|
59
59
|
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe FactoryGirl::AttributeList, "#associations" do
|
63
|
+
let(:full_name_attribute) { FactoryGirl::Attribute::Static.new(:full_name, "value", false) }
|
64
|
+
let(:email_attribute) { FactoryGirl::Attribute::Dynamic.new(:email, false, lambda {|u| "#{u.full_name}@example.com" }) }
|
65
|
+
let(:author_attribute) { FactoryGirl::Attribute::Association.new(:author, :user, {}) }
|
66
|
+
let(:profile_attribute) { FactoryGirl::Attribute::Association.new(:profile, :profile, {}) }
|
60
67
|
|
61
|
-
|
68
|
+
before do
|
62
69
|
subject.define_attribute(full_name_attribute)
|
63
|
-
|
70
|
+
subject.define_attribute(email_attribute)
|
71
|
+
subject.define_attribute(author_attribute)
|
72
|
+
subject.define_attribute(profile_attribute)
|
73
|
+
end
|
64
74
|
|
65
|
-
|
66
|
-
subject.
|
75
|
+
it "returns associations" do
|
76
|
+
subject.associations.should == [author_attribute, profile_attribute]
|
67
77
|
end
|
68
78
|
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe FactoryGirl::EvaluatorClassDefiner do
|
4
|
+
let(:simple_attribute) { stub("simple attribute", :name => :simple, :to_proc => lambda { 1 }) }
|
5
|
+
let(:relative_attribute) { stub("relative attribute", :name => :relative, :to_proc => lambda { simple + 1 }) }
|
6
|
+
let(:attribute_that_raises_a_second_time) { stub("attribute that would raise without a cache", :name => :raises_without_proper_cache, :to_proc => lambda { raise "failed" if @run; @run = true; nil }) }
|
7
|
+
let(:callbacks) { [stub("callback 1"), stub("callback 2")] }
|
8
|
+
|
9
|
+
let(:attributes) { [simple_attribute, relative_attribute, attribute_that_raises_a_second_time] }
|
10
|
+
let(:class_definer) { FactoryGirl::EvaluatorClassDefiner.new(attributes, callbacks, FactoryGirl::Evaluator) }
|
11
|
+
let(:evaluator) { class_definer.evaluator_class.new(stub("build strategy", :add_observer => true)) }
|
12
|
+
|
13
|
+
it "returns an evaluator when accessing the evaluator class" do
|
14
|
+
evaluator.should be_a(FactoryGirl::Evaluator)
|
15
|
+
end
|
16
|
+
|
17
|
+
it "adds each attribute to the evaluator" do
|
18
|
+
evaluator.simple.should == 1
|
19
|
+
end
|
20
|
+
|
21
|
+
it "evaluates the block in the context of the evaluator" do
|
22
|
+
evaluator.relative.should == 2
|
23
|
+
end
|
24
|
+
|
25
|
+
it "only instance_execs the block once even when returning nil" do
|
26
|
+
expect {
|
27
|
+
2.times { evaluator.raises_without_proper_cache }
|
28
|
+
}.to_not raise_error
|
29
|
+
end
|
30
|
+
|
31
|
+
it "sets attributes on the evaluator class" do
|
32
|
+
class_definer.evaluator_class.attribute_lists.should == [attributes]
|
33
|
+
end
|
34
|
+
|
35
|
+
it "sets callbacks on the evaluator class" do
|
36
|
+
class_definer.evaluator_class.callbacks.should == callbacks
|
37
|
+
end
|
38
|
+
|
39
|
+
context "with a custom evaluator as a parent class" do
|
40
|
+
let(:child_callbacks) { [stub("child callback 1"), stub("child callback 2")] }
|
41
|
+
let(:child_attributes) { [stub("child attribute", :name => :simple, :to_proc => lambda { 1 })] }
|
42
|
+
let(:child_definer) { FactoryGirl::EvaluatorClassDefiner.new(child_attributes, child_callbacks, class_definer.evaluator_class) }
|
43
|
+
|
44
|
+
subject { child_definer.evaluator_class }
|
45
|
+
|
46
|
+
it "bases its attribute lists on itself and its parent evaluator" do
|
47
|
+
subject.attribute_lists.should == [attributes, child_attributes]
|
48
|
+
end
|
49
|
+
|
50
|
+
it "bases its callbacks on itself and its parent evaluator" do
|
51
|
+
subject.callbacks.should == callbacks + child_callbacks
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -25,7 +25,7 @@ describe FactoryGirl::Factory do
|
|
25
25
|
end
|
26
26
|
|
27
27
|
it "passes a custom creation block" do
|
28
|
-
proxy = stub("proxy", :result => nil)
|
28
|
+
proxy = stub("proxy", :result => nil, :add_observer => true)
|
29
29
|
FactoryGirl::Proxy::Build.stubs(:new => proxy)
|
30
30
|
block = lambda {}
|
31
31
|
factory = FactoryGirl::Factory.new(:object)
|
@@ -33,7 +33,7 @@ describe FactoryGirl::Factory do
|
|
33
33
|
|
34
34
|
factory.run(FactoryGirl::Proxy::Build, {})
|
35
35
|
|
36
|
-
proxy.should have_received(:result).with(block)
|
36
|
+
proxy.should have_received(:result).with(instance_of(FactoryGirl::AttributeAssigner), block)
|
37
37
|
end
|
38
38
|
|
39
39
|
it "returns associations" do
|
@@ -116,6 +116,25 @@ describe FactoryGirl::Factory, "when defined with a custom class" do
|
|
116
116
|
its(:build_class) { should == Float }
|
117
117
|
end
|
118
118
|
|
119
|
+
describe FactoryGirl::Factory, "when given a class that overrides #to_s" do
|
120
|
+
let(:overriding_class) { Overriding::Class }
|
121
|
+
|
122
|
+
before do
|
123
|
+
define_class("Overriding")
|
124
|
+
define_class("Overriding::Class") do
|
125
|
+
def self.to_s
|
126
|
+
"Overriding"
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
subject { FactoryGirl::Factory.new(:overriding_class, :class => Overriding::Class) }
|
132
|
+
|
133
|
+
it "sets build_class correctly" do
|
134
|
+
subject.build_class.should == overriding_class
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
119
138
|
describe FactoryGirl::Factory, "when defined with a class instead of a name" do
|
120
139
|
let(:factory_class) { ArgumentError }
|
121
140
|
let(:name) { :argument_error }
|
@@ -246,7 +265,7 @@ describe FactoryGirl::Factory, "running a factory" do
|
|
246
265
|
subject { FactoryGirl::Factory.new(:user) }
|
247
266
|
let(:attribute) { FactoryGirl::Attribute::Static.new(:name, "value", false) }
|
248
267
|
let(:declaration) { FactoryGirl::Declaration::Static.new(:name, "value", false) }
|
249
|
-
let(:proxy) { stub("proxy", :result => "result", :
|
268
|
+
let(:proxy) { stub("proxy", :result => "result", :add_observer => true) }
|
250
269
|
let(:attributes) { [attribute] }
|
251
270
|
let(:attribute_list) { stub('attribute-list', :declarations => [declaration], :to_a => attributes) }
|
252
271
|
|
@@ -254,29 +273,17 @@ describe FactoryGirl::Factory, "running a factory" do
|
|
254
273
|
define_model("User", :name => :string)
|
255
274
|
FactoryGirl::Declaration::Static.stubs(:new => declaration)
|
256
275
|
declaration.stubs(:to_attributes => attributes)
|
257
|
-
attribute.stubs(:add_to => nil)
|
258
276
|
FactoryGirl::Proxy::Build.stubs(:new => proxy)
|
259
277
|
subject.declare_attribute(declaration)
|
260
278
|
end
|
261
279
|
|
262
280
|
it "creates the right proxy using the build class when running" do
|
263
281
|
subject.run(FactoryGirl::Proxy::Build, {})
|
264
|
-
FactoryGirl::Proxy::Build.should have_received(:new).
|
265
|
-
end
|
266
|
-
|
267
|
-
it "adds the attribute to the proxy when running" do
|
268
|
-
subject.run(FactoryGirl::Proxy::Build, {})
|
269
|
-
attribute.should have_received(:add_to).with(proxy)
|
282
|
+
FactoryGirl::Proxy::Build.should have_received(:new).once
|
270
283
|
end
|
271
284
|
|
272
285
|
it "returns the result from the proxy when running" do
|
273
286
|
subject.run(FactoryGirl::Proxy::Build, {}).should == "result"
|
274
|
-
proxy.should have_received(:result).with(subject.definition.to_create)
|
275
|
-
end
|
276
|
-
|
277
|
-
it "sets overrides once on the factory" do
|
278
|
-
subject.run(FactoryGirl::Proxy::Build, { :name => "John Doe" })
|
279
|
-
proxy.should have_received(:set).once
|
280
287
|
end
|
281
288
|
|
282
289
|
it "calls the block and returns the result" do
|