factory_bot 1.0.0.alpha

Sign up to get free protection for your applications and to get access to all the features.
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: []