factory_girl 2.3.0 → 2.3.1

Sign up to get free protection for your applications and to get access to all the features.
data/Changelog CHANGED
@@ -1,3 +1,12 @@
1
+ 2.3.1 (November 23, 2011)
2
+ Remove internally-used associate method from all the FactoryGirl::Proxy subclasses
3
+ Move around requiring of files
4
+ Consolidate errors into factory_girl.rb
5
+ Refactor AttributeList to deal with priority only when iterating over
6
+ attributes
7
+ Refactor internals of some of the Proxy subclasses
8
+ Ensure callbacks on traits are executed in the correct order
9
+
1
10
  2.3.0 (November 18, 2011)
2
11
  Registries are named, resulting in better messages when factories, traits,
3
12
  or sequences cannot be found
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- factory_girl (2.3.0)
4
+ factory_girl (2.3.1)
5
5
  activesupport
6
6
 
7
7
  GEM
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: /Users/joshuaclayton/dev/gems/factory_girl
3
3
  specs:
4
- factory_girl (2.3.0)
4
+ factory_girl (2.3.1)
5
5
  activesupport
6
6
 
7
7
  GEM
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: /Users/joshuaclayton/dev/gems/factory_girl
3
3
  specs:
4
- factory_girl (2.3.0)
4
+ factory_girl (2.3.1)
5
5
  activesupport
6
6
 
7
7
  GEM
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: /Users/joshuaclayton/dev/gems/factory_girl
3
3
  specs:
4
- factory_girl (2.3.0)
4
+ factory_girl (2.3.1)
5
5
  activesupport
6
6
 
7
7
  GEM
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: /Users/joshuaclayton/dev/gems/factory_girl
3
3
  specs:
4
- factory_girl (2.3.0)
4
+ factory_girl (2.3.1)
5
5
  activesupport
6
6
 
7
7
  GEM
data/lib/factory_girl.rb CHANGED
@@ -1,34 +1,20 @@
1
1
  require "active_support/core_ext/module/delegation"
2
2
 
3
3
  require 'factory_girl/proxy'
4
- require 'factory_girl/proxy/build'
5
- require 'factory_girl/proxy/create'
6
- require 'factory_girl/proxy/attributes_for'
7
- require 'factory_girl/proxy/stub'
8
4
  require 'factory_girl/registry'
9
5
  require 'factory_girl/null_factory'
10
6
  require 'factory_girl/factory'
11
7
  require 'factory_girl/attribute'
12
- require 'factory_girl/attribute/static'
13
- require 'factory_girl/attribute/dynamic'
14
- require 'factory_girl/attribute/association'
15
- require 'factory_girl/attribute/sequence'
16
8
  require 'factory_girl/callback'
17
9
  require 'factory_girl/declaration_list'
18
10
  require 'factory_girl/declaration'
19
- require 'factory_girl/declaration/static'
20
- require 'factory_girl/declaration/dynamic'
21
- require 'factory_girl/declaration/association'
22
- require 'factory_girl/declaration/implicit'
23
11
  require 'factory_girl/sequence'
24
12
  require 'factory_girl/attribute_list'
25
13
  require 'factory_girl/trait'
26
14
  require 'factory_girl/aliases'
27
15
  require 'factory_girl/definition'
28
16
  require 'factory_girl/definition_proxy'
29
- require 'factory_girl/syntax/methods'
30
- require 'factory_girl/syntax/default'
31
- require 'factory_girl/syntax/vintage'
17
+ require 'factory_girl/syntax'
32
18
  require 'factory_girl/find_definitions'
33
19
  require 'factory_girl/reload'
34
20
  require 'factory_girl/deprecated'
@@ -48,6 +34,15 @@ module FactoryGirl
48
34
  # Raised when a factory is defined with the same name as a previously-defined factory.
49
35
  class DuplicateDefinitionError < RuntimeError; end
50
36
 
37
+ # Raised when calling Factory.sequence from a dynamic attribute block
38
+ class SequenceAbuseError < RuntimeError; end
39
+
40
+ # Raised when defining an invalid attribute:
41
+ # * Defining an attribute which has a name ending in "="
42
+ # * Defining an attribute with both a static and lazy value
43
+ # * Defining an attribute twice in the same factory
44
+ class AttributeDefinitionError < RuntimeError; end
45
+
51
46
  def self.factories
52
47
  @factories ||= Registry.new("Factory")
53
48
  end
@@ -1,11 +1,9 @@
1
- module FactoryGirl
1
+ require "factory_girl/attribute/static"
2
+ require "factory_girl/attribute/dynamic"
3
+ require "factory_girl/attribute/association"
4
+ require "factory_girl/attribute/sequence"
2
5
 
