factory_girl 3.2.0 → 3.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. data/Appraisals +3 -3
  2. data/GETTING_STARTED.md +74 -15
  3. data/Gemfile.lock +38 -44
  4. data/NEWS +12 -0
  5. data/gemfiles/3.0.gemfile +1 -1
  6. data/gemfiles/3.0.gemfile.lock +23 -24
  7. data/gemfiles/3.1.gemfile +1 -1
  8. data/gemfiles/3.1.gemfile.lock +19 -19
  9. data/gemfiles/3.2.gemfile +1 -1
  10. data/gemfiles/3.2.gemfile.lock +10 -10
  11. data/lib/factory_girl.rb +39 -37
  12. data/lib/factory_girl/aliases.rb +3 -4
  13. data/lib/factory_girl/attribute.rb +33 -11
  14. data/lib/factory_girl/attribute/association.rb +3 -2
  15. data/lib/factory_girl/attribute/dynamic.rb +3 -2
  16. data/lib/factory_girl/attribute/sequence.rb +1 -2
  17. data/lib/factory_girl/attribute/static.rb +3 -2
  18. data/lib/factory_girl/attribute_assigner.rb +6 -5
  19. data/lib/factory_girl/attribute_list.rb +16 -3
  20. data/lib/factory_girl/callback.rb +7 -3
  21. data/lib/factory_girl/callbacks_observer.rb +1 -0
  22. data/lib/factory_girl/configuration.rb +24 -0
  23. data/lib/factory_girl/declaration.rb +5 -4
  24. data/lib/factory_girl/declaration/association.rb +1 -0
  25. data/lib/factory_girl/declaration/dynamic.rb +1 -0
  26. data/lib/factory_girl/declaration/implicit.rb +1 -0
  27. data/lib/factory_girl/declaration/static.rb +1 -0
  28. data/lib/factory_girl/declaration_list.rb +1 -0
  29. data/lib/factory_girl/definition.rb +22 -3
  30. data/lib/factory_girl/definition_list.rb +31 -0
  31. data/lib/factory_girl/definition_proxy.rb +19 -4
  32. data/lib/factory_girl/evaluation.rb +3 -3
  33. data/lib/factory_girl/evaluator.rb +24 -14
  34. data/lib/factory_girl/evaluator_class_definer.rb +2 -13
  35. data/lib/factory_girl/factory.rb +22 -24
  36. data/lib/factory_girl/factory_runner.rb +6 -3
  37. data/lib/factory_girl/find_definitions.rb +2 -2
  38. data/lib/factory_girl/null_factory.rb +3 -1
  39. data/lib/factory_girl/null_object.rb +1 -0
  40. data/lib/factory_girl/reload.rb +4 -6
  41. data/lib/factory_girl/sequence.rb +3 -2
  42. data/lib/factory_girl/step_definitions.rb +1 -0
  43. data/lib/factory_girl/strategy/attributes_for.rb +1 -1
  44. data/lib/factory_girl/strategy/stub.rb +6 -6
  45. data/lib/factory_girl/strategy_calculator.rb +1 -0
  46. data/lib/factory_girl/strategy_syntax_method_registrar.rb +37 -0
  47. data/lib/factory_girl/syntax.rb +5 -4
  48. data/lib/factory_girl/syntax/blueprint.rb +5 -8
  49. data/lib/factory_girl/syntax/default.rb +18 -6
  50. data/lib/factory_girl/syntax/generate.rb +10 -13
  51. data/lib/factory_girl/syntax/make.rb +8 -11
  52. data/lib/factory_girl/syntax/methods.rb +76 -36
  53. data/lib/factory_girl/syntax/sham.rb +3 -2
  54. data/lib/factory_girl/syntax/vintage.rb +9 -9
  55. data/lib/factory_girl/syntax_runner.rb +1 -0
  56. data/lib/factory_girl/trait.rb +5 -4
  57. data/lib/factory_girl/version.rb +1 -2
  58. data/spec/acceptance/activesupport_instrumentation_spec.rb +15 -2
  59. data/spec/acceptance/callbacks_spec.rb +113 -9
  60. data/spec/acceptance/create_list_spec.rb +1 -1
  61. data/spec/acceptance/global_initialize_with_spec.rb +82 -0
  62. data/spec/acceptance/global_to_create_spec.rb +122 -0
  63. data/spec/acceptance/modify_factories_spec.rb +2 -2
  64. data/spec/acceptance/parent_spec.rb +1 -1
  65. data/spec/acceptance/register_strategies_spec.rb +8 -0
  66. data/spec/acceptance/syntax/vintage_spec.rb +8 -8
  67. data/spec/acceptance/traits_spec.rb +145 -3
  68. data/spec/acceptance/transient_attributes_spec.rb +1 -1
  69. data/spec/factory_girl/attribute_list_spec.rb +66 -1
  70. data/spec/factory_girl/attribute_spec.rb +1 -1
  71. data/spec/factory_girl/definition_proxy_spec.rb +6 -6
  72. data/spec/factory_girl/definition_spec.rb +22 -16
  73. data/spec/factory_girl/factory_spec.rb +6 -4
  74. data/spec/factory_girl/strategy/build_spec.rb +2 -2
  75. data/spec/factory_girl/strategy/create_spec.rb +1 -1
  76. data/spec/factory_girl/strategy/stub_spec.rb +2 -2
  77. data/spec/factory_girl/strategy_calculator_spec.rb +20 -14
  78. data/spec/support/shared_examples/strategy.rb +8 -9
  79. metadata +94 -29
  80. data/gemfiles/2.3.gemfile +0 -7
