factory_bot 1.0.0.alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. checksums.yaml +7 -0
  2. data/.autotest +9 -0
  3. data/.gitignore +9 -0
  4. data/.rspec +2 -0
  5. data/.simplecov +4 -0
  6. data/.travis.yml +41 -0
  7. data/.yardopts +5 -0
  8. data/Appraisals +19 -0
  9. data/CONTRIBUTING.md +60 -0
  10. data/GETTING_STARTED.md +1387 -0
  11. data/Gemfile +8 -0
  12. data/Gemfile.lock +123 -0
  13. data/LICENSE +19 -0
  14. data/NAME.md +11 -0
  15. data/NEWS +285 -0
  16. data/README.md +102 -0
  17. data/Rakefile +36 -0
  18. data/cucumber.yml +1 -0
  19. data/factory_bot.gemspec +38 -0
  20. data/factory_girl.gemspec +41 -0
  21. data/gemfiles/3.2.gemfile +10 -0
  22. data/gemfiles/3.2.gemfile.lock +112 -0
  23. data/gemfiles/4.0.gemfile +10 -0
  24. data/gemfiles/4.0.gemfile.lock +112 -0
  25. data/gemfiles/4.1.gemfile +10 -0
  26. data/gemfiles/4.1.gemfile.lock +111 -0
  27. data/gemfiles/4.2.gemfile +10 -0
  28. data/gemfiles/4.2.gemfile.lock +111 -0
  29. data/gemfiles/5.0.gemfile +10 -0
  30. data/gemfiles/5.0.gemfile.lock +110 -0
  31. data/lib/factory_bot.rb +154 -0
  32. data/lib/factory_bot/aliases.rb +18 -0
  33. data/lib/factory_bot/attribute.rb +62 -0
  34. data/lib/factory_bot/attribute/association.rb +27 -0
  35. data/lib/factory_bot/attribute/dynamic.rb +24 -0
  36. data/lib/factory_bot/attribute/sequence.rb +16 -0
  37. data/lib/factory_bot/attribute/static.rb +16 -0
  38. data/lib/factory_bot/attribute_assigner.rb +97 -0
  39. data/lib/factory_bot/attribute_list.rb +67 -0
  40. data/lib/factory_bot/callback.rb +40 -0
  41. data/lib/factory_bot/callbacks_observer.rb +21 -0
  42. data/lib/factory_bot/configuration.rb +37 -0
  43. data/lib/factory_bot/declaration.rb +23 -0
  44. data/lib/factory_bot/declaration/association.rb +28 -0
  45. data/lib/factory_bot/declaration/dynamic.rb +26 -0
  46. data/lib/factory_bot/declaration/implicit.rb +33 -0
  47. data/lib/factory_bot/declaration/static.rb +26 -0
  48. data/lib/factory_bot/declaration_list.rb +49 -0
  49. data/lib/factory_bot/decorator.rb +21 -0
  50. data/lib/factory_bot/decorator/attribute_hash.rb +16 -0
  51. data/lib/factory_bot/decorator/class_key_hash.rb +28 -0
  52. data/lib/factory_bot/decorator/disallows_duplicates_registry.rb +13 -0
  53. data/lib/factory_bot/decorator/invocation_tracker.rb +19 -0
  54. data/lib/factory_bot/decorator/new_constructor.rb +12 -0
  55. data/lib/factory_bot/definition.rb +136 -0
  56. data/lib/factory_bot/definition_hierarchy.rb +48 -0
  57. data/lib/factory_bot/definition_proxy.rb +174 -0
  58. data/lib/factory_bot/errors.rb +25 -0
  59. data/lib/factory_bot/evaluation.rb +23 -0
  60. data/lib/factory_bot/evaluator.rb +82 -0
  61. data/lib/factory_bot/evaluator_class_definer.rb +20 -0
  62. data/lib/factory_bot/factory.rb +162 -0
  63. data/lib/factory_bot/factory_runner.rb +33 -0
  64. data/lib/factory_bot/find_definitions.rb +25 -0
  65. data/lib/factory_bot/linter.rb +97 -0
  66. data/lib/factory_bot/null_factory.rb +18 -0
  67. data/lib/factory_bot/null_object.rb +24 -0
  68. data/lib/factory_bot/registry.rb +38 -0
  69. data/lib/factory_bot/reload.rb +8 -0
  70. data/lib/factory_bot/sequence.rb +62 -0
  71. data/lib/factory_bot/strategy/attributes_for.rb +13 -0
  72. data/lib/factory_bot/strategy/build.rb +15 -0
  73. data/lib/factory_bot/strategy/create.rb +18 -0
  74. data/lib/factory_bot/strategy/null.rb +11 -0
  75. data/lib/factory_bot/strategy/stub.rb +108 -0
  76. data/lib/factory_bot/strategy_calculator.rb +26 -0
  77. data/lib/factory_bot/strategy_syntax_method_registrar.rb +54 -0
  78. data/lib/factory_bot/syntax.rb +7 -0
  79. data/lib/factory_bot/syntax/default.rb +76 -0
  80. data/lib/factory_bot/syntax/methods.rb +111 -0
  81. data/lib/factory_bot/syntax_runner.rb +6 -0
  82. data/lib/factory_bot/trait.rb +30 -0
  83. data/lib/factory_bot/version.rb +3 -0
  84. data/lib/factory_girl.rb +5 -0
  85. data/lib/factory_girl/version.rb +1 -0
  86. metadata +302 -0