3
- # Raised when defining an invalid attribute:
4
- # * Defining an attribute which has a name ending in "="
5
- # * Defining an attribute with both a static and lazy value
6
- # * Defining an attribute twice in the same factory
7
- class AttributeDefinitionError < RuntimeError
8
- end
6
+ module FactoryGirl
9
7
 
10
8
  class Attribute #:nodoc:
11
9
  include Comparable
@@ -55,9 +53,9 @@ module FactoryGirl
55
53
 
56
54
  def set_proxy_value(proxy, value)
57
55
  if @ignored
58
- proxy.set_ignored(name, value)
56
+ proxy.set_ignored(self, value)
59
57
  else
60
- proxy.set(name, value)
58
+ proxy.set(self, value)
61
59
  end
62
60
  end
63
61
  end
@@ -10,7 +10,7 @@ module FactoryGirl
10
10
  end
11
11
 
12
12
  def add_to(proxy)
13
- proxy.associate(name, @factory, @overrides)
13
+ proxy.set(self, proxy.association(@factory, @overrides))
14
14
  end
15
15
 
16
16
  def association?
@@ -4,7 +4,7 @@ module FactoryGirl
4
4
 
5
5
  def initialize(name = nil)
6
6
  @name = name
7
- @attributes = {}
7
+ @attributes = []
8
8
  end
9
9
 
10
10
  def define_attribute(attribute)
@@ -15,7 +15,7 @@ module FactoryGirl
15
15
  end
16
16
 
17
17
  def each(&block)
18
- flattened_attributes.each(&block)
18
+ sorted_attributes.each(&block)
19
19
  end
20
20
 
21
21
  def apply_attributes(attributes_to_apply)
@@ -33,21 +33,19 @@ module FactoryGirl
33
33
  private
34
34
 
35
35
  def add_attribute(attribute)
36
- @attributes[attribute.priority] ||= []
37
- @attributes[attribute.priority] << attribute
36
+ @attributes << attribute
38
37
  attribute
39
38
  end
40
39
 
41
40
  def prepend_attributes(new_attributes)
42
- new_attributes.group_by {|attr| attr.priority }.each do |priority, attributes|
43
- @attributes[priority] ||= []
44
- @attributes[priority].unshift *attributes
45
- end
41
+ @attributes.unshift *new_attributes
46
42
  end
47
43
 
48
- def flattened_attributes
49
- @attributes.keys.sort.inject([]) do |result, key|
50
- result << @attributes[key]
44
+ def sorted_attributes
45
+ attributes_hash = attributes_hash_by_priority
46
+
47
+ attributes_hash.keys.sort.inject([]) do |result, key|
48
+ result << attributes_hash[key]
51
49
  result
52
50
  end.flatten
53
51
  end
@@ -69,16 +67,20 @@ module FactoryGirl
69
67
  end
70
68
 
71
69
  def find_attribute(attribute_name)
72
- @attributes.values.flatten.detect do |attribute|
70
+ @attributes.detect do |attribute|
73
71
  attribute.name == attribute_name
74
72
  end
75
73
  end
76
74
 
77
75
  def delete_attribute(attribute_name)
78
- if attribute_defined?(attribute_name)
79
- @attributes.each_value do |attributes|
80
- attributes.delete_if {|attrib| attrib.name == attribute_name }
81
- end
76
+ @attributes.delete_if {|attrib| attrib.name == attribute_name }
77
+ end
78
+
79
+ def attributes_hash_by_priority
80
+ @attributes.inject({}) do |result, attribute|
81
+ result[attribute.priority] ||= []
82
+ result[attribute.priority] << attribute
83
+ result
82
84
  end
83
85
  end
84
86
  end
@@ -1,3 +1,8 @@
1
+ require "factory_girl/declaration/static"
2
+ require "factory_girl/declaration/dynamic"
3
+ require "factory_girl/declaration/association"
4
+ require "factory_girl/declaration/implicit"
5
+
1
6
  module FactoryGirl
2
7
  class Declaration
3
8
  attr_reader :name
@@ -34,6 +34,8 @@ module FactoryGirl
34
34
  end
35
35
 
36
36
  def run(proxy_class, overrides, &block) #:nodoc:
37
+ block ||= lambda {|result| result }
38
+
37
39
  runner_options = {
38
40
  :attributes => attributes,
39
41
  :callbacks => callbacks,
@@ -42,9 +44,7 @@ module FactoryGirl
42
44
  :proxy_class => proxy_class
43
45
  }