@@ -1,7 +1,7 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe FactoryGirl::Strategy::Build do
4
- it_should_behave_like "strategy with association support", FactoryGirl::Strategy::Create
4
+ it_should_behave_like "strategy with association support", :create
5
5
  it_should_behave_like "strategy with callbacks", :after_build
6
- it_should_behave_like "strategy with strategy: :build", FactoryGirl::Strategy::Build
6
+ it_should_behave_like "strategy with strategy: :build", :build
7
7
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe FactoryGirl::Strategy::Create do
4
- it_should_behave_like "strategy with association support", FactoryGirl::Strategy::Create
4
+ it_should_behave_like "strategy with association support", :create
5
5
  it_should_behave_like "strategy with callbacks", :after_build, :before_create, :after_create
6
6
 
7
7
  it "runs a custom create block" do
@@ -1,9 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe FactoryGirl::Strategy::Stub do
4
- it_should_behave_like "strategy with association support", FactoryGirl::Strategy::Stub
4
+ it_should_behave_like "strategy with association support", :build_stubbed
5
5
  it_should_behave_like "strategy with callbacks", :after_stub
6
- it_should_behave_like "strategy with strategy: :build", FactoryGirl::Strategy::Stub
6
+ it_should_behave_like "strategy with strategy: :build", :build_stubbed
7
7
 
8
8
  context "asking for a result" do
9
9
  before { Timecop.freeze(Time.now) }
@@ -1,23 +1,29 @@
1
1
  require "spec_helper"
2
2
 
3
- describe FactoryGirl::StrategyCalculator, "with a FactoryGirl::Strategy object" do
4
- let(:strategy) { FactoryGirl::Strategy::Build }
5
-
6
- it "returns the strategy object" do
7
- FactoryGirl::StrategyCalculator.new(strategy).strategy.should == strategy
8
- end
9
- end
10
-
11
3
  describe FactoryGirl::StrategyCalculator do
12
- it "returns the correct strategy object for :build" do
13
- FactoryGirl::StrategyCalculator.new(:build).strategy.should == FactoryGirl::Strategy::Build
4
+ let(:strategy) do
5
+ define_class("MyAwesomeClass")
14
6
  end
15
7
 
16
- it "returns the correct strategy object for :create" do
17
- FactoryGirl::StrategyCalculator.new(:create).strategy.should == FactoryGirl::Strategy::Create
8
+ context "when a class" do
9
+ subject { FactoryGirl::StrategyCalculator.new(strategy).strategy }
10
+
11
+ it "returns the class passed" do
12
+ subject.should == strategy
13
+ end
18
14
  end
19
15
 
20
- it "raises when passing a bogus strategy" do
21
- expect { FactoryGirl::StrategyCalculator.new(:bogus_strategy).strategy }.to raise_error(ArgumentError, /bogus_strategy/)
16
+ context "when a symbol" do
17
+ before { FactoryGirl.stubs(:strategy_by_name).returns(strategy) }
18
+ subject { FactoryGirl::StrategyCalculator.new(:build).strategy }
19
+
20
+ it "finds the strategy by name" do
21
+ subject
22
+ FactoryGirl.should have_received(:strategy_by_name).with(:build)
23
+ end
24
+
25
+ it "returns the strategy found" do
26
+ subject.should == strategy
27
+ end
22
28
  end
23
29
  end
@@ -3,7 +3,7 @@ shared_examples_for "strategy without association support" do
3
3
  let(:attribute) { FactoryGirl::Attribute::Association.new(:user, :user, {}) }
