factory_girl 4.4.0 → 4.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -33,27 +33,27 @@ module FactoryGirl
33
33
  end
34
34
 
35
35
  def save(*args)
36
- raise 'stubbed models are not allowed to access the database'
36
+ raise "stubbed models are not allowed to access the database - #{self.class.to_s}#save(#{args.join(",")})"
37
37
  end
38
38
 
39
39
  def destroy(*args)
40
- raise 'stubbed models are not allowed to access the database'
40
+ raise "stubbed models are not allowed to access the database - #{self.class.to_s}#destroy(#{args.join(",")})"
41
41
  end
42
42
 
43
43
  def connection
44
- raise 'stubbed models are not allowed to access the database'
44
+ raise "stubbed models are not allowed to access the database - #{self.class.to_s}#connection()"
45
45
  end
46
46
 
47
47
  def reload
48
- raise 'stubbed models are not allowed to access the database'
48
+ raise "stubbed models are not allowed to access the database - #{self.class.to_s}#reload()"
49
49
  end
50
50
 
51
51
  def update_attribute(*args)
52
- raise 'stubbed models are not allowed to access the database'
52
+ raise "stubbed models are not allowed to access the database - #{self.class.to_s}#update_attribute(#{args.join(",")})"
53
53
  end
54
54
 
55
55
  def update_column(*args)
56
- raise 'stubbed models are not allowed to access the database'
56
+ raise "stubbed models are not allowed to access the database - #{self.class.to_s}#update_column(#{args.join(",")})"
57
57
  end
58
58
  end
59
59
 
@@ -1,3 +1,3 @@
1
1
  module FactoryGirl
2
- VERSION = '4.4.0'
2
+ VERSION = '4.5.0'
3
3
  end
@@ -55,7 +55,7 @@ describe "create multiple instances" do
55
55
  end
56
56
  end
57
57
 
58
- describe "multiple creates and ignored attributes to dynamically build attribute lists" do
58
+ describe "multiple creates and transient attributes to dynamically build attribute lists" do
59
59
  before do
60
60
  define_model('User', name: :string) do
61
61
  has_many :posts
@@ -75,7 +75,7 @@ describe "multiple creates and ignored attributes to dynamically build attribute
75
75
  name "John Doe"
76
76
 
77
77
  factory :user_with_posts do
78
- ignore do
78
+ transient do
79
79
  posts_count 5
80
80
  end
81
81
 
@@ -22,7 +22,7 @@ describe "initialize_with with non-FG attributes" do
22
22
  its(:age) { should eq 21 }
23
23
  end
24
24
 
25
- describe "initialize_with with FG attributes that are ignored" do
25
+ describe "initialize_with with FG attributes that are transient" do
26
26
  include FactoryGirl::Syntax::Methods
27
27
 
28
28
  before do
@@ -34,7 +34,7 @@ describe "initialize_with with FG attributes that are ignored" do
34
34
 
35
35
  FactoryGirl.define do
36
36
  factory :user do
37
- ignore do
37
+ transient do
38
38
  name { "Handsome Chap" }
39
39
  end
40
40
 
@@ -64,7 +64,7 @@ describe "initialize_with non-ORM-backed objects" do
64
64
  sequence(:random_data) { 5.times.map { Kernel.rand(200) } }
65
65
 
66
66
  factory :report_generator do
67
- ignore do
67
+ transient do
68
68
  name "My Awesome Report"
69
69
  end
70
70
 
@@ -94,14 +94,14 @@ describe "initialize_with parent and child factories" do
94
94
 
95
95
  FactoryGirl.define do
96
96
  factory :awesome do
97
- ignore do
97
+ transient do
98
98
  name "Great"
99
99
  end
100
100
 
101
101
  initialize_with { Awesome.new(name) }
102
102
 
103
103
  factory :sub_awesome do
104
- ignore do
104
+ transient do
105
105
  name "Sub"
106
106
  end
107
107
  end
@@ -134,7 +134,7 @@ describe "initialize_with implicit constructor" do
134
134
 
135
135
  FactoryGirl.define do
136
136
  factory :awesome do
137
- ignore do
137
+ transient do
138
138
  name "Great"
139
139
  end
140
140
 
@@ -195,7 +195,7 @@ describe "initialize_with has access to all attributes for construction" do
195
195
  sequence(:email) { |n| "person#{n}@example.com" }
196
196
 
197
197
  factory :user do
198
- ignore do
198
+ transient do
199
199
  ignored "of course!"
200
200
  end
201
201
 
@@ -19,8 +19,8 @@ describe 'FactoryGirl.lint' do
19
19
  error_message = <<-ERROR_MESSAGE.strip