44
46
 
45
- result = Runner.new(runner_options).run(overrides)
46
-
47
- block ? block.call(result) : result
47
+ block[Runner.new(runner_options).run(overrides)]
48
48
  end
49
49
 
50
50
  def human_names
@@ -115,7 +115,7 @@ module FactoryGirl
115
115
  end
116
116
 
117
117
  def callbacks
118
- [parent.callbacks, traits.map(&:callbacks), @definition.callbacks].flatten
118
+ [parent.callbacks, traits.map(&:callbacks).reverse, @definition.callbacks].flatten
119
119
  end
120
120
 
121
121
  private
@@ -1,4 +1,8 @@
1
1
  require "active_support/core_ext/hash/except"
2
+ require "factory_girl/proxy/build"
3
+ require "factory_girl/proxy/create"
4
+ require "factory_girl/proxy/attributes_for"
5
+ require "factory_girl/proxy/stub"
2
6
 
3
7
  module FactoryGirl
4
8
  class Proxy #:nodoc:
@@ -19,10 +23,7 @@ module FactoryGirl
19
23
  end
20
24
 
21
25
  def set_ignored(attribute, value)
22
- @ignored_attributes[attribute] = value
23
- end
24
-
25
- def associate(name, factory, attributes)
26
+ @ignored_attributes[attribute.name] = value
26
27
  end
27
28
 
28
29
  def run_callbacks(name)
@@ -11,7 +11,9 @@ module FactoryGirl
11
11
  end
12
12
 
13
13
  def set(attribute, value)
14
- @hash[attribute] = value
14
+ return if attribute.is_a? Attribute::Association
15
+
16
+ @hash[attribute.name] = value
15
17
  end
16
18
 
17
19
  def result(to_create)
@@ -15,11 +15,7 @@ module FactoryGirl
15
15
  end
16
16
 
17
17
  def set(attribute, value)
18
- @instance.send(:"#{attribute}=", value)
19
- end
20
-
21
- def associate(name, factory_name, overrides)
22
- set(name, association(factory_name, overrides))
18
+ @instance.send(:"#{attribute.name}=", value)
23
19
  end
24
20
 
25
21
  def association(factory_name, overrides = {})
@@ -2,12 +2,11 @@ module FactoryGirl
2
2
  class Proxy #:nodoc:
3
3
  class Create < Build #:nodoc:
4
4
  def result(to_create)
5
- run_callbacks(:after_build)
6
- if to_create
7
- to_create.call(@instance)
8
- else
9
- @instance.save!
10
- end
5
+ super
6
+
7
+ to_create ||= lambda {|instance| instance.save! }
8
+ to_create[@instance]
9
+
11
10
  run_callbacks(:after_create)
12
11
  @instance
13
12
  end
@@ -42,10 +42,6 @@ module FactoryGirl
42
42
  end
43
43
  end
44
44
 
45
- def next_id
46
- @@next_id += 1
47
- end
48
-
49
45
  def get(attribute)
50
46
  if @ignored_attributes.has_key?(attribute)
51
47
  @ignored_attributes[attribute]
@@ -55,11 +51,7 @@ module FactoryGirl
55
51
  end
56
52
 
57
53
  def set(attribute, value)
58
- @instance.send(:"#{attribute}=", value)
59
- end
60
-
61
- def associate(name, factory_name, overrides)
62
- set(name, association(factory_name, overrides))
54
+ @instance.send(:"#{attribute.name}=", value)
63
55
  end
64
56
 
65
57
  def association(factory_name, overrides = {})
@@ -71,6 +63,12 @@ module FactoryGirl
71
63
  run_callbacks(:after_stub)
72
64
  @instance
73
65
  end
66
+
67
+ private
68
+
69
+ def next_id
70
+ @@next_id += 1
71
+ end
74
72
  end
75
73
  end
76
74
  end
@@ -1,8 +1,5 @@
1
1
  module FactoryGirl
2
2
 
3
- # Raised when calling Factory.sequence from a dynamic attribute block
4
- class SequenceAbuseError < StandardError; end
5
-
6
3
  # Sequences are defined using sequence within a FactoryGirl.define block.
7
4
  # Sequence values are generated using next.
8
5
  class Sequence
@@ -1,3 +1,7 @@
1
+ require "factory_girl/syntax/methods"
2
+ require "factory_girl/syntax/default"
3
+ require "factory_girl/syntax/vintage"
4
+
1
5
  module FactoryGirl
2
6
  # Provides alternate syntaxes for factory_girl. If you don't like the default