4
4
 
5
5
  def association_named(name, overrides)
6
- runner = FactoryGirl::FactoryRunner.new(name, FactoryGirl::Strategy::Build, [overrides])
6
+ runner = FactoryGirl::FactoryRunner.new(name, :build, [overrides])
7
7
  subject.association(runner)
8
8
  end
9
9
 
@@ -18,7 +18,7 @@ shared_examples_for "strategy without association support" do
18
18
  end
19
19
  end
20
20
 
21
- shared_examples_for "strategy with association support" do |factory_girl_strategy_class|
21
+ shared_examples_for "strategy with association support" do |factory_girl_strategy_name|
22
22
  let(:factory) { stub("associate_factory") }
23
23
 
24
24
  def association_named(name, strategy, overrides)
@@ -33,22 +33,21 @@ shared_examples_for "strategy with association support" do |factory_girl_strateg
33
33
  end
34
34
 
35
35
  it "runs the factory with the correct overrides" do
36
- association_named(:author, factory_girl_strategy_class, great: "value")
37
- factory.should have_received(:run).with(factory_girl_strategy_class, great: "value")
36
+ association_named(:author, factory_girl_strategy_name, great: "value")
37
+ factory.should have_received(:run).with(factory_girl_strategy_name, great: "value")
38
38
  end
39
39
 
40
40
  it "finds the factory with the correct factory name" do
41
- association_named(:author, factory_girl_strategy_class, great: "value")
41
+ association_named(:author, factory_girl_strategy_name, great: "value")
42
42
  FactoryGirl.should have_received(:factory_by_name).with(:author)
43
43
  end
44
44
  end
45
45
 
46
- shared_examples_for "strategy with strategy: :build" do |factory_girl_strategy_class|
46
+ shared_examples_for "strategy with strategy: :build" do |factory_girl_strategy_name|
47
47
  let(:factory) { stub("associate_factory") }
48
48
 
49
49
  def association_named(name, overrides)
50
- strategy = FactoryGirl::StrategyCalculator.new(overrides[:strategy]).strategy
51
- runner = FactoryGirl::FactoryRunner.new(name, strategy, [overrides.except(:strategy)])
50
+ runner = FactoryGirl::FactoryRunner.new(name, overrides[:strategy], [overrides.except(:strategy)])
52
51
  subject.association(runner)
53
52
  end
54
53
 
@@ -60,7 +59,7 @@ shared_examples_for "strategy with strategy: :build" do |factory_girl_strategy_c
60
59
 
61
60
  it "runs the factory with the correct overrides" do
62
61
  association_named(:author, strategy: :build, great: "value")
63
- factory.should have_received(:run).with(factory_girl_strategy_class, { great: "value" })
62
+ factory.should have_received(:run).with(factory_girl_strategy_name, { great: "value" })
64
63
  end
65
64
 
66
65
  it "finds the factory with the correct factory name" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: factory_girl
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.0
4
+ version: 3.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-04-24 00:00:00.000000000Z
13
+ date: 2012-05-13 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
17
- requirement: &70135979934020 !ruby/object:Gem::Requirement
17
+ requirement: !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,15 @@ dependencies:
22
22
  version: 3.0.0
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *70135979934020
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: 3.0.0
26
31
  - !ruby/object:Gem::Dependency
27
32
  name: rspec
28
- requirement: &70135979933560 !ruby/object:Gem::Requirement
33
+ requirement: !ruby/object:Gem::Requirement
29
34
  none: false
30
35
  requirements:
31
36
  - - ~>
@@ -33,10 +38,15 @@ dependencies:
33
38
  version: '2.0'
34
39
  type: :development
35
40
  prerelease: false
36
- version_requirements: *70135979933560
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ~>
45
+ - !ruby/object:Gem::Version
46
+ version: '2.0'
37
47
  - !ruby/object:Gem::Dependency
38
48
  name: cucumber
39
- requirement: &70135979933100 !ruby/object:Gem::Requirement
49
+ requirement: !ruby/object:Gem::Requirement
40
50
  none: false
41
51
  requirements:
42
52
  - - ~>
@@ -44,10 +54,15 @@ dependencies:
44
54
  version: '1.1'
45
55
  type: :development
46
56
  prerelease: false
47
- version_requirements: *70135979933100
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ~>
61
+ - !ruby/object:Gem::Version
62
+ version: '1.1'
48
63
  - !ruby/object:Gem::Dependency
49
64
  name: timecop
50
- requirement: &70135979932720 !ruby/object:Gem::Requirement
65
+ requirement: !ruby/object:Gem::Requirement
51
66
  none: false