@@ -0,0 +1,26 @@
1
+ module FactoryBot
2
+ # @api private
3
+ class StrategyCalculator
4
+ def initialize(name_or_object)
5
+ @name_or_object = name_or_object
6
+ end
7
+
8
+ def strategy
9
+ if strategy_is_object?
10
+ @name_or_object
11
+ else
12
+ strategy_name_to_object
13
+ end
14
+ end
15
+
16
+ private
17
+
18
+ def strategy_is_object?
19
+ @name_or_object.is_a?(Class)
20
+ end
21
+
22
+ def strategy_name_to_object
23
+ FactoryBot.strategy_by_name(@name_or_object)
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,54 @@
1
+ module FactoryBot
2
+ # @api private
3
+ class StrategySyntaxMethodRegistrar
4
+ def initialize(strategy_name)
5
+ @strategy_name = strategy_name
6
+ end
7
+
8
+ def define_strategy_methods
9
+ define_singular_strategy_method
10
+ define_list_strategy_method
11
+ define_pair_strategy_method
12
+ end
13
+
14
+ private
15
+
16
+ def define_singular_strategy_method
17
+ strategy_name = @strategy_name
18
+
19
+ define_syntax_method(strategy_name) do |name, *traits_and_overrides, &block|
20
+ FactoryRunner.new(name, strategy_name, traits_and_overrides).run(&block)
21
+ end
22
+ end
23
+
24
+ def define_list_strategy_method
25
+ strategy_name = @strategy_name
26
+
27
+ define_syntax_method("#{strategy_name}_list") do |name, amount, *traits_and_overrides, &block|
28
+ unless amount.respond_to?(:times)
29
+ raise ArgumentError, "count missing for #{strategy_name}_list"
30
+ end
31
+
32
+ amount.times.map { send(strategy_name, name, *traits_and_overrides, &block) }
33
+ end
34
+ end
35
+
36
+ def define_pair_strategy_method
37
+ strategy_name = @strategy_name
38
+
39
+ define_syntax_method("#{strategy_name}_pair") do |name, *traits_and_overrides, &block|
40
+ 2.times.map { send(strategy_name, name, *traits_and_overrides, &block) }
41
+ end
42
+ end
43
+
44
+ def define_syntax_method(name, &block)
45
+ FactoryBot::Syntax::Methods.module_exec do
46
+ if method_defined?(name) || private_method_defined?(name)
47
+ undef_method(name)
48
+ end
49
+
50
+ define_method(name, &block)
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,7 @@
1
+ require 'factory_bot/syntax/methods'
2
+ require 'factory_bot/syntax/default'
3
+
4
+ module FactoryBot
5
+ module Syntax
6
+ end
7
+ end
@@ -0,0 +1,76 @@
1
+ module FactoryBot
2
+ module Syntax
3
+ module Default
4
+ include Methods
5
+
6
+ def define(&block)
7
+ DSL.run(block)
8
+ end
9
+
10
+ def modify(&block)
11
+ ModifyDSL.run(block)
12
+ end
13
+
14
+ class DSL
15
+ def factory(name, options = {}, &block)
16
+ factory = Factory.new(name, options)
17
+ proxy = FactoryBot::DefinitionProxy.new(factory.definition)
18
+ proxy.instance_eval(&block) if block_given?
19
+
20
+ FactoryBot.register_factory(factory)
21
+
22
+ proxy.child_factories.each do |(child_name, child_options, child_block)|
23
+ parent_factory = child_options.delete(:parent) || name
24
+ factory(child_name, child_options.merge(parent: parent_factory), &child_block)
25
+ end
26
+ end
27
+
28
+ def sequence(name, *args, &block)
29
+ FactoryBot.register_sequence(Sequence.new(name, *args, &block))
30
+ end
31
+
32
+ def trait(name, &block)
33
+ FactoryBot.register_trait(Trait.new(name, &block))
34
+ end
35
+
36
+ def to_create(&block)
37
+ FactoryBot.to_create(&block)
38
+ end
39
+
40
+ def skip_create
41
+ FactoryBot.skip_create
42
+ end
43
+
44
+ def initialize_with(&block)
45
+ FactoryBot.initialize_with(&block)
46
+ end
47
+
48
+ def self.run(block)
49
+ new.instance_eval(&block)
50
+ end
51
+
52
+ delegate :before, :after, :callback, to: :configuration
53
+
54
+ private
55
+
56
+ def configuration
57
+ FactoryBot.configuration
58
+ end
59
+ end
60
+
61
+ class ModifyDSL
62
+ def factory(name, options = {}, &block)
63
+ factory = FactoryBot.factory_by_name(name)
64
+ proxy = FactoryBot::DefinitionProxy.new(factory.definition.overridable)
65
+ proxy.instance_eval(&block)
66
+ end
67
+
68
+ def self.run(block)
69
+ new.instance_eval(&block)
70
+ end
71
+ end
72
+ end
73
+ end
74
+
75
+ extend Syntax::Default
76
+ end
@@ -0,0 +1,111 @@
1
+ module FactoryBot
2
+ module Syntax
3
+ ## This module is a container for all strategy methods provided by
4
+ ## FactoryBot. This includes all the default strategies provided ({Methods#build},
5
+ ## {Methods#create}, {Methods#build_stubbed}, and {Methods#attributes_for}), as well as
6
+ ## the complementary *_list methods.
7
+ ## @example singular factory execution
8
+ ## # basic use case
9
+ ## build(:completed_order)
10
+ ##
11
+ ## # factory yielding its result to a block
12
+ ## create(:post) do |post|
13
+ ## create(:comment, post: post)
14
+ ## end
15
+ ##
16
+ ## # factory with attribute override
17
+ ## attributes_for(:post, title: "I love Ruby!")
18
+ ##
19
+ ## # factory with traits and attribute override
20
+ ## build_stubbed(:user, :admin, :male, name: "John Doe")
21
+ ##
22
+ ## @example multiple factory execution
23
+ ## # basic use case
24
+ ## build_list(:completed_order, 2)
25
+ ## create_list(:completed_order, 2)
26
+ ##
27
+ ## # factory with attribute override
28
+ ## attributes_for_list(:post, 4, title: "I love Ruby!")
29
+ ##
30
+ ## # factory with traits and attribute override
31
+ ## build_stubbed_list(:user, 15, :admin, :male, name: "John Doe")
32
+ module Methods
33
+ # @!parse FactoryBot.register_default_strategies
34
+ # @!method build(name, *traits_and_overrides, &block)
35
+ # (see #strategy_method)
36
+ # Builds a registered factory by name.
37
+ # @return [Object] instantiated object defined by the factory
38
+
39
+ # @!method create(name, *traits_and_overrides, &block)
40
+ # (see #strategy_method)
41
+ # Creates a registered factory by name.
42
+ # @return [Object] instantiated object defined by the factory
43
+
44
+ # @!method build_stubbed(name, *traits_and_overrides, &block)
45
+ # (see #strategy_method)
46
+ # Builds a stubbed registered factory by name.
47
+ # @return [Object] instantiated object defined by the factory
48
+
49
+ # @!method attributes_for(name, *traits_and_overrides, &block)
50
+ # (see #strategy_method)
51
+ # Generates a hash of attributes for a registered factory by name.
52
+ # @return [Hash] hash of attributes for the factory
53
+
54
+ # @!method build_list(name, amount, *traits_and_overrides)
55
+ # (see #strategy_method_list)
56
+ # @return [Array] array of built objects defined by the factory
57
+
58
+ # @!method create_list(name, amount, *traits_and_overrides)
59
+ # (see #strategy_method_list)
60
+ # @return [Array] array of created objects defined by the factory
61
+
62
+ # @!method build_stubbed_list(name, amount, *traits_and_overrides)
63
+ # (see #strategy_method_list)
64
+ # @return [Array] array of stubbed objects defined by the factory
65
+
66
+ # @!method attributes_for_list(name, amount, *traits_and_overrides)
67
+ # (see #strategy_method_list)
68
+ # @return [Array<Hash>] array of attribute hashes for the factory
69
+
70
+ # @!method strategy_method
71
+ # @!visibility private
72
+ # @param [Symbol] name the name of the factory to build
73
+ # @param [Array<Symbol, Symbol, Hash>] traits_and_overrides splat args traits and a hash of overrides
74
+ # @param [Proc] block block to be executed
75
+
76
+ # @!method strategy_method_list
77
+ # @!visibility private
78
+ # @param [Symbol] name the name of the factory to execute
79
+ # @param [Integer] amount the number of instances to execute
80
+ # @param [Array<Symbol, Symbol, Hash>] traits_and_overrides splat args traits and a hash of overrides
81
+
82
+ # Generates and returns the next value in a sequence.
83
+ #
84
+ # Arguments:
85
+ # name: (Symbol)
86
+ # The name of the sequence that a value should be generated for.
87
+ #
88
+ # Returns:
89
+ # The next value in the sequence. (Object)
90
+ def generate(name)
91
+ FactoryBot.sequence_by_name(name).next
92
+ end
93
+
94
+ # Generates and returns the list of values in a sequence.
95
+ #
96
+ # Arguments:
97
+ # name: (Symbol)
98
+ # The name of the sequence that a value should be generated for.
99
+ # count: (Fixnum)
100
+ # Count of values
101
+ #
102
+ # Returns:
103
+ # The next value in the sequence. (Object)
104
+ def generate_list(name, count)
105
+ (1..count).map do
106
+ FactoryBot.sequence_by_name(name).next
107
+ end
108
+ end
109
+ end
110
+ end
111
+ end
@@ -0,0 +1,6 @@
1
+ module FactoryBot
2
+ # @api private
3
+ class SyntaxRunner
4
+ include Syntax::Methods
5
+ end
6
+ end
@@ -0,0 +1,30 @@
1
+ module FactoryBot
2
+ # @api private
3
+ class Trait
4
+ attr_reader :name, :definition
5
+
6
+ def initialize(name, &block)
7
+ @name = name
8
+ @block = block
9
+ @definition = Definition.new(@name)
10
+
11
+ proxy = FactoryBot::DefinitionProxy.new(@definition)
12
+ proxy.instance_eval(&@block) if block_given?
13
+ end
14
+
15
+ delegate :add_callback, :declare_attribute, :to_create, :define_trait, :constructor,
16
+ :callbacks, :attributes, to: :@definition
17
+
18
+ def names
19
+ [@name]
20
+ end
21
+
22
+ def ==(other)
23
+ name == other.name &&
24
+ block == other.block
25
+ end
26
+
27
+ protected
28
+ attr_reader :block
29
+ end
30
+ end
@@ -0,0 +1,3 @@
1
+ module FactoryBot
2
+ VERSION = '1.0.0.alpha'.freeze
3
+ end
@@ -0,0 +1,5 @@
1
+ require "factory_bot"
2
+
3
+ FactoryGirl = FactoryBot
4
+
5
+ warn "The factory_girl gem has been deprecated and has been replaced by factory_bot. Please switch to factory_bot as soon as possible."
@@ -0,0 +1 @@
1
+ VERSION = '4.8.1'.freeze
metadata ADDED
@@ -0,0 +1,302 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: factory_bot
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0.alpha
5
+ platform: ruby
6
+ authors:
7
+ - Josh Clayton
8
+ - Joe Ferris
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2017-01-27 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activesupport
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: 3.0.0
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: 3.0.0
28
+ - !ruby/object:Gem::Dependency
29
+ name: rspec
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '3.0'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '3.0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: rspec-its
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '1.0'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '1.0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: cucumber
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: 1.3.15
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: 1.3.15
70
+ - !ruby/object:Gem::Dependency
71
+ name: timecop
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: simplecov
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: aruba
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ - !ruby/object:Gem::Dependency
113
+ name: mocha
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: 0.12.8
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: 0.12.8
126
+ - !ruby/object:Gem::Dependency
127
+ name: bourne
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ - !ruby/object:Gem::Dependency
141
+ name: appraisal
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - "~>"
145
+ - !ruby/object:Gem::Version
146
+ version: 2.1.0
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - "~>"
152
+ - !ruby/object:Gem::Version
153
+ version: 2.1.0
154
+ - !ruby/object:Gem::Dependency
155
+ name: activerecord
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: 3.0.0
161
+ type: :development
162
+ prerelease: false
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: 3.0.0
168
+ - !ruby/object:Gem::Dependency
169
+ name: yard
170
+ requirement: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ type: :development
176
+ prerelease: false
177
+ version_requirements: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ">="
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ description: |-
183
+ factory_bot provides a framework and DSL for defining and
184
+ using factories - less error-prone, more explicit, and
185
+ all-around easier to work with than fixtures.
186
+ email:
187
+ - jclayton@thoughtbot.com
188
+ - jferris@thoughtbot.com
189
+ executables: []
190
+ extensions: []
191
+ extra_rdoc_files: []
192
+ files:
193
+ - ".autotest"
194
+ - ".gitignore"
195
+ - ".rspec"
196
+ - ".simplecov"
197
+ - ".travis.yml"
198
+ - ".yardopts"
199
+ - Appraisals
200
+ - CONTRIBUTING.md
201
+ - GETTING_STARTED.md
202
+ - Gemfile
203
+ - Gemfile.lock
204
+ - LICENSE
205
+ - NAME.md
206
+ - NEWS
207
+ - README.md
208
+ - Rakefile
209
+ - cucumber.yml
210
+ - factory_bot.gemspec
211
+ - factory_girl.gemspec
212
+ - gemfiles/3.2.gemfile
213
+ - gemfiles/3.2.gemfile.lock
214
+ - gemfiles/4.0.gemfile
215
+ - gemfiles/4.0.gemfile.lock
216
+ - gemfiles/4.1.gemfile
217
+ - gemfiles/4.1.gemfile.lock
218
+ - gemfiles/4.2.gemfile
219
+ - gemfiles/4.2.gemfile.lock
220
+ - gemfiles/5.0.gemfile
221
+ - gemfiles/5.0.gemfile.lock
222
+ - lib/factory_bot.rb
223
+ - lib/factory_bot/aliases.rb
224
+ - lib/factory_bot/attribute.rb
225
+ - lib/factory_bot/attribute/association.rb
226
+ - lib/factory_bot/attribute/dynamic.rb
227
+ - lib/factory_bot/attribute/sequence.rb
228
+ - lib/factory_bot/attribute/static.rb
229
+ - lib/factory_bot/attribute_assigner.rb
230
+ - lib/factory_bot/attribute_list.rb
231
+ - lib/factory_bot/callback.rb
232
+ - lib/factory_bot/callbacks_observer.rb
233
+ - lib/factory_bot/configuration.rb
234
+ - lib/factory_bot/declaration.rb
235
+ - lib/factory_bot/declaration/association.rb
236
+ - lib/factory_bot/declaration/dynamic.rb
237
+ - lib/factory_bot/declaration/implicit.rb
238
+ - lib/factory_bot/declaration/static.rb
239
+ - lib/factory_bot/declaration_list.rb
240
+ - lib/factory_bot/decorator.rb
241
+ - lib/factory_bot/decorator/attribute_hash.rb
242
+ - lib/factory_bot/decorator/class_key_hash.rb
243
+ - lib/factory_bot/decorator/disallows_duplicates_registry.rb
244
+ - lib/factory_bot/decorator/invocation_tracker.rb
245
+ - lib/factory_bot/decorator/new_constructor.rb
246
+ - lib/factory_bot/definition.rb
247
+ - lib/factory_bot/definition_hierarchy.rb
248
+ - lib/factory_bot/definition_proxy.rb
249
+ - lib/factory_bot/errors.rb
250
+ - lib/factory_bot/evaluation.rb
251
+ - lib/factory_bot/evaluator.rb
252
+ - lib/factory_bot/evaluator_class_definer.rb
253
+ - lib/factory_bot/factory.rb
254
+ - lib/factory_bot/factory_runner.rb
255
+ - lib/factory_bot/find_definitions.rb
256
+ - lib/factory_bot/linter.rb
257
+ - lib/factory_bot/null_factory.rb
258
+ - lib/factory_bot/null_object.rb
259
+ - lib/factory_bot/registry.rb
260
+ - lib/factory_bot/reload.rb
261
+ - lib/factory_bot/sequence.rb
262
+ - lib/factory_bot/strategy/attributes_for.rb
263
+ - lib/factory_bot/strategy/build.rb
264
+ - lib/factory_bot/strategy/create.rb
265
+ - lib/factory_bot/strategy/null.rb
266
+ - lib/factory_bot/strategy/stub.rb
267
+ - lib/factory_bot/strategy_calculator.rb
268
+ - lib/factory_bot/strategy_syntax_method_registrar.rb
269
+ - lib/factory_bot/syntax.rb
270
+ - lib/factory_bot/syntax/default.rb
271
+ - lib/factory_bot/syntax/methods.rb
272
+ - lib/factory_bot/syntax_runner.rb
273
+ - lib/factory_bot/trait.rb
274
+ - lib/factory_bot/version.rb
275
+ - lib/factory_girl.rb
276
+ - lib/factory_girl/version.rb
277
+ homepage: https://github.com/thoughtbot/factory_bot
278
+ licenses:
279
+ - MIT
280
+ metadata: {}
281
+ post_install_message:
282
+ rdoc_options: []
283
+ require_paths:
284
+ - lib
285
+ required_ruby_version: !ruby/object:Gem::Requirement
286
+ requirements:
287
+ - - ">="
288
+ - !ruby/object:Gem::Version
289
+ version: 1.9.2
290
+ required_rubygems_version: !ruby/object:Gem::Requirement
291
+ requirements:
292
+ - - ">"
293
+ - !ruby/object:Gem::Version
294
+ version: 1.3.1
295
+ requirements: []
296
+ rubyforge_project:
297
+ rubygems_version: 2.5.1
298
+ signing_key:
299
+ specification_version: 4
300
+ summary: factory_bot provides a framework and DSL for defining and using model instance
301
+ factories.
302
+ test_files: []