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.
- checksums.yaml +7 -0
- data/.autotest +9 -0
- data/.gitignore +9 -0
- data/.rspec +2 -0
- data/.simplecov +4 -0
- data/.travis.yml +41 -0
- data/.yardopts +5 -0
- data/Appraisals +19 -0
- data/CONTRIBUTING.md +60 -0
- data/GETTING_STARTED.md +1387 -0
- data/Gemfile +8 -0
- data/Gemfile.lock +123 -0
- data/LICENSE +19 -0
- data/NAME.md +11 -0
- data/NEWS +285 -0
- data/README.md +102 -0
- data/Rakefile +36 -0
- data/cucumber.yml +1 -0
- data/factory_bot.gemspec +38 -0
- data/factory_girl.gemspec +41 -0
- data/gemfiles/3.2.gemfile +10 -0
- data/gemfiles/3.2.gemfile.lock +112 -0
- data/gemfiles/4.0.gemfile +10 -0
- data/gemfiles/4.0.gemfile.lock +112 -0
- data/gemfiles/4.1.gemfile +10 -0
- data/gemfiles/4.1.gemfile.lock +111 -0
- data/gemfiles/4.2.gemfile +10 -0
- data/gemfiles/4.2.gemfile.lock +111 -0
- data/gemfiles/5.0.gemfile +10 -0
- data/gemfiles/5.0.gemfile.lock +110 -0
- data/lib/factory_bot.rb +154 -0
- data/lib/factory_bot/aliases.rb +18 -0
- data/lib/factory_bot/attribute.rb +62 -0
- data/lib/factory_bot/attribute/association.rb +27 -0
- data/lib/factory_bot/attribute/dynamic.rb +24 -0
- data/lib/factory_bot/attribute/sequence.rb +16 -0
- data/lib/factory_bot/attribute/static.rb +16 -0
- data/lib/factory_bot/attribute_assigner.rb +97 -0
- data/lib/factory_bot/attribute_list.rb +67 -0
- data/lib/factory_bot/callback.rb +40 -0
- data/lib/factory_bot/callbacks_observer.rb +21 -0
- data/lib/factory_bot/configuration.rb +37 -0
- data/lib/factory_bot/declaration.rb +23 -0
- data/lib/factory_bot/declaration/association.rb +28 -0
- data/lib/factory_bot/declaration/dynamic.rb +26 -0
- data/lib/factory_bot/declaration/implicit.rb +33 -0
- data/lib/factory_bot/declaration/static.rb +26 -0
- data/lib/factory_bot/declaration_list.rb +49 -0
- data/lib/factory_bot/decorator.rb +21 -0
- data/lib/factory_bot/decorator/attribute_hash.rb +16 -0
- data/lib/factory_bot/decorator/class_key_hash.rb +28 -0
- data/lib/factory_bot/decorator/disallows_duplicates_registry.rb +13 -0
- data/lib/factory_bot/decorator/invocation_tracker.rb +19 -0
- data/lib/factory_bot/decorator/new_constructor.rb +12 -0
- data/lib/factory_bot/definition.rb +136 -0
- data/lib/factory_bot/definition_hierarchy.rb +48 -0
- data/lib/factory_bot/definition_proxy.rb +174 -0
- data/lib/factory_bot/errors.rb +25 -0
- data/lib/factory_bot/evaluation.rb +23 -0
- data/lib/factory_bot/evaluator.rb +82 -0
- data/lib/factory_bot/evaluator_class_definer.rb +20 -0
- data/lib/factory_bot/factory.rb +162 -0
- data/lib/factory_bot/factory_runner.rb +33 -0
- data/lib/factory_bot/find_definitions.rb +25 -0
- data/lib/factory_bot/linter.rb +97 -0
- data/lib/factory_bot/null_factory.rb +18 -0
- data/lib/factory_bot/null_object.rb +24 -0
- data/lib/factory_bot/registry.rb +38 -0
- data/lib/factory_bot/reload.rb +8 -0
- data/lib/factory_bot/sequence.rb +62 -0
- data/lib/factory_bot/strategy/attributes_for.rb +13 -0
- data/lib/factory_bot/strategy/build.rb +15 -0
- data/lib/factory_bot/strategy/create.rb +18 -0
- data/lib/factory_bot/strategy/null.rb +11 -0
- data/lib/factory_bot/strategy/stub.rb +108 -0
- data/lib/factory_bot/strategy_calculator.rb +26 -0
- data/lib/factory_bot/strategy_syntax_method_registrar.rb +54 -0
- data/lib/factory_bot/syntax.rb +7 -0
- data/lib/factory_bot/syntax/default.rb +76 -0
- data/lib/factory_bot/syntax/methods.rb +111 -0
- data/lib/factory_bot/syntax_runner.rb +6 -0
- data/lib/factory_bot/trait.rb +30 -0
- data/lib/factory_bot/version.rb +3 -0
- data/lib/factory_girl.rb +5 -0
- data/lib/factory_girl/version.rb +1 -0
- 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,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,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
|
data/lib/factory_girl.rb
ADDED
@@ -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: []
|