3
7
  # syntax for defining or using factories, look at one of the
@@ -1,4 +1,4 @@
1
1
  module FactoryGirl
2
- VERSION = "2.3.0"
2
+ VERSION = "2.3.1"
3
3
  end
4
4
 
@@ -181,7 +181,12 @@ describe "traits with callbacks" do
181
181
  after_create {|user| user.name.upcase! }
182
182
  end
183
183
 
184
+ trait :awesome do
185
+ after_create {|user| user.name = "awesome" }
186
+ end
187
+
184
188
  factory :caps_user, :traits => [:great]
189
+ factory :awesome_user, :traits => [:great, :awesome]
185
190
 
186
191
  factory :caps_user_implicit_trait do
187
192
  great
@@ -199,6 +204,10 @@ describe "traits with callbacks" do
199
204
  subject { FactoryGirl.create(:caps_user_implicit_trait) }
200
205
  its(:name) { should == "JOHN" }
201
206
  end
207
+
208
+ it "executes callbacks in the order assigned" do
209
+ FactoryGirl.create(:awesome_user).name.should == "awesome"
210
+ end
202
211
  end
203
212
 
204
213
  describe "traits added via proxy" do
@@ -12,10 +12,12 @@ describe FactoryGirl::Attribute::Association do
12
12
  its(:name) { should == name }
13
13
  its(:factory) { should == factory }
14
14
 
15
- it "tells the proxy to create an association when being added" do
16
- proxy.stubs(:associate)
15
+ it "tells the proxy to set the association when being added" do
16
+ association = stub("association")
17
+ proxy.stubs(:set => nil, :association => association)
17
18
  subject.add_to(proxy)
18
- proxy.should have_received(:associate).with(name, factory, overrides)
19
+ proxy.should have_received(:set).with(subject, association)
20
+ proxy.should have_received(:association).with(factory, overrides)
19
21
  end
20
22
  end
21
23
 
@@ -14,7 +14,7 @@ describe FactoryGirl::Attribute::Dynamic do
14
14
 
15
15
  it "calls the block to set a value" do
16
16
  subject.add_to(proxy)
17
- proxy.should have_received(:set).with(name, "value")
17
+ proxy.should have_received(:set).with(subject, "value")
18
18
  end
19
19
  end
20
20
 
@@ -23,7 +23,7 @@ describe FactoryGirl::Attribute::Dynamic do
23
23
 
24
24
  it "yields the proxy to the block" do
25
25
  subject.add_to(proxy)
26
- proxy.should have_received(:set).with(name, proxy)
26
+ proxy.should have_received(:set).with(subject, proxy)
27
27
  end
28
28
  end
29
29
 
@@ -37,7 +37,7 @@ describe FactoryGirl::Attribute::Dynamic do
37
37
 
38
38
  it "evaluates the attribute from the proxy" do
39
39
  subject.add_to(proxy)
40
- proxy.should have_received(:set).with(name, result)
40
+ proxy.should have_received(:set).with(subject, result)
41
41
  end
42
42
  end
43
43
 
@@ -14,6 +14,6 @@ describe FactoryGirl::Attribute::Sequence do
14
14
  it "assigns the next value in the sequence" do
15
15
  proxy.stubs(:set)
16
16
  subject.add_to(proxy)
17
- proxy.should have_received(:set).with(name, "Name 5")
17
+ proxy.should have_received(:set).with(subject, "Name 5")
18
18
  end
19
19
  end
@@ -12,7 +12,7 @@ describe FactoryGirl::Attribute::Static do
12
12
  it "sets its static value on a proxy" do
13
13
  proxy.stubs(:set)
14
14
  subject.add_to(proxy)
15
- proxy.should have_received(:set).with(name, value)
15
+ proxy.should have_received(:set).with(subject, value)
16
16
  end
17
17
  end
18
18
 
@@ -20,9 +20,11 @@ describe FactoryGirl::Declaration::Implicit do
20
20
  end
21
21
 
22
22
  it "associates the factory" do
23
- proxy.stubs(:associate)
23
+ association = stub("association")
24
+ proxy.stubs(:set => nil, :association => association)
24
25
  attribute.add_to(proxy)
25
- proxy.should have_received(:associate).with(name, name, {})
26
+ proxy.should have_received(:set).with(attribute, association)
27
+ proxy.should have_received(:association).with(name, {})
26
28
  end
27
29
  end
28
30
 
@@ -37,7 +39,7 @@ describe FactoryGirl::Declaration::Implicit do
37
39
  it "generates the sequence" do
38
40
  proxy.stubs(:set)
