factory_girl 4.3.0 → 4.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -0
- data/GETTING_STARTED.md +143 -137
- data/Gemfile.lock +1 -1
- data/LICENSE +1 -1
- data/NEWS +14 -0
- data/README.md +4 -4
- data/gemfiles/3.1.gemfile.lock +1 -1
- data/gemfiles/3.2.gemfile.lock +1 -1
- data/gemfiles/4.0.gemfile.lock +1 -1
- data/lib/factory_girl.rb +20 -0
- data/lib/factory_girl/attribute_assigner.rb +1 -1
- data/lib/factory_girl/attribute_list.rb +1 -1
- data/lib/factory_girl/callbacks_observer.rb +1 -1
- data/lib/factory_girl/configuration.rb +1 -1
- data/lib/factory_girl/declaration_list.rb +2 -2
- data/lib/factory_girl/definition.rb +7 -7
- data/lib/factory_girl/errors.rb +3 -0
- data/lib/factory_girl/factory.rb +2 -2
- data/lib/factory_girl/find_definitions.rb +1 -1
- data/lib/factory_girl/version.rb +1 -1
- data/spec/acceptance/callbacks_spec.rb +4 -4
- data/spec/acceptance/global_to_create_spec.rb +3 -3
- data/spec/acceptance/initialize_with_spec.rb +2 -2
- data/spec/acceptance/keyed_by_class_spec.rb +1 -1
- data/spec/acceptance/lint_spec.rb +55 -0
- data/spec/acceptance/modify_factories_spec.rb +1 -1
- data/spec/acceptance/nested_attributes_spec.rb +1 -1
- data/spec/acceptance/parent_spec.rb +1 -1
- data/spec/acceptance/sequence_context_spec.rb +4 -4
- data/spec/acceptance/sequence_spec.rb +2 -2
- data/spec/acceptance/syntax_methods_within_dynamic_attributes_spec.rb +2 -2
- data/spec/acceptance/traits_spec.rb +12 -12
- data/spec/acceptance/transient_attributes_spec.rb +1 -1
- data/spec/factory_girl/attribute/dynamic_spec.rb +1 -1
- data/spec/factory_girl/definition_proxy_spec.rb +1 -1
- data/spec/factory_girl/definition_spec.rb +7 -1
- data/spec/factory_girl/sequence_spec.rb +4 -4
- data/spec/support/matchers/trait.rb +3 -1
- metadata +4 -2
@@ -33,7 +33,7 @@ describe "sequences" do
|
|
33
33
|
|
34
34
|
it "generates aliases for the sequence that reference the same block" do
|
35
35
|
FactoryGirl.define do
|
36
|
-
sequence(:size, aliases: [:count, :length]) {|n| "called-#{n}" }
|
36
|
+
sequence(:size, aliases: [:count, :length]) { |n| "called-#{n}" }
|
37
37
|
end
|
38
38
|
|
39
39
|
first_value = generate(:size)
|
@@ -47,7 +47,7 @@ describe "sequences" do
|
|
47
47
|
|
48
48
|
it "generates aliases for the sequence that reference the same block and retains value" do
|
49
49
|
FactoryGirl.define do
|
50
|
-
sequence(:size, "a", aliases: [:count, :length]) {|n| "called-#{n}" }
|
50
|
+
sequence(:size, "a", aliases: [:count, :length]) { |n| "called-#{n}" }
|
51
51
|
end
|
52
52
|
|
53
53
|
first_value = generate(:size)
|
@@ -12,7 +12,7 @@ describe "syntax methods within dynamic attributes" do
|
|
12
12
|
define_model("User", email: :string)
|
13
13
|
|
14
14
|
FactoryGirl.define do
|
15
|
-
sequence(:email_address) {|n| "person-#{n}@example.com" }
|
15
|
+
sequence(:email_address) { |n| "person-#{n}@example.com" }
|
16
16
|
|
17
17
|
factory :user do
|
18
18
|
email { generate(:email_address) }
|
@@ -42,7 +42,7 @@ describe "syntax methods within dynamic attributes" do
|
|
42
42
|
it 'allows syntax methods to be used when the block has an arity of 1' do
|
43
43
|
FactoryGirl.define do
|
44
44
|
factory :post_using_block_with_variable, parent: :post do
|
45
|
-
user {|_| build(:user) }
|
45
|
+
user { |_| build(:user) }
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
@@ -187,11 +187,11 @@ describe "traits with callbacks" do
|
|
187
187
|
name "John"
|
188
188
|
|
189
189
|
trait :great do
|
190
|
-
after(:create) {|user| user.name.upcase! }
|
190
|
+
after(:create) { |user| user.name.upcase! }
|
191
191
|
end
|
192
192
|
|
193
193
|
trait :awesome do
|
194
|
-
after(:create) {|user| user.name = "awesome" }
|
194
|
+
after(:create) { |user| user.name = "awesome" }
|
195
195
|
end
|
196
196
|
|
197
197
|
factory :caps_user, traits: [:great]
|
@@ -232,7 +232,7 @@ describe "traits added via strategy" do
|
|
232
232
|
end
|
233
233
|
|
234
234
|
trait :great do
|
235
|
-
after(:create) {|user| user.name.upcase! }
|
235
|
+
after(:create) { |user| user.name.upcase! }
|
236
236
|
end
|
237
237
|
end
|
238
238
|
end
|
@@ -427,11 +427,11 @@ describe "traits with to_create" do
|
|
427
427
|
FactoryGirl.define do
|
428
428
|
factory :user do
|
429
429
|
trait :with_to_create do
|
430
|
-
to_create {|instance| instance.name = "to_create" }
|
430
|
+
to_create { |instance| instance.name = "to_create" }
|
431
431
|
end
|
432
432
|
|
433
433
|
factory :sub_user do
|
434
|
-
to_create {|instance| instance.name = "sub" }
|
434
|
+
to_create { |instance| instance.name = "sub" }
|
435
435
|
|
436
436
|
factory :child_user
|
437
437
|
end
|
@@ -444,7 +444,7 @@ describe "traits with to_create" do
|
|
444
444
|
|
445
445
|
factory :sub_user_with_trait_and_override do
|
446
446
|
with_to_create
|
447
|
-
to_create {|instance| instance.name = "sub with trait and override" }
|
447
|
+
to_create { |instance| instance.name = "sub with trait and override" }
|
448
448
|
|
449
449
|
factory :child_user_with_trait_and_override
|
450
450
|
end
|
@@ -479,7 +479,7 @@ describe "traits with to_create" do
|
|
479
479
|
it "gives additional traits higher priority than base traits and factory definition" do
|
480
480
|
FactoryGirl.define do
|
481
481
|
trait :overridden do
|
482
|
-
to_create {|instance| instance.name = "completely overridden" }
|
482
|
+
to_create { |instance| instance.name = "completely overridden" }
|
483
483
|
end
|
484
484
|
end
|
485
485
|
|
@@ -588,7 +588,7 @@ describe "nested implicit traits" do
|
|
588
588
|
FactoryGirl.define do
|
589
589
|
trait :female do
|
590
590
|
gender "female"
|
591
|
-
to_create {|instance| instance.gender = instance.gender.upcase }
|
591
|
+
to_create { |instance| instance.gender = instance.gender.upcase }
|
592
592
|
end
|
593
593
|
|
594
594
|
trait :jane_doe do
|
@@ -597,7 +597,7 @@ describe "nested implicit traits" do
|
|
597
597
|
|
598
598
|
trait :admin do
|
599
599
|
role "admin"
|
600
|
-
after(:build) {|instance| instance.role = instance.role.upcase }
|
600
|
+
after(:build) { |instance| instance.role = instance.role.upcase }
|
601
601
|
end
|
602
602
|
|
603
603
|
trait :female_admin do
|
@@ -619,7 +619,7 @@ describe "nested implicit traits" do
|
|
619
619
|
factory :user do
|
620
620
|
trait :female do
|
621
621
|
gender "female"
|
622
|
-
to_create {|instance| instance.gender = instance.gender.upcase }
|
622
|
+
to_create { |instance| instance.gender = instance.gender.upcase }
|
623
623
|
end
|
624
624
|
|
625
625
|
trait :jane_doe do
|
@@ -628,7 +628,7 @@ describe "nested implicit traits" do
|
|
628
628
|
|
629
629
|
trait :admin do
|
630
630
|
role "admin"
|
631
|
-
after(:build) {|instance| instance.role = instance.role.upcase }
|
631
|
+
after(:build) { |instance| instance.role = instance.role.upcase }
|
632
632
|
end
|
633
633
|
|
634
634
|
trait :female_admin do
|
@@ -653,7 +653,7 @@ describe "implicit traits containing callbacks" do
|
|
653
653
|
value 0
|
654
654
|
|
655
655
|
trait :trait_with_callback do
|
656
|
-
after(:build) {|user| user.value += 1 }
|
656
|
+
after(:build) { |user| user.value += 1 }
|
657
657
|
end
|
658
658
|
|
659
659
|
factory :user_with_trait_with_callback do
|
@@ -38,7 +38,7 @@ describe FactoryGirl::Attribute::Dynamic do
|
|
38
38
|
end
|
39
39
|
|
40
40
|
context "with a block returning a sequence" do
|
41
|
-
let(:block) { -> { FactoryGirl.register_sequence(FactoryGirl::Sequence.new(:email, 1) {|n| "foo#{n}" }) } }
|
41
|
+
let(:block) { -> { FactoryGirl.register_sequence(FactoryGirl::Sequence.new(:email, 1) { |n| "foo#{n}" }) } }
|
42
42
|
|
43
43
|
it "raises a sequence abuse error" do
|
44
44
|
expect { subject.to_proc.call }.to raise_error(FactoryGirl::SequenceAbuseError)
|
@@ -100,7 +100,7 @@ describe FactoryGirl::DefinitionProxy, "#sequence" do
|
|
100
100
|
end
|
101
101
|
|
102
102
|
it "creates a new sequence with a block" do
|
103
|
-
sequence_block = Proc.new {|n| "user+#{n}@example.com" }
|
103
|
+
sequence_block = Proc.new { |n| "user+#{n}@example.com" }
|
104
104
|
proxy.sequence(:great, 1, &sequence_block)
|
105
105
|
expect(FactoryGirl::Sequence).to have_received(:new).with(:great, 1, &sequence_block)
|
106
106
|
end
|
@@ -32,7 +32,13 @@ describe FactoryGirl::Definition, "defining traits" do
|
|
32
32
|
it "maintains a list of traits" do
|
33
33
|
subject.define_trait(trait_1)
|
34
34
|
subject.define_trait(trait_2)
|
35
|
-
expect(subject.defined_traits).to
|
35
|
+
expect(subject.defined_traits).to include(trait_1, trait_2)
|
36
|
+
end
|
37
|
+
|
38
|
+
it "adds only unique traits" do
|
39
|
+
subject.define_trait(trait_1)
|
40
|
+
subject.define_trait(trait_1)
|
41
|
+
expect(subject.defined_traits.size).to eq 1
|
36
42
|
end
|
37
43
|
end
|
38
44
|
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe FactoryGirl::Sequence do
|
4
4
|
describe "a basic sequence" do
|
5
5
|
let(:name) { :test }
|
6
|
-
subject { FactoryGirl::Sequence.new(name) {|n| "=#{n}" } }
|
6
|
+
subject { FactoryGirl::Sequence.new(name) { |n| "=#{n}" } }
|
7
7
|
|
8
8
|
its(:name) { should eq name }
|
9
9
|
its(:names) { should eq [name] }
|
@@ -16,7 +16,7 @@ describe FactoryGirl::Sequence do
|
|
16
16
|
end
|
17
17
|
|
18
18
|
describe "a custom sequence" do
|
19
|
-
subject { FactoryGirl::Sequence.new(:name, "A") {|n| "=#{n}" } }
|
19
|
+
subject { FactoryGirl::Sequence.new(:name, "A") { |n| "=#{n}" } }
|
20
20
|
its(:next) { should eq "=A" }
|
21
21
|
|
22
22
|
describe "when incrementing" do
|
@@ -67,7 +67,7 @@ describe FactoryGirl::Sequence do
|
|
67
67
|
end
|
68
68
|
|
69
69
|
describe "iterating over items in an enumerator" do
|
70
|
-
subject { FactoryGirl::Sequence.new(:name, %w[foo bar].to_enum) {|n| "=#{n}" } }
|
70
|
+
subject { FactoryGirl::Sequence.new(:name, %w[foo bar].to_enum) { |n| "=#{n}" } }
|
71
71
|
|
72
72
|
it "navigates to the next items until no items remain" do
|
73
73
|
expect(subject.next).to eq "=foo"
|
@@ -77,7 +77,7 @@ describe FactoryGirl::Sequence do
|
|
77
77
|
end
|
78
78
|
|
79
79
|
describe "a custom sequence and scope" do
|
80
|
-
subject { FactoryGirl::Sequence.new(:name, 'A') {|n| "=#{n}#{foo}" } }
|
80
|
+
subject { FactoryGirl::Sequence.new(:name, 'A') { |n| "=#{n}#{foo}" } }
|
81
81
|
let(:scope) { stub('scope', foo: 'attribute') }
|
82
82
|
|
83
83
|
it 'increments within the correct scope' do
|
@@ -1,6 +1,8 @@
|
|
1
1
|
RSpec::Matchers.define :have_trait do |trait_name|
|
2
2
|
match do |instance|
|
3
|
-
instance.defined_traits.
|
3
|
+
instance.defined_traits.any? do |trait|
|
4
|
+
trait.name == trait_name && trait.send(:block) == @block
|
5
|
+
end
|
4
6
|
end
|
5
7
|
|
6
8
|
chain :with_block do |block|
|
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
|
+
version: 4.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josh Clayton
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2014-02-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -279,6 +279,7 @@ files:
|
|
279
279
|
- spec/acceptance/global_to_create_spec.rb
|
280
280
|
- spec/acceptance/initialize_with_spec.rb
|
281
281
|
- spec/acceptance/keyed_by_class_spec.rb
|
282
|
+
- spec/acceptance/lint_spec.rb
|
282
283
|
- spec/acceptance/modify_factories_spec.rb
|
283
284
|
- spec/acceptance/modify_inherited_spec.rb
|
284
285
|
- spec/acceptance/nested_attributes_spec.rb
|
@@ -386,6 +387,7 @@ test_files:
|
|
386
387
|
- spec/acceptance/global_to_create_spec.rb
|
387
388
|
- spec/acceptance/initialize_with_spec.rb
|
388
389
|
- spec/acceptance/keyed_by_class_spec.rb
|
390
|
+
- spec/acceptance/lint_spec.rb
|
389
391
|
- spec/acceptance/modify_factories_spec.rb
|
390
392
|
- spec/acceptance/modify_inherited_spec.rb
|
391
393
|
- spec/acceptance/nested_attributes_spec.rb
|