20
20
  The following factories are invalid:
21
21
 
22
- * user
23
- * admin_user
22
+ * user - Validation failed: Name can't be blank (ActiveRecord::RecordInvalid)
23
+ * admin_user - Validation failed: Name can't be blank (ActiveRecord::RecordInvalid)
24
24
  ERROR_MESSAGE
25
25
 
26
26
  expect do
@@ -42,14 +42,24 @@ The following factories are invalid:
42
42
  expect { FactoryGirl.lint }.not_to raise_error
43
43
  end
44
44
 
45
- it 'supports models which do not respond to #valid?' do
46
- define_class 'Thing'
45
+ it 'allows for selective linting' do
46
+ define_model 'InvalidThing', name: :string do
47
+ validates :name, presence: true
48
+ end
49
+
50
+ define_model 'ValidThing', name: :string
47
51
 
48
52
  FactoryGirl.define do
49
- factory :thing
53
+ factory :valid_thing
54
+ factory :invalid_thing
50
55
  end
51
56
 
52
- expect(Thing.new).not_to respond_to(:valid?)
53
- expect { FactoryGirl.lint }.not_to raise_error
57
+ expect do
58
+ only_valid_factories = FactoryGirl.factories.reject do |factory|
59
+ factory.name =~ /invalid/
60
+ end
61
+
62
+ FactoryGirl.lint only_valid_factories
63
+ end.not_to raise_error
54
64
  end
55
65
  end
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'setting private attributes' do
4
+ it 'raises a NoMethodError' do
5
+ define_class('User') do
6
+ private
7
+ attr_accessor :foo
8
+ end
9
+
10
+ FactoryGirl.define do
11
+ factory :user do
12
+ foo 123
13
+ end
14
+ end
15
+
16
+ expect do
17
+ FactoryGirl.build(:user)
18
+ end.to raise_error NoMethodError, /foo=/
19
+ end
20
+ end
@@ -8,7 +8,7 @@ describe "transient attributes" do
8
8
  sequence(:name) { |n| "John #{n}" }
9
9
 
10
10
  factory :user do
11
- ignore do
11
+ transient do
12
12
  four { 2 + 2 }
13
13
  rockstar true
14
14
  upcased false
@@ -67,6 +67,33 @@ describe "transient attributes" do
67
67
  expect(rockstar.name).to eq "John 1 - Rockstar"
68
68
  end
69
69
  end
70
+
71
+ context "using aliased 'ignore' method name" do
72
+ around do |example|
73
+ cached_silenced = ActiveSupport::Deprecation.silenced
74
+ ActiveSupport::Deprecation.silenced = true
75
+ example.run
76
+ ActiveSupport::Deprecation.silenced = cached_silenced
77
+ end
78
+
79
+ before do
80
+ FactoryGirl.define do
81
+ factory :user_using_ignore, class: User do
82
+ ignore do
83
+ honorific "Esteemed"
84
+ end
85
+
86
+ name { "#{honorific} Jane Doe" }
87
+ end
88
+ end
89
+ end
90
+
91
+ let(:esteemed) { FactoryGirl.create(:user_using_ignore) }
92
+
93
+ it "uses the default value of the attribute" do
94
+ expect(esteemed.name).to eq "Esteemed Jane Doe"
95
+ end
96
+ end
70
97
  end
71
98
 
72
99
  describe "transient sequences" do
@@ -75,7 +102,7 @@ describe "transient sequences" do
75
102
 
76
103
  FactoryGirl.define do
77
104
  factory :user do
78
- ignore do
105
+ transient do
79
106
  sequence(:counter)
80
107
  end
81
108
 
@@ -106,7 +133,7 @@ describe "assigning values from a transient attribute" do
106
133
 
107
134
  FactoryGirl.define do
108
135
  factory :user do
109
- ignore do
136
+ transient do
110
137
  foo { Foo.new('id-of-foo', 'name-of-foo')}
111
138
  end
112
139
 
@@ -44,12 +44,12 @@ describe FactoryGirl::DefinitionProxy, "#add_attribute when the proxy ignores at
44
44
  end
45
45
  end
46
46
 
47
- describe FactoryGirl::DefinitionProxy, "#ignore" do
47
+ describe FactoryGirl::DefinitionProxy, "#transient" do
48
48
  subject { FactoryGirl::Definition.new }
49
49
  let(:proxy) { FactoryGirl::DefinitionProxy.new(subject) }
50
50
 
51
51
  it "makes all attributes added ignored" do
52
- proxy.ignore do
52
+ proxy.transient do
53
53
  add_attribute(:attribute_name, "attribute value")