39
41
  attribute.add_to(proxy)
40
- proxy.should have_received(:set).with(name, "magic")
42
+ proxy.should have_received(:set).with(attribute, "magic")
41
43
  end
42
44
  end
43
45
  end
@@ -11,32 +11,18 @@ describe FactoryGirl::Proxy::AttributesFor do
11
11
  subject.result(nil).should be_kind_of(Hash)
12
12
  end
13
13
 
14
- context "after associating a factory" do
15
- let(:attribute) { :owner }
16
-
17
- before { subject.associate(attribute, :user, {}) }
18
-
19
- it "doesn't set that key in the resulting hash" do
20
- subject.result(nil).should_not have_key(attribute)
21
- end
22
-
23
- it "returns nil when asked for that attribute" do
24
- subject.get(attribute).should be_nil
25
- end
26
- end
27
-
28
14
  describe "after setting an attribute" do
29
- let(:attribute) { :attribute }
15
+ let(:attribute) { stub("attribute", :name => :attribute) }
30
16
  let(:value) { "value" }
31
17
 
32
18
  before { subject.set(attribute, value) }
33
19
 
34
20
  it "sets that value in the resulting hash" do
35
- subject.result(nil)[attribute].should == value
21
+ subject.result(nil)[:attribute].should == value
36
22
  end
37
23
 
38
24
  it "returns that value when asked for that attribute" do
39
- subject.get(attribute).should == value
25
+ subject.get(:attribute).should == value
40
26
  end
41
27
  end
42
28
  end
@@ -17,10 +17,11 @@ describe FactoryGirl::Proxy::Create do
17
17
  end
18
18
 
19
19
  it "runs a custom create block" do
20
- block = stub('custom create block', :call => nil)
20
+ block_run = false
21
+ block = lambda {|instance| block_run = true }
21
22
  subject.result(block)
22
- block.should have_received(:call).with(instance)
23
23
  instance.should have_received(:save!).never
24
+ block_run.should be_true
24
25
  end
25
26
 
26
27
  end
@@ -1,91 +1,76 @@
1
1
  shared_examples_for "proxy without association support" do
2
- it "doesn't raise when asked to associate with another factory" do
3
- expect { subject.associate(:owner, :user, {}) }.to_not raise_error
4
- end
2
+ let(:attribute) { FactoryGirl::Attribute::Association.new(:user, :user, {}) }
5
3
 
6
4
  it "does not call FactoryGirl.create when building an association" do
7
5
  FactoryGirl.stubs(:create)
8
- subject.association(:user)
6
+ subject.set(attribute, "awesome")
9
7
  FactoryGirl.should have_received(:create).never
10
8
  end
11
9
 
12
- it "returns nil when building an association" do
13
- subject.set(:association, 'x')
14
- subject.association(:user).should be_nil
10
+ it "returns nil when accessing an association" do
11
+ subject.set(attribute, "awesome")
12
+ subject.get(:user).should be_nil
13
+ end
14
+
15
+ it "does not attempt to look up the factory when accessing the association" do
16
+ FactoryGirl.stubs(:factory_by_name)
17
+ subject.association(:awesome)
18
+ FactoryGirl.should have_received(:factory_by_name).never
15
19
  end
16
20
  end
17
21
 
18
22
  shared_examples_for "proxy with association support" do |factory_girl_proxy_class|
19
- let(:factory_name) { :user }
20
- let(:association_name) { :owner }
21
- let(:factory) { stub("associate_factory") }
22
- let(:overrides) { { :one => 1, :two => 2 } }
23
+ let(:factory) { stub("associate_factory") }
24
+ let(:overrides) { { :great => "value" } }
25
+ let(:factory_name) { :author }
23
26
 
24
27
  before do
25
28
  FactoryGirl.stubs(:factory_by_name => factory)
26
- instance.stubs(association_name => factory_name)
27
- factory.stubs(:run => factory_name)
28
- subject.stubs(:set)
29
- end
30
-
31
- it "sets a value for the association" do
32
- subject.associate(association_name, factory_name, {})
33
- subject.result(nil).send(association_name).should == factory_name
34
- end
35
-
36
- it "sets the association attribute as the factory" do
37
- subject.associate(association_name, factory_name, {})
38
- subject.should have_received(:set).with(association_name, factory_name)
29
+ factory.stubs(:run)
39
30
  end
40
31
 
41
- it "runs the factory with the correct proxy class" do
42
- subject.associate(association_name, factory_name, {})
43
- factory.should have_received(:run).with(factory_girl_proxy_class, {})
32
+ it "runs the factory with the correct overrides" do
33
+ subject.association(factory_name, overrides)
34
+ factory.should have_received(:run).with(factory_girl_proxy_class, overrides)
44
35
  end