52
67
  requirements:
53
68
  - - ! '>='
@@ -55,10 +70,15 @@ dependencies:
55
70
  version: '0'
56
71
  type: :development
57
72
  prerelease: false
58
- version_requirements: *70135979932720
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
59
79
  - !ruby/object:Gem::Dependency
60
80
  name: simplecov
61
- requirement: &70135979932260 !ruby/object:Gem::Requirement
81
+ requirement: !ruby/object:Gem::Requirement
62
82
  none: false
63
83
  requirements:
64
84
  - - ! '>='
@@ -66,10 +86,15 @@ dependencies:
66
86
  version: '0'
67
87
  type: :development
68
88
  prerelease: false
69
- version_requirements: *70135979932260
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
70
95
  - !ruby/object:Gem::Dependency
71
96
  name: aruba
72
- requirement: &70135979931840 !ruby/object:Gem::Requirement
97
+ requirement: !ruby/object:Gem::Requirement
73
98
  none: false
74
99
  requirements:
75
100
  - - ! '>='
@@ -77,10 +102,15 @@ dependencies:
77
102
  version: '0'
78
103
  type: :development
79
104
  prerelease: false
80
- version_requirements: *70135979931840
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
81
111
  - !ruby/object:Gem::Dependency
82
112
  name: mocha
83
- requirement: &70135979931420 !ruby/object:Gem::Requirement
113
+ requirement: !ruby/object:Gem::Requirement
84
114
  none: false
85
115
  requirements:
86
116
  - - ! '>='
@@ -88,10 +118,15 @@ dependencies:
88
118
  version: '0'
89
119
  type: :development
90
120
  prerelease: false
91
- version_requirements: *70135979931420
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ! '>='
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
92
127
  - !ruby/object:Gem::Dependency
93
128
  name: bourne
94
- requirement: &70135979931000 !ruby/object:Gem::Requirement
129
+ requirement: !ruby/object:Gem::Requirement
95
130
  none: false
96
131
  requirements:
97
132
  - - ! '>='
@@ -99,10 +134,15 @@ dependencies:
99
134
  version: '0'
100
135
  type: :development
101
136
  prerelease: false
102
- version_requirements: *70135979931000
137
+ version_requirements: !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
103
143
  - !ruby/object:Gem::Dependency
104
144
  name: appraisal
105
- requirement: &70135968969860 !ruby/object:Gem::Requirement
145
+ requirement: !ruby/object:Gem::Requirement
106
146
  none: false
107
147
  requirements:
108
148
  - - ~>
@@ -110,10 +150,15 @@ dependencies:
110
150
  version: '0.4'
111
151
  type: :development
112
152
  prerelease: false
113
- version_requirements: *70135968969860
153
+ version_requirements: !ruby/object:Gem::Requirement
154
+ none: false
155
+ requirements:
156
+ - - ~>
157
+ - !ruby/object:Gem::Version
158
+ version: '0.4'
114
159
  - !ruby/object:Gem::Dependency
115
160
  name: sqlite3-ruby
116
- requirement: &70135968969440 !ruby/object:Gem::Requirement
161
+ requirement: !ruby/object:Gem::Requirement
117
162
  none: false
118
163
  requirements:
119
164
  - - ! '>='
@@ -121,10 +166,15 @@ dependencies:
121
166
  version: '0'
122
167
  type: :development
123
168
  prerelease: false
124
- version_requirements: *70135968969440
169
+ version_requirements: !ruby/object:Gem::Requirement
170
+ none: false
171
+ requirements:
172
+ - - ! '>='
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
125
175
  - !ruby/object:Gem::Dependency
126
176
  name: yard
127
- requirement: &70135968968980 !ruby/object:Gem::Requirement
177
+ requirement: !ruby/object:Gem::Requirement
128
178
  none: false
129
179
  requirements:
130
180
  - - ! '>='
@@ -132,10 +182,15 @@ dependencies:
132
182
  version: '0'
133
183
  type: :development
134
184
  prerelease: false
135
- version_requirements: *70135968968980
185
+ version_requirements: !ruby/object:Gem::Requirement
186
+ none: false
187
+ requirements:
188
+ - - ! '>='
189
+ - !ruby/object:Gem::Version
190
+ version: '0'
136
191
  - !ruby/object:Gem::Dependency
137
192
  name: bluecloth
138
- requirement: &70135968968560 !ruby/object:Gem::Requirement
193
+ requirement: !ruby/object:Gem::Requirement
139
194
  none: false
140
195
  requirements:
