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.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -0
  3. data/GETTING_STARTED.md +143 -137
  4. data/Gemfile.lock +1 -1
  5. data/LICENSE +1 -1
  6. data/NEWS +14 -0
  7. data/README.md +4 -4
  8. data/gemfiles/3.1.gemfile.lock +1 -1
  9. data/gemfiles/3.2.gemfile.lock +1 -1
  10. data/gemfiles/4.0.gemfile.lock +1 -1
  11. data/lib/factory_girl.rb +20 -0
  12. data/lib/factory_girl/attribute_assigner.rb +1 -1
  13. data/lib/factory_girl/attribute_list.rb +1 -1
  14. data/lib/factory_girl/callbacks_observer.rb +1 -1
  15. data/lib/factory_girl/configuration.rb +1 -1
  16. data/lib/factory_girl/declaration_list.rb +2 -2
  17. data/lib/factory_girl/definition.rb +7 -7
  18. data/lib/factory_girl/errors.rb +3 -0
  19. data/lib/factory_girl/factory.rb +2 -2
  20. data/lib/factory_girl/find_definitions.rb +1 -1
  21. data/lib/factory_girl/version.rb +1 -1
  22. data/spec/acceptance/callbacks_spec.rb +4 -4
  23. data/spec/acceptance/global_to_create_spec.rb +3 -3
  24. data/spec/acceptance/initialize_with_spec.rb +2 -2
  25. data/spec/acceptance/keyed_by_class_spec.rb +1 -1
  26. data/spec/acceptance/lint_spec.rb +55 -0
  27. data/spec/acceptance/modify_factories_spec.rb +1 -1
  28. data/spec/acceptance/nested_attributes_spec.rb +1 -1
  29. data/spec/acceptance/parent_spec.rb +1 -1
  30. data/spec/acceptance/sequence_context_spec.rb +4 -4
  31. data/spec/acceptance/sequence_spec.rb +2 -2
  32. data/spec/acceptance/syntax_methods_within_dynamic_attributes_spec.rb +2 -2
  33. data/spec/acceptance/traits_spec.rb +12 -12
  34. data/spec/acceptance/transient_attributes_spec.rb +1 -1
  35. data/spec/factory_girl/attribute/dynamic_spec.rb +1 -1
  36. data/spec/factory_girl/definition_proxy_spec.rb +1 -1
  37. data/spec/factory_girl/definition_spec.rb +7 -1
  38. data/spec/factory_girl/sequence_spec.rb +4 -4
  39. data/spec/support/matchers/trait.rb +3 -1
  40. 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
@@ -5,7 +5,7 @@ describe "transient attributes" do
5
5
  define_model("User", name: :string, email: :string)
6
6
 
7
7
  FactoryGirl.define do
8
- sequence(:name) {|n| "John #{n}" }
8
+ sequence(:name) { |n| "John #{n}" }
9
9
 
10
10
  factory :user do
11
11
  ignore 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 eq [trait_1, trait_2]
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.include?(FactoryGirl::Trait.new(trait_name, &@block))
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.3.0
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: 2013-11-04 00:00:00.000000000 Z
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