45
36
 
46
- it "runs the factory with the correct proxy class and overrides" do
47
- subject.associate(association_name, factory_name, overrides)
48
- factory.should have_received(:run).with(factory_girl_proxy_class, overrides)
37
+ it "finds the factory with the correct factory name" do
38
+ subject.association(factory_name, overrides)
39
+ FactoryGirl.should have_received(:factory_by_name).with(factory_name)
49
40
  end
50
41
  end
51
42
 
52
43
  shared_examples_for "proxy with :method => :build" do |factory_girl_proxy_class|
53
- let(:factory_name) { :user }
54
- let(:association_name) { :owner }
55
- let(:factory) { stub("associate_factory") }
56
- let(:overrides) { { :method => :build } }
44
+ let(:factory) { stub("associate_factory") }
45
+ let(:overrides) { { :method => :build, :great => "value" } }
46
+ let(:factory_name) { :author }
57
47
 
58
48
  before do
59
49
  FactoryGirl.stubs(:factory_by_name => factory)
60
- instance.stubs(association_name => factory_name)
61
- factory.stubs(:run => factory_name)
62
- subject.stubs(:set)
50
+ factory.stubs(:run)
63
51
  end
64
52
 
65
- it "sets a value for the association" do
66
- subject.associate(association_name, factory_name, overrides)
67
- subject.result(nil).send(association_name).should == factory_name
53
+ it "runs the factory with the correct overrides" do
54
+ subject.association(factory_name, overrides)
55
+ factory.should have_received(:run).with(factory_girl_proxy_class, { :great => "value" })
68
56
  end
69
57
 
70
- it "sets the association attribute as the factory" do
71
- subject.associate(association_name, factory_name, overrides)
72
- subject.should have_received(:set).with(association_name, factory_name)
73
- end
74
-
75
- it "runs the factory with the correct proxy class" do
76
- subject.associate(association_name, factory_name, overrides)
77
- factory.should have_received(:run).with(factory_girl_proxy_class, {})
58
+ it "finds the factory with the correct factory name" do
59
+ subject.association(factory_name, overrides)
60
+ FactoryGirl.should have_received(:factory_by_name).with(factory_name)
78
61
  end
79
62
  end
80
63
 
81
64
  shared_examples_for "proxy with standard getters and setters" do |attribute, value|
65
+ let(:attribute_instance) { stub("attribute #{attribute}", :name => attribute) }
66
+
82
67
  before do
83
68
  instance.stubs(:"#{attribute}=" => value, :"#{attribute}" => value)
84
69
  end
85
70
 
86
71
  describe "when setting an attribute" do
87
72
  before do
88
- subject.set(attribute, value)
73
+ subject.set(attribute_instance, value)
89
74
  end
90
75
 
91
76
  its(attribute) { should == value }
@@ -94,7 +79,7 @@ shared_examples_for "proxy with standard getters and setters" do |attribute, val
94
79
 
95
80
  describe "when setting an ignored attribute" do
96
81
  before do
97
- subject.set_ignored(attribute, value)
82
+ subject.set_ignored(attribute_instance, value)
98
83
  end
99
84
 
100
85
  it { instance.should have_received(:"#{attribute}=").with(value).never }
metadata CHANGED
@@ -1,208 +1,157 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: factory_girl
3
- version: !ruby/object:Gem::Version
4
- hash: 3
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.3.1
5
5
  prerelease:
6
- segments:
7
- - 2
8
- - 3
9
- - 0
10
- version: 2.3.0
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Joe Ferris
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-11-18 00:00:00 -05:00
12
+ date: 2011-11-23 00:00:00.000000000 -05:00
19
13
  default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
22
16
  name: activesupport
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
17
+ requirement: &2161610400 !ruby/object:Gem::Requirement
25
18
  none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 3
30
- segments:
31
- - 0
32
- version: "0"
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
33
23
  type: :runtime
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
36
- name: rspec
37
24
  prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
25
+ version_requirements: *2161610400
26
+ - !ruby/object:Gem::Dependency
27
+ name: rspec
28
+ requirement: &2161609880 !ruby/object:Gem::Requirement
39
29
  none: false
40
- requirements:
30
+ requirements:
41
31
  - - ~>
42
- - !ruby/object:Gem::Version
43
- hash: 3
44
- segments:
45
- - 2
46
- - 0
47
- version: "2.0"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.0'
48
34
  type: :development