141
196
  - - ! '>='
@@ -143,7 +198,12 @@ dependencies:
143
198
  version: '0'
144
199
  type: :development
145
200
  prerelease: false
146
- version_requirements: *70135968968560
201
+ version_requirements: !ruby/object:Gem::Requirement
202
+ none: false
203
+ requirements:
204
+ - - ! '>='
205
+ - !ruby/object:Gem::Version
206
+ version: '0'
147
207
  description: ! "factory_girl provides a framework and DSL for defining and\n using
148
208
  factories - less error-prone, more explicit, and\n all-around
149
209
  easier to work with than fixtures."
@@ -177,7 +237,6 @@ files:
177
237
  - features/step_definitions/factory_girl_steps.rb
178
238
  - features/support/env.rb
179
239
  - features/support/factories.rb
180
- - gemfiles/2.3.gemfile
181
240
  - gemfiles/3.0.gemfile
182
241
  - gemfiles/3.0.gemfile.lock
183
242
  - gemfiles/3.1.gemfile
@@ -195,6 +254,7 @@ files:
195
254
  - lib/factory_girl/attribute_list.rb
196
255
  - lib/factory_girl/callback.rb
197
256
  - lib/factory_girl/callbacks_observer.rb
257
+ - lib/factory_girl/configuration.rb
198
258
  - lib/factory_girl/declaration.rb
199
259
  - lib/factory_girl/declaration/association.rb
200
260
  - lib/factory_girl/declaration/dynamic.rb
@@ -202,6 +262,7 @@ files:
202
262
  - lib/factory_girl/declaration/static.rb
203
263
  - lib/factory_girl/declaration_list.rb
204
264
  - lib/factory_girl/definition.rb
265
+ - lib/factory_girl/definition_list.rb
205
266
  - lib/factory_girl/definition_proxy.rb
206
267
  - lib/factory_girl/disallows_duplicates_registry.rb
207
268
  - lib/factory_girl/errors.rb
@@ -223,6 +284,7 @@ files:
223
284
  - lib/factory_girl/strategy/null.rb
224
285
  - lib/factory_girl/strategy/stub.rb
225
286
  - lib/factory_girl/strategy_calculator.rb
287
+ - lib/factory_girl/strategy_syntax_method_registrar.rb
226
288
  - lib/factory_girl/syntax.rb
227
289
  - lib/factory_girl/syntax/blueprint.rb
228
290
  - lib/factory_girl/syntax/default.rb
@@ -250,6 +312,8 @@ files:
250
312
  - spec/acceptance/define_child_before_parent_spec.rb
251
313
  - spec/acceptance/definition_spec.rb
252
314
  - spec/acceptance/definition_without_block_spec.rb
315
+ - spec/acceptance/global_initialize_with_spec.rb
316
+ - spec/acceptance/global_to_create_spec.rb
253
317
  - spec/acceptance/initialize_with_spec.rb
254
318
  - spec/acceptance/modify_factories_spec.rb
255
319
  - spec/acceptance/modify_inherited_spec.rb
@@ -321,7 +385,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
321
385
  version: '0'
322
386
  requirements: []
323
387
  rubyforge_project:
324
- rubygems_version: 1.8.10
388
+ rubygems_version: 1.8.23
325
389
  signing_key:
326
390
  specification_version: 3
327
391
  summary: factory_girl provides a framework and DSL for defining and using model instance
@@ -334,7 +398,6 @@ test_files:
334
398
  - features/step_definitions/factory_girl_steps.rb
335
399
  - features/support/env.rb
336
400
  - features/support/factories.rb
337
- - gemfiles/2.3.gemfile
338
401
  - gemfiles/3.0.gemfile
339
402
  - gemfiles/3.0.gemfile.lock
340
403
  - gemfiles/3.1.gemfile
@@ -357,6 +420,8 @@ test_files:
357
420
  - spec/acceptance/define_child_before_parent_spec.rb
358
421
  - spec/acceptance/definition_spec.rb
359
422
  - spec/acceptance/definition_without_block_spec.rb
423
+ - spec/acceptance/global_initialize_with_spec.rb
424
+ - spec/acceptance/global_to_create_spec.rb
360
425
  - spec/acceptance/initialize_with_spec.rb
361
426
  - spec/acceptance/modify_factories_spec.rb
362
427
  - spec/acceptance/modify_inherited_spec.rb
data/gemfiles/2.3.gemfile DELETED
@@ -1,7 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "http://rubygems.org"
4
-
5
- gem "activerecord", "~> 2.3"
6
-
7
- gemspec :path=>"../"