54
54
  end
55
55
 
@@ -27,11 +27,11 @@ describe FactoryGirl::Strategy::Stub do
27
27
  expect(subject.result(evaluation).created_at).to eq created_at
28
28
  end
29
29
 
30
- [:save, :destroy, :connection, :reload, :update_attribute].each do |database_method|
30
+ [:save, :destroy, :connection, :reload, :update_attribute, :update_column].each do |database_method|
31
31
  it "raises when attempting to connect to the database by calling #{database_method}" do
32
32
  expect do
33
33
  subject.result(evaluation).send(database_method)
34
- end.to raise_error(RuntimeError, "stubbed models are not allowed to access the database")
34
+ end.to raise_error(RuntimeError, "stubbed models are not allowed to access the database - #{subject.result(evaluation).class}##{database_method}()")
35
35
  end
36
36
  end
37
37
  end
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: 4.4.0
4
+ version: 4.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josh Clayton
@@ -9,160 +9,174 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-02-11 00:00:00.000000000 Z
12
+ date: 2014-10-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - '>='
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
20
  version: 3.0.0
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - '>='
25
+ - - ">="
26
26
  - !ruby/object:Gem::Version
27
27
  version: 3.0.0
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: rspec
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ~>
32
+ - - "~>"
33
33
  - !ruby/object:Gem::Version
34
34
  version: 2.12.0
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ~>
39
+ - - "~>"
40
40
  - !ruby/object:Gem::Version
41
41
  version: 2.12.0
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: cucumber
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ~>
46
+ - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: 1.2.1
48
+ version: 1.3.15
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ~>
53
+ - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: 1.2.1
55
+ version: 1.3.15
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: timecop
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - '>='
60
+ - - ">="
61
61
  - !ruby/object:Gem::Version
62
62
  version: '0'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - '>='
67
+ - - ">="
68
68
  - !ruby/object:Gem::Version
69
69
  version: '0'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: simplecov
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - '>='
74
+ - - ">="
75
75
  - !ruby/object:Gem::Version
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - '>='
81
+ - - ">="
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0'
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: aruba
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - '>='
88
+ - - ">="
89
89
  - !ruby/object:Gem::Version
90
90
  version: '0'
91
91
  type: :development
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - '>='
95
+ - - ">="
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0'
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: mocha
100
100
  requirement: !ruby/object:Gem::Requirement
101
101
  requirements:
102
- - - '>='
102
+ - - ">="
103
103
  - !ruby/object:Gem::Version
104
104
  version: 0.12.8
105
105
  type: :development
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
- - - '>='
109
+ - - ">="
110
110
  - !ruby/object:Gem::Version
111
111
  version: 0.12.8
112
112
  - !ruby/object:Gem::Dependency
113
113
  name: bourne
114
114
  requirement: !ruby/object:Gem::Requirement
115
115
  requirements:
116
- - - '>='
116
+ - - ">="
117
117
  - !ruby/object:Gem::Version
118
118
  version: '0'
119
119
  type: :development
120
120
  prerelease: false
121
121
  version_requirements: !ruby/object:Gem::Requirement
122
122
  requirements:
123
- - - '>='
123
+ - - ">="
124
124
  - !ruby/object:Gem::Version
125
125
  version: '0'
126
126
  - !ruby/object:Gem::Dependency
127
127
  name: appraisal
128
128
  requirement: !ruby/object:Gem::Requirement
129
129
  requirements:
130
- - - ~>
130
+ - - "~>"
131
131
  - !ruby/object:Gem::Version
132
- version: 0.5.1
132
+ version: 1.0.0
133
133
  type: :development
134
134
  prerelease: false
135
135
  version_requirements: !ruby/object:Gem::Requirement
136
136
  requirements:
137
- - - ~>
137
+ - - "~>"
138
138
  - !ruby/object:Gem::Version
139
- version: 0.5.1
139
+ version: 1.0.0
140
+ - !ruby/object:Gem::Dependency
141
+ name: activerecord
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: 3.0.0
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: 3.0.0
140
154
  - !ruby/object:Gem::Dependency
141
155
  name: sqlite3
142
156
  requirement: !ruby/object:Gem::Requirement
143
157
  requirements:
144
- - - '>='
158
+ - - ">="
145
159
  - !ruby/object:Gem::Version
146
160
  version: '0'
147
161
  type: :development
148
162
  prerelease: false
149
163
  version_requirements: !ruby/object:Gem::Requirement
150
164
  requirements:
151
- - - '>='
165
+ - - ">="
152
166
  - !ruby/object:Gem::Version
153
167
  version: '0'