49
- version_requirements: *id002
50
- - !ruby/object:Gem::Dependency
51
- name: cucumber
52
35
  prerelease: false
53
- requirement: &id003 !ruby/object:Gem::Requirement
36
+ version_requirements: *2161609880
37
+ - !ruby/object:Gem::Dependency
38
+ name: cucumber
39
+ requirement: &2161609340 !ruby/object:Gem::Requirement
54
40
  none: false
55
- requirements:
41
+ requirements:
56
42
  - - ~>
57
- - !ruby/object:Gem::Version
58
- hash: 23
59
- segments:
60
- - 1
61
- - 0
62
- - 0
43
+ - !ruby/object:Gem::Version
63
44
  version: 1.0.0
64
45
  type: :development
65
- version_requirements: *id003
66
- - !ruby/object:Gem::Dependency
67
- name: timecop
68
46
  prerelease: false
69
- requirement: &id004 !ruby/object:Gem::Requirement
47
+ version_requirements: *2161609340
48
+ - !ruby/object:Gem::Dependency
49
+ name: timecop
50
+ requirement: &2161608940 !ruby/object:Gem::Requirement
70
51
  none: false
71
- requirements:
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- hash: 3
75
- segments:
76
- - 0
77
- version: "0"
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
78
56
  type: :development
79
- version_requirements: *id004
80
- - !ruby/object:Gem::Dependency
81
- name: rcov
82
57
  prerelease: false
83
- requirement: &id005 !ruby/object:Gem::Requirement
58
+ version_requirements: *2161608940
59
+ - !ruby/object:Gem::Dependency
60
+ name: rcov
61
+ requirement: &2161608440 !ruby/object:Gem::Requirement
84
62
  none: false
85
- requirements:
86
- - - ">="
87
- - !ruby/object:Gem::Version
88
- hash: 3
89
- segments:
90
- - 0
91
- version: "0"
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
92
67
  type: :development
93
- version_requirements: *id005
94
- - !ruby/object:Gem::Dependency
95
- name: aruba
96
68
  prerelease: false
97
- requirement: &id006 !ruby/object:Gem::Requirement
69
+ version_requirements: *2161608440
70
+ - !ruby/object:Gem::Dependency
71
+ name: aruba
72
+ requirement: &2161607980 !ruby/object:Gem::Requirement
98
73
  none: false
99
- requirements:
100
- - - ">="
101
- - !ruby/object:Gem::Version
102
- hash: 3
103
- segments:
104
- - 0
105
- version: "0"
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
106
78
  type: :development
107
- version_requirements: *id006
108
- - !ruby/object:Gem::Dependency
109
- name: mocha
110
79
  prerelease: false
111
- requirement: &id007 !ruby/object:Gem::Requirement
80
+ version_requirements: *2161607980
81
+ - !ruby/object:Gem::Dependency
82
+ name: mocha
83
+ requirement: &2161607540 !ruby/object:Gem::Requirement
112
84
  none: false
113
- requirements:
114
- - - ">="
115
- - !ruby/object:Gem::Version
116
- hash: 3
117
- segments:
118
- - 0
119
- version: "0"
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
120
89
  type: :development
121
- version_requirements: *id007
122
- - !ruby/object:Gem::Dependency
123
- name: bourne
124
90
  prerelease: false
125
- requirement: &id008 !ruby/object:Gem::Requirement
91
+ version_requirements: *2161607540
92
+ - !ruby/object:Gem::Dependency
93
+ name: bourne
94
+ requirement: &2161607080 !ruby/object:Gem::Requirement
126
95
  none: false
127
- requirements:
128
- - - ">="
129
- - !ruby/object:Gem::Version
130
- hash: 3
131
- segments:
132
- - 0
133
- version: "0"
96
+ requirements:
97
+ - - ! '>='
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
134
100
  type: :development
135
- version_requirements: *id008
136
- - !ruby/object:Gem::Dependency
137
- name: appraisal
138
101
  prerelease: false
139
- requirement: &id009 !ruby/object:Gem::Requirement
102
+ version_requirements: *2161607080
103
+ - !ruby/object:Gem::Dependency
104
+ name: appraisal
105
+ requirement: &2161606540 !ruby/object:Gem::Requirement
140
106
  none: false
141
- requirements:
107
+ requirements:
142
108
  - - ~>
143
- - !ruby/object:Gem::Version
144
- hash: 3
145
- segments:
146
- - 0
147
- - 3
148
- - 8
109
+ - !ruby/object:Gem::Version
149
110
  version: 0.3.8
150
111
  type: :development
