factory_girl 2.1.0 → 2.1.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/.travis.yml +3 -0
- data/Changelog +9 -0
- data/GETTING_STARTED.md +47 -16
- data/Gemfile.lock +10 -9
- data/gemfiles/2.1.gemfile.lock +2 -1
- data/gemfiles/2.3.gemfile.lock +2 -1
- data/gemfiles/3.0.gemfile.lock +2 -1
- data/gemfiles/3.1.gemfile.lock +2 -1
- data/lib/factory_girl.rb +6 -3
- data/lib/factory_girl/attribute/static.rb +8 -0
- data/lib/factory_girl/attribute_list.rb +20 -12
- data/lib/factory_girl/callback.rb +30 -0
- data/lib/factory_girl/declaration.rb +19 -0
- data/lib/factory_girl/declaration/association.rb +17 -0
- data/lib/factory_girl/declaration/dynamic.rb +16 -0
- data/lib/factory_girl/declaration/implicit.rb +23 -0
- data/lib/factory_girl/declaration/static.rb +16 -0
- data/lib/factory_girl/definition_proxy.rb +6 -6
- data/lib/factory_girl/factory.rb +63 -79
- data/lib/factory_girl/proxy.rb +7 -11
- data/lib/factory_girl/proxy/attributes_for.rb +1 -0
- data/lib/factory_girl/proxy/build.rb +1 -0
- data/lib/factory_girl/proxy/stub.rb +1 -0
- data/lib/factory_girl/syntax/default.rb +4 -2
- data/lib/factory_girl/syntax/vintage.rb +1 -1
- data/lib/factory_girl/trait.rb +12 -4
- data/lib/factory_girl/version.rb +1 -1
- data/spec/acceptance/callbacks_spec.rb +7 -1
- data/spec/acceptance/modify_inherited_spec.rb +52 -0
- data/spec/acceptance/syntax/vintage_spec.rb +19 -7
- data/spec/factory_girl/attribute_list_spec.rb +18 -45
- data/spec/factory_girl/callback_spec.rb +41 -0
- data/spec/factory_girl/{attribute → declaration}/implicit_spec.rb +16 -11
- data/spec/factory_girl/definition_proxy_spec.rb +16 -12
- data/spec/factory_girl/factory_spec.rb +43 -34
- data/spec/factory_girl/proxy/create_spec.rb +7 -9
- data/spec/factory_girl/proxy_spec.rb +26 -39
- data/spec/support/shared_examples/proxy.rb +1 -1
- metadata +137 -114
- data/lib/factory_girl/attribute/callback.rb +0 -14
- data/lib/factory_girl/attribute/implicit.rb +0 -39
- data/lib/factory_girl/attribute/trait.rb +0 -22
- data/spec/factory_girl/attribute/callback_spec.rb +0 -22
@@ -12,7 +12,8 @@ describe "callbacks" do
|
|
12
12
|
end
|
13
13
|
|
14
14
|
factory :user_with_inherited_callbacks, :parent => :user_with_callbacks do
|
15
|
-
after_stub
|
15
|
+
after_stub { |user| user.last_name = 'Double-Stubby' }
|
16
|
+
after_build { |user| user.first_name = 'Child-Buildy' }
|
16
17
|
end
|
17
18
|
end
|
18
19
|
end
|
@@ -38,4 +39,9 @@ describe "callbacks" do
|
|
38
39
|
user.first_name.should == 'Stubby'
|
39
40
|
user.last_name.should == 'Double-Stubby'
|
40
41
|
end
|
42
|
+
|
43
|
+
it "runs child callback after parent callback" do
|
44
|
+
user = FactoryGirl.build(:user_with_inherited_callbacks)
|
45
|
+
user.first_name.should == 'Child-Buildy'
|
46
|
+
end
|
41
47
|
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "modifying inherited factories with traits" do
|
4
|
+
before do
|
5
|
+
define_model('User', :gender => :string, :admin => :boolean, :age => :integer)
|
6
|
+
FactoryGirl.define do
|
7
|
+
factory :user do
|
8
|
+
trait(:female) { gender "Female" }
|
9
|
+
trait(:male) { gender "Male" }
|
10
|
+
|
11
|
+
trait(:young_admin) do
|
12
|
+
admin true
|
13
|
+
age 17
|
14
|
+
end
|
15
|
+
|
16
|
+
female
|
17
|
+
young_admin
|
18
|
+
|
19
|
+
factory :female_user do
|
20
|
+
gender "Female"
|
21
|
+
age 25
|
22
|
+
end
|
23
|
+
|
24
|
+
factory :male_user do
|
25
|
+
gender "Male"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
it "returns the correct value for overridden attributes from traits" do
|
32
|
+
Factory.build(:male_user).gender.should == "Male"
|
33
|
+
end
|
34
|
+
|
35
|
+
it "returns the correct value for overridden attributes from traits defining multiple attributes" do
|
36
|
+
Factory.build(:female_user).gender.should == "Female"
|
37
|
+
Factory.build(:female_user).age.should == 25
|
38
|
+
Factory.build(:female_user).admin.should == true
|
39
|
+
end
|
40
|
+
|
41
|
+
it "allows modification of attributes created via traits" do
|
42
|
+
FactoryGirl.modify do
|
43
|
+
factory :male_user do
|
44
|
+
age 20
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
Factory.build(:male_user).gender.should == "Male"
|
49
|
+
Factory.build(:male_user).age.should == 20
|
50
|
+
Factory.build(:male_user).admin.should == true
|
51
|
+
end
|
52
|
+
end
|
@@ -46,13 +46,7 @@ describe "vintage syntax" do
|
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
|
-
describe Factory, "
|
50
|
-
before do
|
51
|
-
@parent = FactoryGirl::Factory.new(:object)
|
52
|
-
@parent.define_attribute(FactoryGirl::Attribute::Static.new(:name, 'value'))
|
53
|
-
FactoryGirl.register_factory(@parent)
|
54
|
-
end
|
55
|
-
|
49
|
+
describe Factory, "referencing a nonexistent factory as a parent" do
|
56
50
|
it "should raise an ArgumentError when trying to use a non-existent factory as parent" do
|
57
51
|
lambda {
|
58
52
|
Factory.define(:child, :parent => :nonexsitent) {}
|
@@ -220,3 +214,21 @@ describe "an attribute generated by an in-line sequence" do
|
|
220
214
|
end
|
221
215
|
end
|
222
216
|
|
217
|
+
|
218
|
+
describe "a factory with a parent" do
|
219
|
+
before do
|
220
|
+
define_model("User", :username => :string)
|
221
|
+
|
222
|
+
Factory.define(:user) do |factory|
|
223
|
+
factory.username "awesome_username"
|
224
|
+
end
|
225
|
+
|
226
|
+
Factory.define(:boring_user, :parent => :user) do |factory|
|
227
|
+
factory.username "boring_username"
|
228
|
+
end
|
229
|
+
end
|
230
|
+
|
231
|
+
it "supports defining parents" do
|
232
|
+
Factory.build(:boring_user).username.should == "boring_username"
|
233
|
+
end
|
234
|
+
end
|
@@ -47,7 +47,7 @@ end
|
|
47
47
|
|
48
48
|
describe FactoryGirl::AttributeList, "#attribute_defined?" do
|
49
49
|
let(:static_attribute) { FactoryGirl::Attribute::Static.new(:full_name, "value") }
|
50
|
-
let(:callback_attribute) { FactoryGirl::
|
50
|
+
let(:callback_attribute) { FactoryGirl::Callback.new(:after_create, lambda { }) }
|
51
51
|
let(:static_attribute_named_after_create) { FactoryGirl::Attribute::Static.new(:after_create, "funky!") }
|
52
52
|
|
53
53
|
it "knows if an attribute has been defined" do
|
@@ -58,50 +58,17 @@ describe FactoryGirl::AttributeList, "#attribute_defined?" do
|
|
58
58
|
subject.attribute_defined?(static_attribute.name).should == true
|
59
59
|
subject.attribute_defined?(:undefined_attribute).should == false
|
60
60
|
end
|
61
|
-
|
62
|
-
it "doesn't reference callbacks" do
|
63
|
-
subject.define_attribute(callback_attribute)
|
64
|
-
|
65
|
-
subject.attribute_defined?(:after_create).should == false
|
66
|
-
|
67
|
-
subject.define_attribute(static_attribute_named_after_create)
|
68
|
-
subject.attribute_defined?(:after_create).should == true
|
69
|
-
end
|
70
61
|
end
|
71
62
|
|
72
63
|
describe FactoryGirl::AttributeList, "#add_callback" do
|
73
64
|
let(:proxy_class) { mock("klass") }
|
74
65
|
let(:proxy) { FactoryGirl::Proxy.new(proxy_class) }
|
75
|
-
let(:valid_callback_names) { [:after_create, :after_build, :after_stub] }
|
76
|
-
let(:invalid_callback_names) { [:before_create, :before_build, :bogus] }
|
77
66
|
|
78
67
|
it "allows for defining adding a callback" do
|
79
|
-
subject.add_callback(:after_create
|
80
|
-
|
81
|
-
subject.first.name.should == :after_create
|
82
|
-
|
83
|
-
subject.first.add_to(proxy)
|
84
|
-
proxy.callbacks[:after_create].first.call.should == "Called after_create"
|
85
|
-
end
|
86
|
-
|
87
|
-
it "returns the callback" do
|
88
|
-
subject.add_callback(:after_create) { "Called after_create" }.should be_a(FactoryGirl::Attribute::Callback)
|
89
|
-
end
|
90
|
-
|
91
|
-
it "allows valid callback names to be assigned" do
|
92
|
-
valid_callback_names.each do |callback_name|
|
93
|
-
expect do
|
94
|
-
subject.add_callback(callback_name) { "great name!" }
|
95
|
-
end.to_not raise_error(FactoryGirl::InvalidCallbackNameError)
|
96
|
-
end
|
97
|
-
end
|
68
|
+
subject.add_callback(FactoryGirl::Callback.new(:after_create, lambda { "Called after_create" }))
|
98
69
|
|
99
|
-
|
100
|
-
|
101
|
-
expect do
|
102
|
-
subject.add_callback(callback_name) { "great name!" }
|
103
|
-
end.to raise_error(FactoryGirl::InvalidCallbackNameError, "#{callback_name} is not a valid callback name. Valid callback names are [:after_build, :after_create, :after_stub]")
|
104
|
-
end
|
70
|
+
subject.callbacks.first.name.should == :after_create
|
71
|
+
subject.callbacks.first.run(nil, nil).should == "Called after_create"
|
105
72
|
end
|
106
73
|
end
|
107
74
|
|
@@ -111,22 +78,28 @@ describe FactoryGirl::AttributeList, "#apply_attributes" do
|
|
111
78
|
let(:email_attribute) { FactoryGirl::Attribute::Dynamic.new(:email, lambda {|model| "#{model.full_name}@example.com" }) }
|
112
79
|
let(:login_attribute) { FactoryGirl::Attribute::Dynamic.new(:login, lambda {|model| "username-#{model.full_name}" }) }
|
113
80
|
|
81
|
+
def list(*attributes)
|
82
|
+
FactoryGirl::AttributeList.new.tap do |list|
|
83
|
+
attributes.each { |attribute| list.define_attribute(attribute) }
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
114
87
|
it "prepends applied attributes" do
|
115
88
|
subject.define_attribute(full_name_attribute)
|
116
|
-
subject.apply_attributes(
|
89
|
+
subject.apply_attributes(list(city_attribute))
|
117
90
|
subject.to_a.should == [city_attribute, full_name_attribute]
|
118
91
|
end
|
119
92
|
|
120
93
|
it "moves non-static attributes to the end of the list" do
|
121
94
|
subject.define_attribute(full_name_attribute)
|
122
|
-
subject.apply_attributes(
|
95
|
+
subject.apply_attributes(list(city_attribute, email_attribute))
|
123
96
|
subject.to_a.should == [city_attribute, full_name_attribute, email_attribute]
|
124
97
|
end
|
125
98
|
|
126
99
|
it "maintains order of non-static attributes" do
|
127
100
|
subject.define_attribute(full_name_attribute)
|
128
101
|
subject.define_attribute(login_attribute)
|
129
|
-
subject.apply_attributes(
|
102
|
+
subject.apply_attributes(list(city_attribute, email_attribute))
|
130
103
|
subject.to_a.should == [city_attribute, full_name_attribute, email_attribute, login_attribute]
|
131
104
|
end
|
132
105
|
|
@@ -134,7 +107,7 @@ describe FactoryGirl::AttributeList, "#apply_attributes" do
|
|
134
107
|
subject.define_attribute(full_name_attribute)
|
135
108
|
attribute_with_same_name = FactoryGirl::Attribute::Static.new(:full_name, "Benjamin Franklin")
|
136
109
|
|
137
|
-
subject.apply_attributes(
|
110
|
+
subject.apply_attributes(list(attribute_with_same_name))
|
138
111
|
subject.to_a.should == [full_name_attribute]
|
139
112
|
end
|
140
113
|
|
@@ -143,20 +116,20 @@ describe FactoryGirl::AttributeList, "#apply_attributes" do
|
|
143
116
|
|
144
117
|
it "prepends applied attributes" do
|
145
118
|
subject.define_attribute(full_name_attribute)
|
146
|
-
subject.apply_attributes(
|
119
|
+
subject.apply_attributes(list(city_attribute))
|
147
120
|
subject.to_a.should == [city_attribute, full_name_attribute]
|
148
121
|
end
|
149
122
|
|
150
123
|
it "moves non-static attributes to the end of the list" do
|
151
124
|
subject.define_attribute(full_name_attribute)
|
152
|
-
subject.apply_attributes(
|
125
|
+
subject.apply_attributes(list(city_attribute, email_attribute))
|
153
126
|
subject.to_a.should == [city_attribute, full_name_attribute, email_attribute]
|
154
127
|
end
|
155
128
|
|
156
129
|
it "maintains order of non-static attributes" do
|
157
130
|
subject.define_attribute(full_name_attribute)
|
158
131
|
subject.define_attribute(login_attribute)
|
159
|
-
subject.apply_attributes(
|
132
|
+
subject.apply_attributes(list(city_attribute, email_attribute))
|
160
133
|
subject.to_a.should == [city_attribute, full_name_attribute, email_attribute, login_attribute]
|
161
134
|
end
|
162
135
|
|
@@ -164,7 +137,7 @@ describe FactoryGirl::AttributeList, "#apply_attributes" do
|
|
164
137
|
subject.define_attribute(full_name_attribute)
|
165
138
|
attribute_with_same_name = FactoryGirl::Attribute::Static.new(:full_name, "Benjamin Franklin")
|
166
139
|
|
167
|
-
subject.apply_attributes(
|
140
|
+
subject.apply_attributes(list(attribute_with_same_name))
|
168
141
|
subject.to_a.should == [attribute_with_same_name]
|
169
142
|
end
|
170
143
|
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe FactoryGirl::Callback do
|
4
|
+
it "has a name" do
|
5
|
+
FactoryGirl::Callback.new(:after_create, lambda {}).name.should == :after_create
|
6
|
+
end
|
7
|
+
|
8
|
+
it "converts strings to symbols" do
|
9
|
+
FactoryGirl::Callback.new("after_create", lambda {}).name.should == :after_create
|
10
|
+
end
|
11
|
+
|
12
|
+
it "runs its block with no parameters" do
|
13
|
+
ran_with = nil
|
14
|
+
FactoryGirl::Callback.new(:after_create, lambda { ran_with = [] }).run(:one, :two)
|
15
|
+
ran_with.should == []
|
16
|
+
end
|
17
|
+
|
18
|
+
it "runs its block with one parameter" do
|
19
|
+
ran_with = nil
|
20
|
+
FactoryGirl::Callback.new(:after_create, lambda { |one| ran_with = [one] }).run(:one, :two)
|
21
|
+
ran_with.should == [:one]
|
22
|
+
end
|
23
|
+
|
24
|
+
it "runs its block with two parameters" do
|
25
|
+
ran_with = nil
|
26
|
+
FactoryGirl::Callback.new(:after_create, lambda { |one, two| ran_with = [one, two] }).run(:one, :two)
|
27
|
+
ran_with.should == [:one, :two]
|
28
|
+
end
|
29
|
+
|
30
|
+
it "allows valid callback names to be assigned" do
|
31
|
+
FactoryGirl::Callback::VALID_NAMES.each do |callback_name|
|
32
|
+
expect { FactoryGirl::Callback.new(callback_name, lambda {}) }.
|
33
|
+
to_not raise_error(FactoryGirl::InvalidCallbackNameError)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
it "raises if an invalid callback name is assigned" do
|
38
|
+
expect { FactoryGirl::Callback.new(:magic_fairies, lambda {}) }.
|
39
|
+
to raise_error(FactoryGirl::InvalidCallbackNameError, /magic_fairies is not a valid callback name/)
|
40
|
+
end
|
41
|
+
end
|
@@ -1,24 +1,27 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe FactoryGirl::
|
4
|
-
let(:name)
|
5
|
-
let(:proxy)
|
6
|
-
subject
|
7
|
-
|
8
|
-
its(:name) { should == name }
|
3
|
+
describe FactoryGirl::Declaration::Implicit do
|
4
|
+
let(:name) { :author }
|
5
|
+
let(:proxy) { stub("proxy") }
|
6
|
+
subject { FactoryGirl::Declaration::Implicit.new(name) }
|
7
|
+
let(:attribute) { subject.to_attributes.first }
|
9
8
|
|
10
9
|
context "with a known factory" do
|
11
10
|
before do
|
12
11
|
FactoryGirl.factories.stubs(:registered? => true)
|
13
12
|
end
|
14
13
|
|
15
|
-
it
|
14
|
+
it "generates an association" do
|
15
|
+
attribute.should be_association
|
16
|
+
end
|
16
17
|
|
17
|
-
|
18
|
+
it "generates an association with the correct factory" do
|
19
|
+
attribute.factory.should == name
|
20
|
+
end
|
18
21
|
|
19
22
|
it "associates the factory" do
|
20
23
|
proxy.stubs(:associate)
|
21
|
-
|
24
|
+
attribute.add_to(proxy)
|
22
25
|
proxy.should have_received(:associate).with(name, name, {})
|
23
26
|
end
|
24
27
|
end
|
@@ -27,11 +30,13 @@ describe FactoryGirl::Attribute::Implicit do
|
|
27
30
|
let(:sequence) { FactoryGirl::Sequence.new(name, 1) { "magic" } }
|
28
31
|
before { FactoryGirl.register_sequence(sequence) }
|
29
32
|
|
30
|
-
it
|
33
|
+
it "doesn't generate an association" do
|
34
|
+
attribute.should_not be_association
|
35
|
+
end
|
31
36
|
|
32
37
|
it "generates the sequence" do
|
33
38
|
proxy.stubs(:set)
|
34
|
-
|
39
|
+
attribute.add_to(proxy)
|
35
40
|
proxy.should have_received(:set).with(name, "magic")
|
36
41
|
end
|
37
42
|
end
|
@@ -4,14 +4,18 @@ describe FactoryGirl::DefinitionProxy do
|
|
4
4
|
let(:factory) { FactoryGirl::Factory.new(:object) }
|
5
5
|
subject { FactoryGirl::DefinitionProxy.new(factory) }
|
6
6
|
|
7
|
+
def attributes
|
8
|
+
factory.attributes
|
9
|
+
end
|
10
|
+
|
7
11
|
it "should add a static attribute for type" do
|
8
12
|
subject.type 'value'
|
9
|
-
|
13
|
+
attributes.to_a.last.should be_kind_of(FactoryGirl::Attribute::Static)
|
10
14
|
end
|
11
15
|
|
12
16
|
it "should add a static attribute for id" do
|
13
17
|
subject.id 'value'
|
14
|
-
|
18
|
+
attributes.to_a.last.should be_kind_of(FactoryGirl::Attribute::Static)
|
15
19
|
end
|
16
20
|
|
17
21
|
it "should add a static attribute when an attribute is defined with a value" do
|
@@ -19,6 +23,7 @@ describe FactoryGirl::DefinitionProxy do
|
|
19
23
|
FactoryGirl::Attribute::Static.stubs(:new => attribute)
|
20
24
|
factory.stubs(:define_attribute)
|
21
25
|
subject.add_attribute(:name, 'value')
|
26
|
+
factory.compile
|
22
27
|
factory.should have_received(:define_attribute).with(attribute)
|
23
28
|
FactoryGirl::Attribute::Static.should have_received(:new).with(:name, "value")
|
24
29
|
end
|
@@ -29,6 +34,7 @@ describe FactoryGirl::DefinitionProxy do
|
|
29
34
|
FactoryGirl::Attribute::Dynamic.stubs(:new => attribute)
|
30
35
|
factory.stubs(:define_attribute)
|
31
36
|
subject.add_attribute(:name, &block)
|
37
|
+
factory.compile
|
32
38
|
FactoryGirl::Attribute::Dynamic.should have_received(:new).with(:name, block)
|
33
39
|
factory.should have_received(:define_attribute).with(attribute)
|
34
40
|
end
|
@@ -41,7 +47,7 @@ describe FactoryGirl::DefinitionProxy do
|
|
41
47
|
|
42
48
|
it "should add an attribute with a built-in private method" do
|
43
49
|
subject.instance_eval { sleep(0.1) }
|
44
|
-
|
50
|
+
attributes.map { |attribute| attribute.name }.should == [:sleep]
|
45
51
|
end
|
46
52
|
|
47
53
|
describe "child factories" do
|
@@ -67,15 +73,6 @@ describe FactoryGirl::DefinitionProxy do
|
|
67
73
|
FactoryGirl::Sequence.should have_received(:new).with(:name, "A")
|
68
74
|
end
|
69
75
|
end
|
70
|
-
|
71
|
-
it "adds an implicit attribute when passed an undefined method without arguments or a block" do
|
72
|
-
factory.stubs(:define_attribute)
|
73
|
-
attribute = stub('attribute', :name => :name)
|
74
|
-
FactoryGirl::Attribute::Implicit.stubs(:new => attribute)
|
75
|
-
subject.send(:name)
|
76
|
-
FactoryGirl::Attribute::Implicit.should have_received(:new).with(:name, factory)
|
77
|
-
factory.should have_received(:define_attribute).with(attribute)
|
78
|
-
end
|
79
76
|
end
|
80
77
|
|
81
78
|
describe FactoryGirl::DefinitionProxy, "with a factory mock" do
|
@@ -126,12 +123,14 @@ describe FactoryGirl::DefinitionProxy, "adding attributes" do
|
|
126
123
|
|
127
124
|
it "creates a dynamic attribute" do
|
128
125
|
subject.add_attribute(attribute_name, &block)
|
126
|
+
factory.compile
|
129
127
|
FactoryGirl::Attribute::Dynamic.should have_received(:new).with(attribute_name, block)
|
130
128
|
factory.should have_received(:define_attribute).with(attribute)
|
131
129
|
end
|
132
130
|
|
133
131
|
it "creates a dynamic attribute without the method being defined" do
|
134
132
|
subject.send(attribute_name, &block)
|
133
|
+
factory.compile
|
135
134
|
FactoryGirl::Attribute::Dynamic.should have_received(:new).with(attribute_name, block)
|
136
135
|
factory.should have_received(:define_attribute).with(attribute)
|
137
136
|
end
|
@@ -142,12 +141,14 @@ describe FactoryGirl::DefinitionProxy, "adding attributes" do
|
|
142
141
|
|
143
142
|
it "creates a static attribute" do
|
144
143
|
subject.add_attribute(attribute_name, attribute_value)
|
144
|
+
factory.compile
|
145
145
|
FactoryGirl::Attribute::Static.should have_received(:new).with(attribute_name, attribute_value)
|
146
146
|
factory.should have_received(:define_attribute).with(attribute)
|
147
147
|
end
|
148
148
|
|
149
149
|
it "creates a static attribute without the method being defined" do
|
150
150
|
subject.send(attribute_name, attribute_value)
|
151
|
+
factory.compile
|
151
152
|
FactoryGirl::Attribute::Static.should have_received(:new).with(attribute_name, attribute_value)
|
152
153
|
factory.should have_received(:define_attribute).with(attribute)
|
153
154
|
end
|
@@ -179,6 +180,7 @@ describe FactoryGirl::DefinitionProxy, "#association" do
|
|
179
180
|
|
180
181
|
it "defines an association attribute with the factory name" do
|
181
182
|
subject.association(association_name, options)
|
183
|
+
factory.compile
|
182
184
|
|
183
185
|
factory.should have_received(:define_attribute).with(attribute)
|
184
186
|
FactoryGirl::Attribute::Association.should have_received(:new).with(association_name, factory_name, :name => "John Doe")
|
@@ -186,6 +188,7 @@ describe FactoryGirl::DefinitionProxy, "#association" do
|
|
186
188
|
|
187
189
|
it "defines an association attribute when the association is called implicitly" do
|
188
190
|
subject.send(association_name, options)
|
191
|
+
factory.compile
|
189
192
|
|
190
193
|
factory.should have_received(:define_attribute).with(attribute)
|
191
194
|
FactoryGirl::Attribute::Association.should have_received(:new).with(association_name, factory_name, :name => "John Doe")
|
@@ -197,6 +200,7 @@ describe FactoryGirl::DefinitionProxy, "#association" do
|
|
197
200
|
|
198
201
|
it "defines an association attribute with the association name" do
|
199
202
|
subject.association(association_name, options)
|
203
|
+
factory.compile
|
200
204
|
|
201
205
|
factory.should have_received(:define_attribute).with(attribute)
|
202
206
|
FactoryGirl::Attribute::Association.should have_received(:new).with(association_name, association_name, options)
|