154
168
  - !ruby/object:Gem::Dependency
155
169
  name: yard
156
170
  requirement: !ruby/object:Gem::Requirement
157
171
  requirements:
158
- - - '>='
172
+ - - ">="
159
173
  - !ruby/object:Gem::Version
160
174
  version: '0'
161
175
  type: :development
162
176
  prerelease: false
163
177
  version_requirements: !ruby/object:Gem::Requirement
164
178
  requirements:
165
- - - '>='
179
+ - - ">="
166
180
  - !ruby/object:Gem::Version
167
181
  version: '0'
168
182
  description: |-
@@ -176,14 +190,14 @@ executables: []
176
190
  extensions: []
177
191
  extra_rdoc_files: []
178
192
  files:
179
- - .autotest
180
- - .gitignore
181
- - .rspec
182
- - .simplecov
183
- - .travis.yml
184
- - .yardopts
193
+ - ".autotest"
194
+ - ".gitignore"
195
+ - ".rspec"
196
+ - ".simplecov"
197
+ - ".travis.yml"
198
+ - ".yardopts"
185
199
  - Appraisals
186
- - CONTRIBUTION_GUIDELINES.md
200
+ - CONTRIBUTING.md
187
201
  - GETTING_STARTED.md
188
202
  - Gemfile
189
203
  - Gemfile.lock
@@ -204,6 +218,8 @@ files:
204
218
  - gemfiles/3.2.gemfile.lock
205
219
  - gemfiles/4.0.gemfile
206
220
  - gemfiles/4.0.gemfile.lock
221
+ - gemfiles/4.1.gemfile
222
+ - gemfiles/4.1.gemfile.lock
207
223
  - lib/factory_girl.rb
208
224
  - lib/factory_girl/aliases.rb
209
225
  - lib/factory_girl/attribute.rb
@@ -238,6 +254,7 @@ files:
238
254
  - lib/factory_girl/factory.rb
239
255
  - lib/factory_girl/factory_runner.rb
240
256
  - lib/factory_girl/find_definitions.rb
257
+ - lib/factory_girl/linter.rb
241
258
  - lib/factory_girl/null_factory.rb
242
259
  - lib/factory_girl/null_object.rb
243
260
  - lib/factory_girl/registry.rb
@@ -285,6 +302,7 @@ files:
285
302
  - spec/acceptance/nested_attributes_spec.rb
286
303
  - spec/acceptance/overrides_spec.rb
287
304
  - spec/acceptance/parent_spec.rb
305
+ - spec/acceptance/private_attributes_spec.rb
288
306
  - spec/acceptance/register_strategies_spec.rb
289
307
  - spec/acceptance/sequence_context_spec.rb
290
308
  - spec/acceptance/sequence_spec.rb
@@ -336,17 +354,17 @@ require_paths:
336
354
  - lib
337
355
  required_ruby_version: !ruby/object:Gem::Requirement
338
356
  requirements:
339
- - - '>='
357
+ - - ">="
340
358
  - !ruby/object:Gem::Version
341
359
  version: 1.9.2
342
360
  required_rubygems_version: !ruby/object:Gem::Requirement
343
361
  requirements:
344
- - - '>='
362
+ - - ">="
345
363
  - !ruby/object:Gem::Version
346
364
  version: '0'
347
365
  requirements: []
348
366
  rubyforge_project:
349
- rubygems_version: 2.1.5
367
+ rubygems_version: 2.2.2
350
368
  signing_key:
351
369
  specification_version: 4
352
370
  summary: factory_girl provides a framework and DSL for defining and using model instance
@@ -364,6 +382,8 @@ test_files:
364
382
  - gemfiles/3.2.gemfile.lock
365
383
  - gemfiles/4.0.gemfile
366
384
  - gemfiles/4.0.gemfile.lock
385
+ - gemfiles/4.1.gemfile
386
+ - gemfiles/4.1.gemfile.lock
367
387
  - spec/acceptance/activesupport_instrumentation_spec.rb
368
388
  - spec/acceptance/aliases_spec.rb
369
389
  - spec/acceptance/attribute_aliases_spec.rb
@@ -393,6 +413,7 @@ test_files:
393
413
  - spec/acceptance/nested_attributes_spec.rb
394
414
  - spec/acceptance/overrides_spec.rb
395
415
  - spec/acceptance/parent_spec.rb
416
+ - spec/acceptance/private_attributes_spec.rb
396
417
  - spec/acceptance/register_strategies_spec.rb
397
418
  - spec/acceptance/sequence_context_spec.rb
398
419
  - spec/acceptance/sequence_spec.rb