151
- version_requirements: *id009
152
- - !ruby/object:Gem::Dependency
153
- name: sqlite3-ruby
154
112
  prerelease: false
155
- requirement: &id010 !ruby/object:Gem::Requirement
113
+ version_requirements: *2161606540
114
+ - !ruby/object:Gem::Dependency
115
+ name: sqlite3-ruby
116
+ requirement: &2161606080 !ruby/object:Gem::Requirement
156
117
  none: false
157
- requirements:
158
- - - ">="
159
- - !ruby/object:Gem::Version
160
- hash: 3
161
- segments:
162
- - 0
163
- version: "0"
118
+ requirements:
119
+ - - ! '>='
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
164
122
  type: :development
165
- version_requirements: *id010
166
- - !ruby/object:Gem::Dependency
167
- name: yard
168
123
  prerelease: false
169
- requirement: &id011 !ruby/object:Gem::Requirement
124
+ version_requirements: *2161606080
125
+ - !ruby/object:Gem::Dependency
126
+ name: yard
127
+ requirement: &2161605540 !ruby/object:Gem::Requirement
170
128
  none: false
171
- requirements:
172
- - - ">="
173
- - !ruby/object:Gem::Version
174
- hash: 3
175
- segments:
176
- - 0
177
- version: "0"
129
+ requirements:
130
+ - - ! '>='
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
178
133
  type: :development
179
- version_requirements: *id011
180
- - !ruby/object:Gem::Dependency
181
- name: bluecloth
182
134
  prerelease: false
183
- requirement: &id012 !ruby/object:Gem::Requirement
135
+ version_requirements: *2161605540
136
+ - !ruby/object:Gem::Dependency
137
+ name: bluecloth
138
+ requirement: &2161604560 !ruby/object:Gem::Requirement
184
139
  none: false
185
- requirements:
186
- - - ">="
187
- - !ruby/object:Gem::Version
188
- hash: 3
189
- segments:
190
- - 0
191
- version: "0"
140
+ requirements:
141
+ - - ! '>='
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
192
144
  type: :development
193
- version_requirements: *id012
194
- description: |-
195
- factory_girl provides a framework and DSL for defining and
196
- using factories - less error-prone, more explicit, and
197
- all-around easier to work with than fixtures.
145
+ prerelease: false
146
+ version_requirements: *2161604560
147
+ description: ! "factory_girl provides a framework and DSL for defining and\n using
148
+ factories - less error-prone, more explicit, and\n all-around
149
+ easier to work with than fixtures."
198
150
  email: jferris@thoughtbot.com
199
151
  executables: []
200
-
201
152
  extensions: []
202
-
203
153
  extra_rdoc_files: []
204
-
205
- files:
154
+ files:
206
155
  - .autotest
207
156
  - .gitignore
208
157
  - .rspec
@@ -334,38 +283,30 @@ files:
334
283
  has_rdoc: true
335
284
  homepage: https://github.com/thoughtbot/factory_girl
336
285
  licenses: []
337
-
338
286
  post_install_message:
339
287
  rdoc_options: []
340
-
341
- require_paths:
288
+ require_paths:
342
289
  - lib
343
- required_ruby_version: !ruby/object:Gem::Requirement
290
+ required_ruby_version: !ruby/object:Gem::Requirement
344
291
  none: false
345
- requirements:
346
- - - ">="
347
- - !ruby/object:Gem::Version
348
- hash: 3
349
- segments:
350
- - 0
351
- version: "0"
352
- required_rubygems_version: !ruby/object:Gem::Requirement
292
+ requirements:
293
+ - - ! '>='
294
+ - !ruby/object:Gem::Version
295
+ version: '0'
296
+ required_rubygems_version: !ruby/object:Gem::Requirement
353
297
  none: false
354
- requirements:
355
- - - ">="
356
- - !ruby/object:Gem::Version
357
- hash: 3
358
- segments:
359
- - 0
360
- version: "0"
298
+ requirements:
299
+ - - ! '>='
300
+ - !ruby/object:Gem::Version
301
+ version: '0'
361
302
  requirements: []
362
-
363
303
  rubyforge_project:
364
304
  rubygems_version: 1.6.2
365
305
  signing_key:
366
306
  specification_version: 3
367
- summary: factory_girl provides a framework and DSL for defining and using model instance factories.
368
- test_files:
307
+ summary: factory_girl provides a framework and DSL for defining and using model instance
308
+ factories.
309
+ test_files:
369
310
  - Appraisals
370
311
  - cucumber.yml
371
312
  - features/factory_girl_steps.feature