Module: FactoryBot
- Extended by:
- Syntax::Default
- Defined in:
- lib/factory_bot.rb,
lib/factory_bot/trait.rb,
lib/factory_bot/errors.rb,
lib/factory_bot/linter.rb,
lib/factory_bot/reload.rb,
lib/factory_bot/syntax.rb,
lib/factory_bot/aliases.rb,
lib/factory_bot/factory.rb,
lib/factory_bot/version.rb,
lib/factory_bot/callback.rb,
lib/factory_bot/registry.rb,
lib/factory_bot/sequence.rb,
lib/factory_bot/attribute.rb,
lib/factory_bot/decorator.rb,
lib/factory_bot/evaluator.rb,
lib/factory_bot/definition.rb,
lib/factory_bot/evaluation.rb,
lib/factory_bot/declaration.rb,
lib/factory_bot/null_object.rb,
lib/factory_bot/null_factory.rb,
lib/factory_bot/configuration.rb,
lib/factory_bot/strategy/null.rb,
lib/factory_bot/strategy/stub.rb,
lib/factory_bot/syntax_runner.rb,
lib/factory_bot/attribute_list.rb,
lib/factory_bot/factory_runner.rb,
lib/factory_bot/strategy/build.rb,
lib/factory_bot/syntax/default.rb,
lib/factory_bot/syntax/methods.rb,
lib/factory_bot/strategy/create.rb,
lib/factory_bot/declaration_list.rb,
lib/factory_bot/definition_proxy.rb,
lib/factory_bot/find_definitions.rb,
lib/factory_bot/attribute/dynamic.rb,
lib/factory_bot/attribute/sequence.rb,
lib/factory_bot/attribute_assigner.rb,
lib/factory_bot/callbacks_observer.rb,
lib/factory_bot/declaration/dynamic.rb,
lib/factory_bot/strategy_calculator.rb,
lib/factory_bot/declaration/implicit.rb,
lib/factory_bot/definition_hierarchy.rb,
lib/factory_bot/attribute/association.rb,
lib/factory_bot/declaration/association.rb,
lib/factory_bot/evaluator_class_definer.rb,
lib/factory_bot/strategy/attributes_for.rb,
lib/factory_bot/decorator/attribute_hash.rb,
lib/factory_bot/decorator/new_constructor.rb,
lib/factory_bot/decorator/invocation_tracker.rb,
lib/factory_bot/strategy_syntax_method_registrar.rb,
lib/factory_bot/decorator/disallows_duplicates_registry.rb
Defined Under Namespace
Modules: Strategy, Syntax
Classes: AssociationDefinitionError, Attribute, AttributeAssigner, AttributeDefinitionError, AttributeList, Callback, CallbacksObserver, Configuration, Declaration, DeclarationList, Decorator, Definition, DefinitionHierarchy, DefinitionProxy, DuplicateDefinitionError, Evaluation, Evaluator, EvaluatorClassDefiner, Factory, FactoryRunner, InvalidCallbackNameError, InvalidFactoryError, Linter, MethodDefinitionError, NullFactory, NullObject, Registry, Sequence, SequenceAbuseError, StrategyCalculator, StrategySyntaxMethodRegistrar, SyntaxRunner, Trait
Constant Summary
collapse
- DEPRECATOR =
ActiveSupport::Deprecation.new("6.0", "factory_bot")
- VERSION =
"5.0.0".freeze
Class Attribute Summary collapse
Class Method Summary
collapse
define, modify
#attributes_for, #attributes_for_list, #attributes_for_pair, #build, #build_list, #build_pair, #build_stubbed, #build_stubbed_list, #build_stubbed_pair, #create, #create_list, #create_pair, #generate, #generate_list
Class Attribute Details
.aliases ⇒ Object
Returns the value of attribute aliases.
3
4
5
|
# File 'lib/factory_bot/aliases.rb', line 3
def aliases
@aliases
end
|
.allow_class_lookup ⇒ Object
Returns the value of attribute allow_class_lookup.
89
90
91
|
# File 'lib/factory_bot.rb', line 89
def allow_class_lookup
@allow_class_lookup
end
|
.definition_file_paths ⇒ Object
An Array of strings specifying locations that should be searched for factory definitions. By default, factory_bot will attempt to require “factories”, “test/factories” and “spec/factories”. Only the first existing file will be loaded.
7
8
9
|
# File 'lib/factory_bot/find_definitions.rb', line 7
def definition_file_paths
@definition_file_paths
end
|
Class Method Details
.aliases_for(attribute) ⇒ Object
11
12
13
14
15
16
17
|
# File 'lib/factory_bot/aliases.rb', line 11
def self.aliases_for(attribute)
aliases.map do |(pattern, replace)|
if pattern.match(attribute.to_s)
attribute.to_s.sub(pattern, replace).to_sym
end
end.compact << attribute
end
|
.configuration ⇒ Object
52
53
54
|
# File 'lib/factory_bot.rb', line 52
def self.configuration
@configuration ||= Configuration.new
end
|
.factory_by_name(name) ⇒ Object
100
101
102
|
# File 'lib/factory_bot.rb', line 100
def self.factory_by_name(name)
factories.find(name)
end
|
.find_definitions ⇒ Object
12
13
14
15
16
17
18
19
20
21
22
23
24
|
# File 'lib/factory_bot/find_definitions.rb', line 12
def self.find_definitions
absolute_definition_file_paths = definition_file_paths.map { |path| File.expand_path(path) }
absolute_definition_file_paths.uniq.each do |path|
load("#{path}.rb") if File.exist?("#{path}.rb")
if File.directory? path
Dir[File.join(path, "**", "*.rb")].sort.each do |file|
load file
end
end
end
end
|
.lint(*args) ⇒ Object
Look for errors in factories and (optionally) their traits. Parameters: factories - which factories to lint; omit for all factories options:
traits: true - to lint traits as well as factories
strategy: :create - to specify the strategy for linting
verbose: true - to include full backtraces for each linting error
70
71
72
73
74
|
# File 'lib/factory_bot.rb', line 70
def self.lint(*args)
options = args.
factories_to_lint = args[0] || FactoryBot.factories
Linter.new(factories_to_lint, options).lint!
end
|
.register_callback(name) ⇒ Object
154
155
156
157
|
# File 'lib/factory_bot.rb', line 154
def self.register_callback(name)
name = name.to_sym
callback_names << name
end
|
.register_default_callbacks ⇒ Object
147
148
149
150
151
152
|
# File 'lib/factory_bot.rb', line 147
def self.register_default_callbacks
register_callback(:after_build)
register_callback(:after_create)
register_callback(:after_stub)
register_callback(:before_create)
end
|
.register_default_strategies ⇒ Object
.register_factory(factory) ⇒ Object
93
94
95
96
97
98
|
# File 'lib/factory_bot.rb', line 93
def self.register_factory(factory)
factory.names.each do |name|
factories.register(name, factory)
end
factory
end
|
.register_sequence(sequence) ⇒ Object
104
105
106
107
108
109
|
# File 'lib/factory_bot.rb', line 104
def self.register_sequence(sequence)
sequence.names.each do |name|
sequences.register(name, sequence)
end
sequence
end
|
.register_strategy(strategy_name, strategy_class) ⇒ Object
.register_trait(trait) ⇒ Object
119
120
121
122
123
124
|
# File 'lib/factory_bot.rb', line 119
def self.register_trait(trait)
trait.names.each do |name|
traits.register(name, trait)
end
trait
end
|
.reload ⇒ Object
2
3
4
5
6
7
|
# File 'lib/factory_bot/reload.rb', line 2
def self.reload
reset_configuration
register_default_strategies
register_default_callbacks
find_definitions
end
|
.reset_configuration ⇒ Object
56
57
58
|
# File 'lib/factory_bot.rb', line 56
def self.reset_configuration
@configuration = nil
end
|
.rewind_sequences ⇒ Object
115
116
117
|
# File 'lib/factory_bot.rb', line 115
def self.rewind_sequences
sequences.each(&:rewind)
end
|
.sequence_by_name(name) ⇒ Object
111
112
113
|
# File 'lib/factory_bot.rb', line 111
def self.sequence_by_name(name)
sequences.find(name)
end
|
.strategy_by_name(name) ⇒ Object
135
136
137
|
# File 'lib/factory_bot.rb', line 135
def self.strategy_by_name(name)
strategies.find(name)
end
|
.trait_by_name(name) ⇒ Object
126
127
128
|
# File 'lib/factory_bot.rb', line 126
def self.trait_by_name(name)
traits.find(name)
end
|