From 5f1a1de114bb390bc397d8d512c149502581f56a Mon Sep 17 00:00:00 2001 From: Daniel Colson Date: Fri, 5 Jun 2020 15:15:18 -0400 Subject: [PATCH] Run standardrb This commit applies the changes from running `standardrb --fix` --- Rakefile | 2 +- factory_bot.gemspec | 8 +- features/step_definitions/database_steps.rb | 2 +- .../step_definitions/factory_bot_steps.rb | 14 +-- features/support/factories.rb | 2 +- lib/factory_bot.rb | 8 +- lib/factory_bot/aliases.rb | 6 +- lib/factory_bot/attribute/association.rb | 4 +- lib/factory_bot/attribute/dynamic.rb | 2 +- lib/factory_bot/attribute_assigner.rb | 19 ++- lib/factory_bot/attribute_list.rb | 2 +- lib/factory_bot/callback.rb | 4 +- lib/factory_bot/configuration.rb | 14 +-- lib/factory_bot/declaration.rb | 2 +- lib/factory_bot/declaration_list.rb | 4 +- lib/factory_bot/definition.rb | 26 ++-- lib/factory_bot/definition_proxy.rb | 10 +- lib/factory_bot/evaluator.rb | 8 +- lib/factory_bot/evaluator_class_definer.rb | 2 +- lib/factory_bot/factory.rb | 22 ++-- lib/factory_bot/factory_runner.rb | 6 +- lib/factory_bot/find_definitions.rb | 2 +- lib/factory_bot/internal.rb | 24 ++-- lib/factory_bot/linter.rb | 13 +- lib/factory_bot/null_factory.rb | 16 ++- lib/factory_bot/registry.rb | 4 +- lib/factory_bot/sequence.rb | 10 +- lib/factory_bot/strategy/null.rb | 6 +- lib/factory_bot/strategy/stub.rb | 4 +- lib/factory_bot/syntax/default.rb | 12 +- lib/factory_bot/trait.rb | 2 +- spec/acceptance/associations_spec.rb | 2 +- .../attribute_existing_on_object_spec.rb | 19 +-- spec/acceptance/attributes_for_spec.rb | 9 +- spec/acceptance/attributes_ordered_spec.rb | 10 +- spec/acceptance/build_spec.rb | 4 +- spec/acceptance/build_stubbed_spec.rb | 20 +-- spec/acceptance/callbacks_spec.rb | 20 +-- spec/acceptance/create_spec.rb | 4 +- .../defining_methods_inside_a_factory_spec.rb | 2 +- .../definition_camel_string_spec.rb | 4 +- spec/acceptance/definition_spec.rb | 2 +- .../definition_without_block_spec.rb | 4 +- spec/acceptance/enum_traits_spec.rb | 14 +-- spec/acceptance/initialize_with_spec.rb | 12 +- spec/acceptance/keyed_by_class_spec.rb | 2 +- spec/acceptance/lint_spec.rb | 38 +++--- spec/acceptance/modify_factories_spec.rb | 38 +++--- spec/acceptance/modify_inherited_spec.rb | 4 +- spec/acceptance/overrides_spec.rb | 8 +- spec/acceptance/parent_spec.rb | 22 ++-- spec/acceptance/private_attributes_spec.rb | 4 +- spec/acceptance/sequence_spec.rb | 12 +- spec/acceptance/traits_spec.rb | 116 +++++++++--------- spec/acceptance/transient_attributes_spec.rb | 18 +-- .../factory_bot/attribute/association_spec.rb | 17 +-- spec/factory_bot/attribute/dynamic_spec.rb | 15 +-- spec/factory_bot/attribute/sequence_spec.rb | 6 +- spec/factory_bot/attribute_list_spec.rb | 26 ++-- .../decorator/attribute_hash_spec.rb | 4 +- spec/factory_bot/definition_proxy_spec.rb | 52 ++++---- .../disallows_duplicates_registry_spec.rb | 4 +- .../evaluator_class_definer_spec.rb | 8 +- spec/factory_bot/factory_spec.rb | 18 +-- spec/factory_bot/find_definitions_spec.rb | 12 +- spec/factory_bot/internal_spec.rb | 44 +++---- spec/factory_bot/registry_spec.rb | 4 +- spec/factory_bot/sequence_spec.rb | 14 +-- .../strategy/attributes_for_spec.rb | 6 +- spec/factory_bot/strategy/create_spec.rb | 2 +- spec/factory_bot/strategy/stub_spec.rb | 6 +- spec/factory_bot_spec.rb | 4 +- spec/support/macros/define_constant.rb | 8 +- spec/support/matchers/declaration.rb | 6 +- spec/support/shared_examples/strategy.rb | 6 +- 75 files changed, 459 insertions(+), 451 deletions(-) diff --git a/Rakefile b/Rakefile index a6c3a27..f61ce58 100644 --- a/Rakefile +++ b/Rakefile @@ -8,7 +8,7 @@ require "cucumber/rake/task" Bundler::GemHelper.install_tasks(name: "factory_bot") desc "Default: run the specs and features." -task default: %w(spec:unit spec:acceptance features) +task default: %w[spec:unit spec:acceptance features] namespace :spec do desc "Run unit specs" diff --git a/factory_bot.gemspec b/factory_bot.gemspec index fe82e41..437811c 100644 --- a/factory_bot.gemspec +++ b/factory_bot.gemspec @@ -2,9 +2,9 @@ $LOAD_PATH << File.expand_path("lib", __dir__) require "factory_bot/version" Gem::Specification.new do |s| - s.name = "factory_bot" - s.version = FactoryBot::VERSION - s.summary = "factory_bot provides a framework and DSL for defining and "\ + s.name = "factory_bot" + s.version = FactoryBot::VERSION + s.summary = "factory_bot provides a framework and DSL for defining and "\ "using model instance factories." s.description = "factory_bot provides a framework and DSL for defining and "\ "using factories - less error-prone, more explicit, and "\ @@ -18,7 +18,7 @@ Gem::Specification.new do |s| s.required_ruby_version = Gem::Requirement.new(">= 2.5.0") s.authors = ["Josh Clayton", "Joe Ferris"] - s.email = ["jclayton@thoughtbot.com", "jferris@thoughtbot.com"] + s.email = ["jclayton@thoughtbot.com", "jferris@thoughtbot.com"] s.homepage = "https://github.com/thoughtbot/factory_bot" s.metadata["changelog_uri"] = "https://github.com/thoughtbot/factory_bot/blob/master/NEWS.md" diff --git a/features/step_definitions/database_steps.rb b/features/step_definitions/database_steps.rb index ccc3678..df6b54e 100644 --- a/features/step_definitions/database_steps.rb +++ b/features/step_definitions/database_steps.rb @@ -1,4 +1,4 @@ -Then /^I should find the following for the last category:$/ do |table| +Then(/^I should find the following for the last category:$/) do |table| table.hashes.first.each do |key, value| expect(Category.last.attributes[key].to_s).to eq value end diff --git a/features/step_definitions/factory_bot_steps.rb b/features/step_definitions/factory_bot_steps.rb index 9510d96..793b26e 100644 --- a/features/step_definitions/factory_bot_steps.rb +++ b/features/step_definitions/factory_bot_steps.rb @@ -7,30 +7,30 @@ end World(FactoryBotDefinitionsHelper) -When /^"([^"]*)" is added to FactoryBot's file definitions path$/ do |file_name| +When(/^"([^"]*)" is added to FactoryBot's file definitions path$/) do |file_name| new_factory_file = File.join(expand_path("."), file_name.gsub(".rb", "")) append_file_to_factory_bot_definitions_path(new_factory_file) - step %{I find definitions} + step %(I find definitions) end -When /^"([^"]*)" is added to FactoryBot's file definitions path as an absolute path$/ do |file_name| +When(/^"([^"]*)" is added to FactoryBot's file definitions path as an absolute path$/) do |file_name| new_factory_file = File.expand_path(File.join(expand_path("."), file_name.gsub(".rb", ""))) append_file_to_factory_bot_definitions_path(new_factory_file) - step %{I find definitions} + step %(I find definitions) end -When /^I create a "([^"]*)" instance from FactoryBot$/ do |factory_name| +When(/^I create a "([^"]*)" instance from FactoryBot$/) do |factory_name| FactoryBot.create(factory_name) end -When /^I find definitions$/ do +When(/^I find definitions$/) do FactoryBot.find_definitions end -When /^I reload factories$/ do +When(/^I reload factories$/) do FactoryBot.reload end diff --git a/features/support/factories.rb b/features/support/factories.rb index de03fb2..a0cf6e0 100644 --- a/features/support/factories.rb +++ b/features/support/factories.rb @@ -1,6 +1,6 @@ ActiveRecord::Base.establish_connection( adapter: "sqlite3", - database: ":memory:", + database: ":memory:" ) class CreateSchema < ActiveRecord::Migration[5.0] diff --git a/lib/factory_bot.rb b/lib/factory_bot.rb index 9e36368..3d76cd9 100644 --- a/lib/factory_bot.rb +++ b/lib/factory_bot.rb @@ -81,10 +81,10 @@ module FactoryBot class << self delegate :factories, - :register_strategy, - :rewind_sequences, - :strategy_by_name, - to: Internal + :register_strategy, + :rewind_sequences, + :strategy_by_name, + to: Internal end end diff --git a/lib/factory_bot/aliases.rb b/lib/factory_bot/aliases.rb index dba50a4..d2823f5 100644 --- a/lib/factory_bot/aliases.rb +++ b/lib/factory_bot/aliases.rb @@ -5,14 +5,14 @@ module FactoryBot self.aliases = [ [/(.+)_id/, '\1'], - [/(.*)/, '\1_id'], + [/(.*)/, '\1_id'] ] def self.aliases_for(attribute) - aliases.map do |(pattern, replace)| + aliases.map { |(pattern, replace)| if pattern.match(attribute.to_s) attribute.to_s.sub(pattern, replace).to_sym end - end.compact << attribute + }.compact << attribute end end diff --git a/lib/factory_bot/attribute/association.rb b/lib/factory_bot/attribute/association.rb index 2197047..c8f722e 100644 --- a/lib/factory_bot/attribute/association.rb +++ b/lib/factory_bot/attribute/association.rb @@ -6,12 +6,12 @@ module FactoryBot def initialize(name, factory, overrides) super(name, false) - @factory = factory + @factory = factory @overrides = overrides end def to_proc - factory = @factory + factory = @factory overrides = @overrides traits_and_overrides = [factory, overrides].flatten factory_name = traits_and_overrides.shift diff --git a/lib/factory_bot/attribute/dynamic.rb b/lib/factory_bot/attribute/dynamic.rb index d0b4cd2..2a140e8 100644 --- a/lib/factory_bot/attribute/dynamic.rb +++ b/lib/factory_bot/attribute/dynamic.rb @@ -14,7 +14,7 @@ module FactoryBot value = case block.arity when 1, -1 then instance_exec(self, &block) else instance_exec(&block) - end + end raise SequenceAbuseError if FactoryBot::Sequence === value value diff --git a/lib/factory_bot/attribute_assigner.rb b/lib/factory_bot/attribute_assigner.rb index b599943..67b772b 100644 --- a/lib/factory_bot/attribute_assigner.rb +++ b/lib/factory_bot/attribute_assigner.rb @@ -2,10 +2,10 @@ module FactoryBot # @api private class AttributeAssigner def initialize(evaluator, build_class, &instance_builder) - @build_class = build_class - @instance_builder = instance_builder - @evaluator = evaluator - @attribute_list = evaluator.class.attribute_list + @build_class = build_class + @instance_builder = instance_builder + @evaluator = evaluator + @attribute_list = evaluator.class.attribute_list @attribute_names_assigned = [] end @@ -22,9 +22,8 @@ module FactoryBot def hash @evaluator.instance = build_hash - attributes_to_set_on_hash.reduce({}) do |result, attribute| + attributes_to_set_on_hash.each_with_object({}) do |attribute, result| result[attribute] = get(attribute) - result end end @@ -33,13 +32,13 @@ module FactoryBot def method_tracking_evaluator @method_tracking_evaluator ||= Decorator::AttributeHash.new( decorated_evaluator, - attribute_names_to_assign, + attribute_names_to_assign ) end def decorated_evaluator Decorator::InvocationTracker.new( - Decorator::NewConstructor.new(@evaluator, @build_class), + Decorator::NewConstructor.new(@evaluator, @build_class) ) end @@ -96,11 +95,11 @@ module FactoryBot end def alias_names_to_ignore - @attribute_list.non_ignored.flat_map do |attribute| + @attribute_list.non_ignored.flat_map { |attribute| override_names.map do |override| attribute.name if ignorable_alias?(attribute, override) end - end.compact + }.compact end def ignorable_alias?(attribute, override) diff --git a/lib/factory_bot/attribute_list.rb b/lib/factory_bot/attribute_list.rb index 18b998f..c89a125 100644 --- a/lib/factory_bot/attribute_list.rb +++ b/lib/factory_bot/attribute_list.rb @@ -4,7 +4,7 @@ module FactoryBot include Enumerable def initialize(name = nil, attributes = []) - @name = name + @name = name @attributes = attributes end diff --git a/lib/factory_bot/callback.rb b/lib/factory_bot/callback.rb index fc15b2d..3180856 100644 --- a/lib/factory_bot/callback.rb +++ b/lib/factory_bot/callback.rb @@ -3,7 +3,7 @@ module FactoryBot attr_reader :name def initialize(name, block) - @name = name.to_sym + @name = name.to_sym @block = block end @@ -11,7 +11,7 @@ module FactoryBot case block.arity when 1, -1 then syntax_runner.instance_exec(instance, &block) when 2 then syntax_runner.instance_exec(instance, evaluator, &block) - else syntax_runner.instance_exec(&block) + else syntax_runner.instance_exec(&block) end end diff --git a/lib/factory_bot/configuration.rb b/lib/factory_bot/configuration.rb index 2f29f9c..ccfc3d9 100644 --- a/lib/factory_bot/configuration.rb +++ b/lib/factory_bot/configuration.rb @@ -7,16 +7,16 @@ module FactoryBot :inline_sequences, :sequences, :strategies, - :traits, + :traits ) def initialize - @factories = Decorator::DisallowsDuplicatesRegistry.new(Registry.new("Factory")) - @sequences = Decorator::DisallowsDuplicatesRegistry.new(Registry.new("Sequence")) - @traits = Decorator::DisallowsDuplicatesRegistry.new(Registry.new("Trait")) - @strategies = Registry.new("Strategy") + @factories = Decorator::DisallowsDuplicatesRegistry.new(Registry.new("Factory")) + @sequences = Decorator::DisallowsDuplicatesRegistry.new(Registry.new("Sequence")) + @traits = Decorator::DisallowsDuplicatesRegistry.new(Registry.new("Trait")) + @strategies = Registry.new("Strategy") @callback_names = Set.new - @definition = Definition.new(:configuration) + @definition = Definition.new(:configuration) @inline_sequences = [] to_create(&:save!) @@ -24,7 +24,7 @@ module FactoryBot end delegate :to_create, :skip_create, :constructor, :before, :after, - :callback, :callbacks, to: :@definition + :callback, :callbacks, to: :@definition def initialize_with(&block) @definition.define_constructor(&block) diff --git a/lib/factory_bot/declaration.rb b/lib/factory_bot/declaration.rb index 1ad5569..35b8b58 100644 --- a/lib/factory_bot/declaration.rb +++ b/lib/factory_bot/declaration.rb @@ -8,7 +8,7 @@ module FactoryBot attr_reader :name def initialize(name, ignored = false) - @name = name + @name = name @ignored = ignored end diff --git a/lib/factory_bot/declaration_list.rb b/lib/factory_bot/declaration_list.rb index 535c47d..917158d 100644 --- a/lib/factory_bot/declaration_list.rb +++ b/lib/factory_bot/declaration_list.rb @@ -5,8 +5,8 @@ module FactoryBot def initialize(name = nil) @declarations = [] - @name = name - @overridable = false + @name = name + @overridable = false end def declare_attribute(declaration) diff --git a/lib/factory_bot/definition.rb b/lib/factory_bot/definition.rb index 3ceb4ab..e2d0a98 100644 --- a/lib/factory_bot/definition.rb +++ b/lib/factory_bot/definition.rb @@ -4,17 +4,17 @@ module FactoryBot attr_reader :defined_traits, :declarations, :name, :registered_enums def initialize(name, base_traits = []) - @name = name - @declarations = DeclarationList.new(name) - @callbacks = [] - @defined_traits = Set.new - @registered_enums = [] - @to_create = nil - @base_traits = base_traits + @name = name + @declarations = DeclarationList.new(name) + @callbacks = [] + @defined_traits = Set.new + @registered_enums = [] + @to_create = nil + @base_traits = base_traits @additional_traits = [] - @constructor = nil - @attributes = nil - @compiled = false + @constructor = nil + @attributes = nil + @compiled = false end delegate :declare_attribute, to: :declarations @@ -51,7 +51,7 @@ module FactoryBot declarations.attributes defined_traits.each do |defined_trait| - base_traits.each { |bt| bt.define_trait defined_trait } + base_traits.each { |bt| bt.define_trait defined_trait } additional_traits.each { |at| at.define_trait defined_trait } end @@ -128,7 +128,7 @@ module FactoryBot def initialize_copy(source) super @attributes = nil - @compiled = false + @compiled = false @defined_traits_by_name = nil end @@ -138,7 +138,7 @@ module FactoryBot [ base_traits.map(&method_name), instance_exec(&block), - additional_traits.map(&method_name), + additional_traits.map(&method_name) ].flatten.compact end diff --git a/lib/factory_bot/definition_proxy.rb b/lib/factory_bot/definition_proxy.rb index d4dd896..20a58ec 100644 --- a/lib/factory_bot/definition_proxy.rb +++ b/lib/factory_bot/definition_proxy.rb @@ -1,6 +1,6 @@ module FactoryBot class DefinitionProxy - UNPROXIED_METHODS = %w( + UNPROXIED_METHODS = %w[ __send__ __id__ nil? @@ -13,7 +13,7 @@ module FactoryBot raise caller method - ).freeze + ].freeze (instance_methods + private_instance_methods).each do |method| undef_method(method) unless UNPROXIED_METHODS.include?(method.to_s) @@ -24,8 +24,8 @@ module FactoryBot attr_reader :child_factories def initialize(definition, ignore = false) - @definition = definition - @ignore = ignore + @definition = definition + @ignore = ignore @child_factories = [] end @@ -152,7 +152,7 @@ module FactoryBot if block_given? raise AssociationDefinitionError.new( "Unexpected block passed to '#{name}' association "\ - "in '#{@definition.name}' factory", + "in '#{@definition.name}' factory" ) else declaration = Declaration::Association.new(name, *options) diff --git a/lib/factory_bot/evaluator.rb b/lib/factory_bot/evaluator.rb index 884df93..f3deeed 100644 --- a/lib/factory_bot/evaluator.rb +++ b/lib/factory_bot/evaluator.rb @@ -23,9 +23,9 @@ module FactoryBot def association(factory_name, *traits_and_overrides) overrides = traits_and_overrides.extract_options! - strategy_override = overrides.fetch(:strategy) do + strategy_override = overrides.fetch(:strategy) { FactoryBot.use_parent_strategy ? @build_strategy.class : :create - end + } traits_and_overrides += [overrides.except(:strategy)] @@ -33,9 +33,7 @@ module FactoryBot @build_strategy.association(runner) end - def instance=(object_instance) - @instance = object_instance - end + attr_writer :instance def method_missing(method_name, *args, &block) # rubocop:disable Style/MethodMissingSuper if @instance.respond_to?(method_name) diff --git a/lib/factory_bot/evaluator_class_definer.rb b/lib/factory_bot/evaluator_class_definer.rb index 8090f01..3325395 100644 --- a/lib/factory_bot/evaluator_class_definer.rb +++ b/lib/factory_bot/evaluator_class_definer.rb @@ -3,7 +3,7 @@ module FactoryBot class EvaluatorClassDefiner def initialize(attributes, parent_class) @parent_class = parent_class - @attributes = attributes + @attributes = attributes attributes.each do |attribute| evaluator_class.define_attribute(attribute.name, &attribute.to_proc) diff --git a/lib/factory_bot/factory.rb b/lib/factory_bot/factory.rb index 215e3cb..09116f7 100644 --- a/lib/factory_bot/factory.rb +++ b/lib/factory_bot/factory.rb @@ -8,23 +8,23 @@ module FactoryBot def initialize(name, options = {}) assert_valid_options(options) - @name = name.respond_to?(:to_sym) ? name.to_sym : name.to_s.underscore.to_sym - @parent = options[:parent] - @aliases = options[:aliases] || [] - @class_name = options[:class] - @definition = Definition.new(@name, options[:traits] || []) - @compiled = false + @name = name.respond_to?(:to_sym) ? name.to_sym : name.to_s.underscore.to_sym + @parent = options[:parent] + @aliases = options[:aliases] || [] + @class_name = options[:class] + @definition = Definition.new(@name, options[:traits] || []) + @compiled = false end delegate :add_callback, :declare_attribute, :to_create, :define_trait, :constructor, - :defined_traits, :inherit_traits, :append_traits, to: :@definition + :defined_traits, :inherit_traits, :append_traits, to: :@definition def build_class @build_class ||= if class_name.is_a? Class - class_name - else - class_name.to_s.camelize.constantize - end + class_name + else + class_name.to_s.camelize.constantize + end end def run(build_strategy, overrides, &block) diff --git a/lib/factory_bot/factory_runner.rb b/lib/factory_bot/factory_runner.rb index 5d97281..5bd732d 100644 --- a/lib/factory_bot/factory_runner.rb +++ b/lib/factory_bot/factory_runner.rb @@ -1,11 +1,11 @@ module FactoryBot class FactoryRunner def initialize(name, strategy, traits_and_overrides) - @name = name + @name = name @strategy = strategy @overrides = traits_and_overrides.extract_options! - @traits = traits_and_overrides + @traits = traits_and_overrides end def run(runner_strategy = @strategy, &block) @@ -22,7 +22,7 @@ module FactoryBot strategy: runner_strategy, traits: @traits, overrides: @overrides, - factory: factory, + factory: factory } ActiveSupport::Notifications.instrument("factory_bot.run_factory", instrumentation_payload) do diff --git a/lib/factory_bot/find_definitions.rb b/lib/factory_bot/find_definitions.rb index b308abc..bd20ee4 100644 --- a/lib/factory_bot/find_definitions.rb +++ b/lib/factory_bot/find_definitions.rb @@ -7,7 +7,7 @@ module FactoryBot attr_accessor :definition_file_paths end - self.definition_file_paths = %w(factories test/factories spec/factories) + self.definition_file_paths = %w[factories test/factories spec/factories] def self.find_definitions absolute_definition_file_paths = definition_file_paths.map { |path| File.expand_path(path) } diff --git a/lib/factory_bot/internal.rb b/lib/factory_bot/internal.rb index 60dc428..45afecb 100644 --- a/lib/factory_bot/internal.rb +++ b/lib/factory_bot/internal.rb @@ -3,18 +3,18 @@ module FactoryBot module Internal class << self delegate :after, - :before, - :callbacks, - :constructor, - :factories, - :initialize_with, - :inline_sequences, - :sequences, - :skip_create, - :strategies, - :to_create, - :traits, - to: :configuration + :before, + :callbacks, + :constructor, + :factories, + :initialize_with, + :inline_sequences, + :sequences, + :skip_create, + :strategies, + :to_create, + :traits, + to: :configuration def configuration @configuration ||= Configuration.new diff --git a/lib/factory_bot/linter.rb b/lib/factory_bot/linter.rb index 81c1fbc..fcbf800 100644 --- a/lib/factory_bot/linter.rb +++ b/lib/factory_bot/linter.rb @@ -19,17 +19,16 @@ module FactoryBot attr_reader :factories_to_lint, :invalid_factories, :factory_strategy def calculate_invalid_factories - factories_to_lint.reduce(Hash.new([])) do |result, factory| + factories_to_lint.each_with_object(Hash.new([])) do |factory, result| errors = lint(factory) result[factory] |= errors unless errors.empty? - result end end class FactoryError def initialize(wrapped_error, factory) @wrapped_error = wrapped_error - @factory = factory + @factory = factory end def message @@ -72,7 +71,7 @@ module FactoryBot result = [] begin FactoryBot.public_send(factory_strategy, factory.name) - rescue StandardError => e + rescue => e result |= [FactoryError.new(e, factory)] end result @@ -82,16 +81,16 @@ module FactoryBot result = [] factory.definition.defined_traits.map(&:name).each do |trait_name| FactoryBot.public_send(factory_strategy, factory.name, trait_name) - rescue StandardError => e + rescue => e result |= [FactoryTraitError.new(e, factory, trait_name)] end result end def error_message - lines = invalid_factories.map do |_factory, exceptions| + lines = invalid_factories.map { |_factory, exceptions| exceptions.map(&error_message_type) - end.flatten + }.flatten <<~ERROR_MESSAGE.strip The following factories are invalid: diff --git a/lib/factory_bot/null_factory.rb b/lib/factory_bot/null_factory.rb index 9dc1a97..d66d014 100644 --- a/lib/factory_bot/null_factory.rb +++ b/lib/factory_bot/null_factory.rb @@ -8,14 +8,20 @@ module FactoryBot end delegate :defined_traits, :callbacks, :attributes, :constructor, - :to_create, to: :definition + :to_create, to: :definition - def compile; end + def compile + end - def class_name; end + def class_name + end - def evaluator_class; FactoryBot::Evaluator; end + def evaluator_class + FactoryBot::Evaluator + end - def hierarchy_class; FactoryBot::DefinitionHierarchy; end + def hierarchy_class + FactoryBot::DefinitionHierarchy + end end end diff --git a/lib/factory_bot/registry.rb b/lib/factory_bot/registry.rb index bc5b164..ca55787 100644 --- a/lib/factory_bot/registry.rb +++ b/lib/factory_bot/registry.rb @@ -7,7 +7,7 @@ module FactoryBot attr_reader :name def initialize(name) - @name = name + @name = name @items = ActiveSupport::HashWithIndifferentAccess.new end @@ -25,7 +25,7 @@ module FactoryBot raise key_error_with_custom_message(e) end - alias :[] :find + alias [] find def register(name, item) @items[name] = item diff --git a/lib/factory_bot/sequence.rb b/lib/factory_bot/sequence.rb index 31648a4..95160de 100644 --- a/lib/factory_bot/sequence.rb +++ b/lib/factory_bot/sequence.rb @@ -6,14 +6,14 @@ module FactoryBot attr_reader :name def initialize(name, *args, &proc) - @name = name - @proc = proc + @name = name + @proc = proc - options = args.extract_options! - @value = args.first || 1 + options = args.extract_options! + @value = args.first || 1 @aliases = options.fetch(:aliases) { [] } - if !@value.respond_to?(:peek) + unless @value.respond_to?(:peek) @value = EnumeratorAdapter.new(@value) end end diff --git a/lib/factory_bot/strategy/null.rb b/lib/factory_bot/strategy/null.rb index 91d9ff7..893826f 100644 --- a/lib/factory_bot/strategy/null.rb +++ b/lib/factory_bot/strategy/null.rb @@ -1,9 +1,11 @@ module FactoryBot module Strategy class Null - def association(runner); end + def association(runner) + end - def result(evaluation); end + def result(evaluation) + end end end end diff --git a/lib/factory_bot/strategy/stub.rb b/lib/factory_bot/strategy/stub.rb index 312bd07..8ff1ff4 100644 --- a/lib/factory_bot/strategy/stub.rb +++ b/lib/factory_bot/strategy/stub.rb @@ -21,7 +21,7 @@ module FactoryBot :update_attributes!, :update_attributes, :update_column, - :update_columns, + :update_columns ].freeze def self.next_id=(id) @@ -68,7 +68,7 @@ module FactoryBot DISABLED_PERSISTENCE_METHODS.each do |write_method| define_singleton_method(write_method) do |*args| raise "stubbed models are not allowed to access the database - "\ - "#{self.class}##{write_method}(#{args.join(',')})" + "#{self.class}##{write_method}(#{args.join(",")})" end end end diff --git a/lib/factory_bot/syntax/default.rb b/lib/factory_bot/syntax/default.rb index 824ee5d..0ef7608 100644 --- a/lib/factory_bot/syntax/default.rb +++ b/lib/factory_bot/syntax/default.rb @@ -38,12 +38,12 @@ module FactoryBot end delegate :after, - :before, - :callback, - :initialize_with, - :skip_create, - :to_create, - to: FactoryBot::Internal + :before, + :callback, + :initialize_with, + :skip_create, + :to_create, + to: FactoryBot::Internal end class ModifyDSL diff --git a/lib/factory_bot/trait.rb b/lib/factory_bot/trait.rb index a3d8a07..944eee7 100644 --- a/lib/factory_bot/trait.rb +++ b/lib/factory_bot/trait.rb @@ -15,7 +15,7 @@ module FactoryBot end delegate :add_callback, :declare_attribute, :to_create, :define_trait, :constructor, - :callbacks, :attributes, to: :@definition + :callbacks, :attributes, to: :@definition def names [@name] diff --git a/spec/acceptance/associations_spec.rb b/spec/acceptance/associations_spec.rb index a1727ab..ed660fa 100644 --- a/spec/acceptance/associations_spec.rb +++ b/spec/acceptance/associations_spec.rb @@ -12,7 +12,7 @@ describe "associations" do expect { FactoryBot.build(:post) }.to raise_error( ArgumentError, "Association 'author' received an invalid factory argument.\n" \ - "Did you mean? 'factory: :user'\n", + "Did you mean? 'factory: :user'\n" ) end end diff --git a/spec/acceptance/attribute_existing_on_object_spec.rb b/spec/acceptance/attribute_existing_on_object_spec.rb index 0b58760..4c7bdbb 100644 --- a/spec/acceptance/attribute_existing_on_object_spec.rb +++ b/spec/acceptance/attribute_existing_on_object_spec.rb @@ -5,8 +5,8 @@ describe "declaring attributes on a Factory that are private methods on Object" FactoryBot.define do factory :website do system { false } - link { "http://example.com" } - sleep { 15 } + link { "http://example.com" } + sleep { 15 } end end end @@ -14,8 +14,8 @@ describe "declaring attributes on a Factory that are private methods on Object" subject { FactoryBot.build(:website, sleep: -5) } its(:system) { should eq false } - its(:link) { should eq "http://example.com" } - its(:sleep) { should eq -5 } + its(:link) { should eq "http://example.com" } + its(:sleep) { should eq(-5) } end describe "assigning overrides that are also private methods on object" do @@ -25,7 +25,8 @@ describe "assigning overrides that are also private methods on object" do Object.class_eval do private - def some_funky_method(args); end + def some_funky_method(args) + end end FactoryBot.define do @@ -40,9 +41,9 @@ describe "assigning overrides that are also private methods on object" do end subject { FactoryBot.build(:website, format: "Great", y: 12345, some_funky_method: "foobar!") } - its(:format) { should eq "Great" } - its(:y) { should eq 12345 } - its(:more_format) { should eq "format: Great" } + its(:format) { should eq "Great" } + its(:y) { should eq 12345 } + its(:more_format) { should eq "format: Great" } its(:some_funky_method) { should eq "foobar!" } end @@ -62,6 +63,6 @@ describe "accessing methods from the instance within a dynamic attribute "\ end end - subject { FactoryBot.build(:website) } + subject { FactoryBot.build(:website) } its(:more_format) { should eq "format: This is an awesome format" } end diff --git a/spec/acceptance/attributes_for_spec.rb b/spec/acceptance/attributes_for_spec.rb index cbe37e5..ef26e1a 100644 --- a/spec/acceptance/attributes_for_spec.rb +++ b/spec/acceptance/attributes_for_spec.rb @@ -69,10 +69,10 @@ describe "calling `attributes_for` with a block" do it "returns the hash of attributes" do expected = nil - result = attributes_for(:company) do |attributes| + result = attributes_for(:company) { |attributes| expected = attributes "hello!" - end + } expect(result).to eq expected end end @@ -80,7 +80,8 @@ end describe "`attributes_for` for a class whose constructor has required params" do before do define_model("User", name: :string) do - def initialize(arg1, arg2); end + def initialize(arg1, arg2) + end end FactoryBot.define do @@ -90,6 +91,6 @@ describe "`attributes_for` for a class whose constructor has required params" do end end - subject { FactoryBot.attributes_for(:user) } + subject { FactoryBot.attributes_for(:user) } its([:name]) { should eq "John Doe" } end diff --git a/spec/acceptance/attributes_ordered_spec.rb b/spec/acceptance/attributes_ordered_spec.rb index fe429a4..a7c5f2c 100644 --- a/spec/acceptance/attributes_ordered_spec.rb +++ b/spec/acceptance/attributes_ordered_spec.rb @@ -9,9 +9,9 @@ describe "a generated attributes hash where order matters" do FactoryBot.define do factory :parent_model do - evaluates_first { static } + evaluates_first { static } evaluates_second { evaluates_first } - evaluates_third { evaluates_second } + evaluates_third { evaluates_second } factory :child_model do static { 1 } @@ -19,9 +19,9 @@ describe "a generated attributes hash where order matters" do end factory :without_parent, class: ParentModel do - evaluates_first { static } - evaluates_second { evaluates_first } - evaluates_third { evaluates_second } + evaluates_first { static } + evaluates_second { evaluates_first } + evaluates_third { evaluates_second } static { 1 } end end diff --git a/spec/acceptance/build_spec.rb b/spec/acceptance/build_spec.rb index 477fd17..de25a74 100644 --- a/spec/acceptance/build_spec.rb +++ b/spec/acceptance/build_spec.rb @@ -88,10 +88,10 @@ describe "calling `build` with a block" do it "returns the built instance" do expected = nil - result = build(:company) do |company| + result = build(:company) { |company| expected = company "hello!" - end + } expect(result).to eq expected end end diff --git a/spec/acceptance/build_stubbed_spec.rb b/spec/acceptance/build_stubbed_spec.rb index bad3bae..2c4e3a2 100644 --- a/spec/acceptance/build_stubbed_spec.rb +++ b/spec/acceptance/build_stubbed_spec.rb @@ -129,10 +129,10 @@ describe "calling `build_stubbed` with a block" do it "returns the stub instance" do expected = nil - result = build_stubbed(:company) do |company| + result = build_stubbed(:company) { |company| expected = company "hello!" - end + } expect(result).to eq expected end end @@ -160,8 +160,8 @@ describe "defaulting `created_at`" do end it "doesn't add created_at to objects who don't have the method" do - expect(build_stubbed(:thing_without_timestamp)). - not_to respond_to(:created_at) + expect(build_stubbed(:thing_without_timestamp)) + .not_to respond_to(:created_at) end it "allows overriding created_at for objects with created_at" do @@ -171,8 +171,8 @@ describe "defaulting `created_at`" do end it "doesn't allow setting created_at on an object that doesn't define it" do - expect { build_stubbed(:thing_without_timestamp, created_at: Time.now) }. - to raise_error(NoMethodError, /created_at=/) + expect { build_stubbed(:thing_without_timestamp, created_at: Time.now) } + .to raise_error(NoMethodError, /created_at=/) end it "allows assignment of created_at" do @@ -224,8 +224,8 @@ describe "defaulting `updated_at`" do end it "doesn't add updated_at to objects who don't have the method" do - expect(build_stubbed(:thing_without_timestamp)). - not_to respond_to(:updated_at) + expect(build_stubbed(:thing_without_timestamp)) + .not_to respond_to(:updated_at) end it "allows overriding updated_at for objects with updated_at" do @@ -235,9 +235,9 @@ describe "defaulting `updated_at`" do end it "doesn't allow setting updated_at on an object that doesn't define it" do - expect do + expect { build_stubbed(:thing_without_timestamp, updated_at: Time.now) - end.to raise_error(NoMethodError, /updated_at=/) + }.to raise_error(NoMethodError, /updated_at=/) end it "allows assignment of updated_at" do diff --git a/spec/acceptance/callbacks_spec.rb b/spec/acceptance/callbacks_spec.rb index 8243569..6308d5d 100644 --- a/spec/acceptance/callbacks_spec.rb +++ b/spec/acceptance/callbacks_spec.rb @@ -4,13 +4,13 @@ describe "callbacks" do FactoryBot.define do factory :user_with_callbacks, class: :user do - after(:stub) { |user| user.first_name = "Stubby" } - after(:build) { |user| user.first_name = "Buildy" } - after(:create) { |user| user.last_name = "Createy" } + after(:stub) { |user| user.first_name = "Stubby" } + after(:build) { |user| user.first_name = "Buildy" } + after(:create) { |user| user.last_name = "Createy" } end factory :user_with_inherited_callbacks, parent: :user_with_callbacks do - after(:stub) { |user| user.last_name = "Double-Stubby" } + after(:stub) { |user| user.last_name = "Double-Stubby" } after(:build) { |user| user.first_name = "Child-Buildy" } end end @@ -79,8 +79,8 @@ describe "callbacks using syntax methods without referencing FactoryBot explicit sequence(:sequence_3) factory :user do - after(:stub) { generate(:sequence_3) } - after(:build) { |user| user.first_number = generate(:sequence_1) } + after(:stub) { generate(:sequence_3) } + after(:build) { |user| user.first_number = generate(:sequence_1) } after(:create) { |user, _evaluator| user.last_number = generate(:sequence_2) } end end @@ -145,13 +145,13 @@ describe "custom callbacks" do FactoryBot.define do factory :user do first_name { "John" } - last_name { "Doe" } + last_name { "Doe" } before(:custom) { |instance| instance.first_name = "Overridden First" } - after(:custom) { |instance| instance.last_name = "Overridden Last" } + after(:custom) { |instance| instance.last_name = "Overridden Last" } callback(:totally_custom) do |instance| instance.first_name = "Totally" - instance.last_name = "Custom" + instance.last_name = "Custom" end end end @@ -211,7 +211,7 @@ describe "global callbacks" do object.name = case object.class.to_s when "User" then "John Doe" when "Company" then "Acme Suppliers" - end + end end after :create do |object| diff --git a/spec/acceptance/create_spec.rb b/spec/acceptance/create_spec.rb index dda960f..d7c507c 100644 --- a/spec/acceptance/create_spec.rb +++ b/spec/acceptance/create_spec.rb @@ -125,10 +125,10 @@ describe "calling `create` with a block" do it "returns the created instance" do expected = nil - result = create(:company) do |company| + result = create(:company) { |company| expected = company "hello!" - end + } expect(result).to eq expected end end diff --git a/spec/acceptance/defining_methods_inside_a_factory_spec.rb b/spec/acceptance/defining_methods_inside_a_factory_spec.rb index 1350a68..7a7ac69 100644 --- a/spec/acceptance/defining_methods_inside_a_factory_spec.rb +++ b/spec/acceptance/defining_methods_inside_a_factory_spec.rb @@ -14,7 +14,7 @@ describe "defining methods inside FactoryBot" do expect(bad_factory_definition).to raise_error( FactoryBot::MethodDefinitionError, - /Defining methods in blocks \(trait or factory\) is not supported \(generate_name\)/, + /Defining methods in blocks \(trait or factory\) is not supported \(generate_name\)/ ) end end diff --git a/spec/acceptance/definition_camel_string_spec.rb b/spec/acceptance/definition_camel_string_spec.rb index 49c300c..f3bc2b0 100644 --- a/spec/acceptance/definition_camel_string_spec.rb +++ b/spec/acceptance/definition_camel_string_spec.rb @@ -8,7 +8,7 @@ describe "an instance generated by a factory named a camel case string " do end it "registers the UserModel factory" do - expect(FactoryBot::Internal.factory_by_name("UserModel")). - to be_a(FactoryBot::Factory) + expect(FactoryBot::Internal.factory_by_name("UserModel")) + .to be_a(FactoryBot::Factory) end end diff --git a/spec/acceptance/definition_spec.rb b/spec/acceptance/definition_spec.rb index 05f77b6..43feb38 100644 --- a/spec/acceptance/definition_spec.rb +++ b/spec/acceptance/definition_spec.rb @@ -24,7 +24,7 @@ describe "attributes defined using Symbol#to_proc" do FactoryBot.define do factory :user do password { "foo" } - password_confirmation &:password + password_confirmation(&:password) end end end diff --git a/spec/acceptance/definition_without_block_spec.rb b/spec/acceptance/definition_without_block_spec.rb index 182771c..3a18f1e 100644 --- a/spec/acceptance/definition_without_block_spec.rb +++ b/spec/acceptance/definition_without_block_spec.rb @@ -8,7 +8,7 @@ describe "an instance generated by a factory" do end it "registers the user factory" do - expect(FactoryBot::Internal.factory_by_name(:user)). - to be_a(FactoryBot::Factory) + expect(FactoryBot::Internal.factory_by_name(:user)) + .to be_a(FactoryBot::Factory) end end diff --git a/spec/acceptance/enum_traits_spec.rb b/spec/acceptance/enum_traits_spec.rb index 5dee035..3f34725 100644 --- a/spec/acceptance/enum_traits_spec.rb +++ b/spec/acceptance/enum_traits_spec.rb @@ -2,7 +2,7 @@ describe "enum traits" do context "when automatically_define_enum_traits is true" do it "builds traits automatically for model enum field" do define_model("Task", status: :integer) do - enum status: { queued: 0, started: 1, finished: 2 } + enum status: {queued: 0, started: 1, finished: 2} end FactoryBot.define do @@ -20,7 +20,7 @@ describe "enum traits" do it "prefers user defined traits over automatically built traits" do define_model("Task", status: :integer) do - enum status: { queued: 0, started: 1, finished: 2 } + enum status: {queued: 0, started: 1, finished: 2} end FactoryBot.define do @@ -49,7 +49,7 @@ describe "enum traits" do end it "builds traits for each enumerated value using a provided list of values as a Hash" do - statuses = { queued: 0, started: 1, finished: 2 } + statuses = {queued: 0, started: 1, finished: 2} define_class "Task" do attr_accessor :status @@ -89,13 +89,13 @@ describe "enum traits" do end it "builds traits for each enumerated value using a custom enumerable" do - statuses = define_class("Statuses") do + statuses = define_class("Statuses") { include Enumerable def each(&block) ["queued", "started", "finished"].each(&block) end - end.new + }.new define_class "Task" do attr_accessor :status @@ -119,7 +119,7 @@ describe "enum traits" do it "raises an error for undefined traits" do with_temporary_assignment(FactoryBot, :automatically_define_enum_traits, false) do define_model("Task", status: :integer) do - enum status: { queued: 0, started: 1, finished: 2 } + enum status: {queued: 0, started: 1, finished: 2} end FactoryBot.define do @@ -139,7 +139,7 @@ describe "enum traits" do it "builds traits for each enumerated value when traits_for_enum are specified" do with_temporary_assignment(FactoryBot, :automatically_define_enum_traits, false) do define_model("Task", status: :integer) do - enum status: { queued: 0, started: 1, finished: 2 } + enum status: {queued: 0, started: 1, finished: 2} end FactoryBot.define do diff --git a/spec/acceptance/initialize_with_spec.rb b/spec/acceptance/initialize_with_spec.rb index 10d19a8..77ccf23 100644 --- a/spec/acceptance/initialize_with_spec.rb +++ b/spec/acceptance/initialize_with_spec.rb @@ -15,9 +15,9 @@ describe "initialize_with with non-FG attributes" do end end - subject { build(:user) } + subject { build(:user) } its(:name) { should eq "John Doe" } - its(:age) { should eq 21 } + its(:age) { should eq 21 } end describe "initialize_with with FG attributes that are transient" do @@ -41,7 +41,7 @@ describe "initialize_with with FG attributes that are transient" do end end - subject { build(:user) } + subject { build(:user) } its(:name) { should eq "Handsome Chap from .construct" } end @@ -163,7 +163,7 @@ describe "initialize_with doesn't duplicate assignment on attributes accessed fr factory :user do email - name { email.gsub(/\@.+/, "") } + name { email.gsub(/@.+/, "") } initialize_with { new(name) } end @@ -199,7 +199,7 @@ describe "initialize_with has access to all attributes for construction" do email - name { email.gsub(/\@.+/, "") } + name { email.gsub(/@.+/, "") } initialize_with { new(attributes) } end @@ -224,7 +224,7 @@ describe "initialize_with with an 'attributes' attribute" do FactoryBot.define do factory :user do - attributes { { name: "Daniel" } } + attributes { {name: "Daniel"} } initialize_with { new(attributes) } end end diff --git a/spec/acceptance/keyed_by_class_spec.rb b/spec/acceptance/keyed_by_class_spec.rb index 39b93e6..2ac2c80 100644 --- a/spec/acceptance/keyed_by_class_spec.rb +++ b/spec/acceptance/keyed_by_class_spec.rb @@ -11,7 +11,7 @@ describe "finding factories keyed by class instead of symbol" do it "doesn't find the factory" do expect { FactoryBot.create(User) }.to( - raise_error(KeyError, /Factory not registered: User/), + raise_error(KeyError, /Factory not registered: User/) ) end end diff --git a/spec/acceptance/lint_spec.rb b/spec/acceptance/lint_spec.rb index e055859..5a26845 100644 --- a/spec/acceptance/lint_spec.rb +++ b/spec/acceptance/lint_spec.rb @@ -21,9 +21,9 @@ describe "FactoryBot.lint" do * admin_user - Validation failed: Name can't be blank (ActiveRecord::RecordInvalid) ERROR_MESSAGE - expect do + expect { FactoryBot.lint - end.to raise_error FactoryBot::InvalidFactoryError, error_message + }.to raise_error FactoryBot::InvalidFactoryError, error_message end it "does not raise when all factories are valid" do @@ -52,13 +52,13 @@ describe "FactoryBot.lint" do factory :invalid_thing end - expect do - only_valid_factories = FactoryBot.factories.reject do |factory| + expect { + only_valid_factories = FactoryBot.factories.reject { |factory| factory.name =~ /invalid/ - end + } FactoryBot.lint only_valid_factories - end.not_to raise_error + }.not_to raise_error end describe "trait validation" do @@ -83,9 +83,9 @@ describe "FactoryBot.lint" do * user+unnamed - Validation failed: Name can't be blank (ActiveRecord::RecordInvalid) ERROR_MESSAGE - expect do + expect { FactoryBot.lint traits: true - end.to raise_error FactoryBot::InvalidFactoryError, error_message + }.to raise_error FactoryBot::InvalidFactoryError, error_message end it "does not raise if a trait produces a valid object" do @@ -102,9 +102,9 @@ describe "FactoryBot.lint" do end end - expect do + expect { FactoryBot.lint traits: true - end.not_to raise_error + }.not_to raise_error end end @@ -123,10 +123,10 @@ describe "FactoryBot.lint" do end end - expect do + expect { FactoryBot.lint traits: false FactoryBot.lint - end.not_to raise_error + }.not_to raise_error end end end @@ -147,9 +147,9 @@ describe "FactoryBot.lint" do end end - expect do + expect { FactoryBot.lint strategy: :build - end.not_to raise_error + }.not_to raise_error end it "uses the requested strategy during trait validation" do @@ -171,9 +171,9 @@ describe "FactoryBot.lint" do end end - expect do + expect { FactoryBot.lint traits: true, strategy: :build - end.not_to raise_error + }.not_to raise_error end end @@ -189,11 +189,11 @@ describe "FactoryBot.lint" do factory :invalid_thing end - expect do + expect { FactoryBot.lint(verbose: true) - end.to raise_error( + }.to raise_error( FactoryBot::InvalidFactoryError, - %r{#{__FILE__}:\d*:in `save!'}, + %r{#{__FILE__}:\d*:in `save!'} ) end end diff --git a/spec/acceptance/modify_factories_spec.rb b/spec/acceptance/modify_factories_spec.rb index 89f7812..e4a9eb7 100644 --- a/spec/acceptance/modify_factories_spec.rb +++ b/spec/acceptance/modify_factories_spec.rb @@ -30,14 +30,14 @@ describe "modifying factories" do end end - subject { create(:user) } - its(:name) { should eq "Great User" } + subject { create(:user) } + its(:name) { should eq "Great User" } its(:login) { should eq "GREAT USER" } it "doesn't allow the factory to be subsequently defined" do - expect do + expect { FactoryBot.define { factory :user } - end.to raise_error(FactoryBot::DuplicateDefinitionError, "Factory already registered: user") + }.to raise_error(FactoryBot::DuplicateDefinitionError, "Factory already registered: user") end it "does allow the factory to be subsequently modified" do @@ -66,7 +66,7 @@ describe "modifying factories" do subject { create(:user) } - its(:name) { should eq "great user" } + its(:name) { should eq "great user" } its(:login) { should be_nil } end @@ -86,9 +86,9 @@ describe "modifying factories" do end end - subject { create(:user) } + subject { create(:user) } - its(:name) { should eq "Johnny Rockstar!!!" } + its(:name) { should eq "Johnny Rockstar!!!" } its(:email) { should eq "Johnny Rockstar!!!@example.com" } its(:login) { should eq "JOHNNY ROCKSTAR!!!" } end @@ -105,48 +105,48 @@ describe "modifying factories" do context "creating user" do context "without overrides" do - subject { create(:user) } + subject { create(:user) } - its(:name) { should eq "Great User" } + its(:name) { should eq "Great User" } its(:email) { should eq "Great User-modified@example.com" } end context "overriding the email" do - subject { create(:user, email: "perfect@example.com") } + subject { create(:user, email: "perfect@example.com") } - its(:name) { should eq "Great User" } + its(:name) { should eq "Great User" } its(:email) { should eq "perfect@example.com" } end context "overriding the name" do - subject { create(:user, name: "wonderful") } + subject { create(:user, name: "wonderful") } - its(:name) { should eq "wonderful" } + its(:name) { should eq "wonderful" } its(:email) { should eq "wonderful-modified@example.com" } end end context "creating admin" do context "without overrides" do - subject { create(:admin) } + subject { create(:admin) } - its(:name) { should eq "Great User" } + its(:name) { should eq "Great User" } its(:email) { should eq "Great User-modified@example.com" } its(:admin) { should be true } end context "overriding the email" do - subject { create(:admin, email: "perfect@example.com") } + subject { create(:admin, email: "perfect@example.com") } - its(:name) { should eq "Great User" } + its(:name) { should eq "Great User" } its(:email) { should eq "perfect@example.com" } its(:admin) { should be true } end context "overriding the name" do - subject { create(:admin, name: "wonderful") } + subject { create(:admin, name: "wonderful") } - its(:name) { should eq "wonderful" } + its(:name) { should eq "wonderful" } its(:email) { should eq "wonderful-modified@example.com" } its(:admin) { should be true } end diff --git a/spec/acceptance/modify_inherited_spec.rb b/spec/acceptance/modify_inherited_spec.rb index 9f30c57..e549a2a 100644 --- a/spec/acceptance/modify_inherited_spec.rb +++ b/spec/acceptance/modify_inherited_spec.rb @@ -4,11 +4,11 @@ describe "modifying inherited factories with traits" do FactoryBot.define do factory :user do trait(:female) { gender { "Female" } } - trait(:male) { gender { "Male" } } + trait(:male) { gender { "Male" } } trait(:young_admin) do admin { true } - age { 17 } + age { 17 } end female diff --git a/spec/acceptance/overrides_spec.rb b/spec/acceptance/overrides_spec.rb index 1653317..6d8ea29 100644 --- a/spec/acceptance/overrides_spec.rb +++ b/spec/acceptance/overrides_spec.rb @@ -30,7 +30,7 @@ describe "attribute overrides" do let(:admin) { FactoryBot.create(:admin) } let(:post_attributes) do - { secure: false } + {secure: false} end let(:non_admin_post_attributes) do @@ -44,17 +44,17 @@ describe "attribute overrides" do end context "with an admin posting" do - subject { FactoryBot.create(:post, admin_post_attributes) } + subject { FactoryBot.create(:post, admin_post_attributes) } its(:secure) { should eq false } end context "with a non-admin posting" do - subject { FactoryBot.create(:post, non_admin_post_attributes) } + subject { FactoryBot.create(:post, non_admin_post_attributes) } its(:secure) { should be_nil } end context "with no user posting" do - subject { FactoryBot.create(:post, post_attributes) } + subject { FactoryBot.create(:post, post_attributes) } its(:secure) { should be_nil } end end diff --git a/spec/acceptance/parent_spec.rb b/spec/acceptance/parent_spec.rb index 4e644a7..6448ca1 100644 --- a/spec/acceptance/parent_spec.rb +++ b/spec/acceptance/parent_spec.rb @@ -4,7 +4,7 @@ describe "an instance generated by a factory that inherits from another factory" FactoryBot.define do factory :user do - name { "John" } + name { "John" } email { "#{name.downcase}@example.com" } login { email } @@ -18,20 +18,20 @@ describe "an instance generated by a factory that inherits from another factory" end describe "the parent class" do - subject { FactoryBot.create(:user) } - it { should_not be_admin } - its(:name) { should eq "John" } + subject { FactoryBot.create(:user) } + it { should_not be_admin } + its(:name) { should eq "John" } its(:email) { should eq "john@example.com" } its(:login) { should eq "john@example.com" } end describe "the child class redefining parent's attributes" do - subject { FactoryBot.create(:admin) } - it { should be_kind_of(User) } - it { should be_admin } - its(:name) { should eq "admin" } - its(:email) { should eq "admin@example.com" } - its(:login) { should eq "admin@example.com" } + subject { FactoryBot.create(:admin) } + it { should be_kind_of(User) } + it { should be_admin } + its(:name) { should eq "admin" } + its(:email) { should eq "admin@example.com" } + its(:login) { should eq "admin@example.com" } its(:upper_email) { should eq "ADMIN@EXAMPLE.COM" } end end @@ -42,7 +42,7 @@ describe "nested factories with different parents" do FactoryBot.define do factory :user do - name { "Basic User" } + name { "Basic User" } factory :male_user do name { "John Doe" } diff --git a/spec/acceptance/private_attributes_spec.rb b/spec/acceptance/private_attributes_spec.rb index 6f3fe1f..4d49fc9 100644 --- a/spec/acceptance/private_attributes_spec.rb +++ b/spec/acceptance/private_attributes_spec.rb @@ -12,8 +12,8 @@ describe "setting private attributes" do end end - expect do + expect { FactoryBot.build(:user) - end.to raise_error NoMethodError, /foo=/ + }.to raise_error NoMethodError, /foo=/ end end diff --git a/spec/acceptance/sequence_spec.rb b/spec/acceptance/sequence_spec.rb index 1a2d585..c8bfbbe 100644 --- a/spec/acceptance/sequence_spec.rb +++ b/spec/acceptance/sequence_spec.rb @@ -11,8 +11,8 @@ describe "sequences" do first_value = generate(:email) another_value = generate(:email) - expect(first_value).to match /^somebody\d+@example\.com$/ - expect(another_value).to match /^somebody\d+@example\.com$/ + expect(first_value).to match(/^somebody\d+@example\.com$/) + expect(another_value).to match(/^somebody\d+@example\.com$/) expect(first_value).not_to eq another_value end @@ -34,9 +34,9 @@ describe "sequences" do sequence(:size, aliases: [:count, :length]) { |n| "called-#{n}" } end - first_value = generate(:size) + first_value = generate(:size) second_value = generate(:count) - third_value = generate(:length) + third_value = generate(:length) expect(first_value).to eq "called-1" expect(second_value).to eq "called-2" @@ -48,9 +48,9 @@ describe "sequences" do sequence(:size, "a", aliases: [:count, :length]) { |n| "called-#{n}" } end - first_value = generate(:size) + first_value = generate(:size) second_value = generate(:count) - third_value = generate(:length) + third_value = generate(:length) expect(first_value).to eq "called-a" expect(second_value).to eq "called-b" diff --git a/spec/acceptance/traits_spec.rb b/spec/acceptance/traits_spec.rb index 180d7d8..3f1cfba 100644 --- a/spec/acceptance/traits_spec.rb +++ b/spec/acceptance/traits_spec.rb @@ -1,12 +1,12 @@ describe "an instance generated by a factory with multiple traits" do before do define_model("User", - name: :string, - admin: :boolean, - gender: :string, - email: :string, - date_of_birth: :date, - great: :string) + name: :string, + admin: :boolean, + gender: :string, + email: :string, + date_of_birth: :date, + great: :string) FactoryBot.define do factory :user_without_admin_scoping, class: User do @@ -33,12 +33,12 @@ describe "an instance generated by a factory with multiple traits" do end trait :male do - name { "Joe" } + name { "Joe" } gender { "Male" } end trait :female do - name { "Jane" } + name { "Jane" } gender { "Female" } end @@ -77,7 +77,7 @@ describe "an instance generated by a factory with multiple traits" do factory :female_admin_judy, traits: [:admin] end - factory :female_admin, traits: [:female, :admin] + factory :female_admin, traits: [:female, :admin] factory :female_after_male_admin, traits: [:male, :female, :admin] factory :male_after_female_admin, traits: [:female, :male, :admin] end @@ -93,97 +93,97 @@ describe "an instance generated by a factory with multiple traits" do end context "the parent class" do - subject { FactoryBot.create(:user) } - its(:name) { should eq "John" } + subject { FactoryBot.create(:user) } + its(:name) { should eq "John" } its(:gender) { should be_nil } - it { should_not be_admin } + it { should_not be_admin } end context "the child class with one trait" do - subject { FactoryBot.create(:admin) } - its(:name) { should eq "John" } + subject { FactoryBot.create(:admin) } + its(:name) { should eq "John" } its(:gender) { should be_nil } - it { should be_admin } + it { should be_admin } end context "the other child class with one trait" do - subject { FactoryBot.create(:female) } - its(:name) { should eq "Jane" } + subject { FactoryBot.create(:female) } + its(:name) { should eq "Jane" } its(:gender) { should eq "Female" } - it { should_not be_admin } + it { should_not be_admin } end context "the child with multiple traits" do - subject { FactoryBot.create(:female_admin) } - its(:name) { should eq "Jane" } + subject { FactoryBot.create(:female_admin) } + its(:name) { should eq "Jane" } its(:gender) { should eq "Female" } - it { should be_admin } + it { should be_admin } end context "the child with multiple traits and overridden attributes" do - subject { FactoryBot.create(:female_admin, name: "Jill", gender: nil) } - its(:name) { should eq "Jill" } + subject { FactoryBot.create(:female_admin, name: "Jill", gender: nil) } + its(:name) { should eq "Jill" } its(:gender) { should be_nil } - it { should be_admin } + it { should be_admin } end context "the child with multiple traits who override the same attribute" do context "when the male assigns name after female" do - subject { FactoryBot.create(:male_after_female_admin) } - its(:name) { should eq "Joe" } + subject { FactoryBot.create(:male_after_female_admin) } + its(:name) { should eq "Joe" } its(:gender) { should eq "Male" } - it { should be_admin } + it { should be_admin } end context "when the female assigns name after male" do - subject { FactoryBot.create(:female_after_male_admin) } - its(:name) { should eq "Jane" } + subject { FactoryBot.create(:female_after_male_admin) } + its(:name) { should eq "Jane" } its(:gender) { should eq "Female" } - it { should be_admin } + it { should be_admin } end end context "child class with scoped trait and inherited trait" do - subject { FactoryBot.create(:female_admin_judy) } - its(:name) { should eq "Judy" } + subject { FactoryBot.create(:female_admin_judy) } + its(:name) { should eq "Judy" } its(:gender) { should eq "Female" } - it { should be_admin } + it { should be_admin } end context "factory using global trait" do - subject { FactoryBot.create(:user_with_email) } - its(:name) { should eq "Bill" } + subject { FactoryBot.create(:user_with_email) } + its(:name) { should eq "Bill" } its(:email) { should eq "Bill@example.com" } end context "factory created with alternate syntax for specifying trait" do - subject { FactoryBot.create(:male_user) } + subject { FactoryBot.create(:male_user) } its(:gender) { should eq "Male" } context "where trait name and attribute are the same" do - subject { FactoryBot.create(:great_user) } + subject { FactoryBot.create(:great_user) } its(:great) { should eq "GREAT!!!" } end context "where trait name and attribute are the same and attribute is overridden" do - subject { FactoryBot.create(:great_user, great: "SORT OF!!!") } + subject { FactoryBot.create(:great_user, great: "SORT OF!!!") } its(:great) { should eq "SORT OF!!!" } end end context "factory with trait defined multiple times" do - subject { FactoryBot.create(:great_user) } + subject { FactoryBot.create(:great_user) } its(:great) { should eq "GREAT!!!" } context "child factory redefining trait" do - subject { FactoryBot.create(:even_greater_user) } + subject { FactoryBot.create(:even_greater_user) } its(:great) { should eq "EVEN GREATER!!!" } end end context "child factory created where trait attributes are inherited" do - subject { FactoryBot.create(:child_male_user) } - its(:gender) { should eq "Male" } + subject { FactoryBot.create(:child_male_user) } + its(:gender) { should eq "Male" } its(:date_of_birth) { should eq Date.parse("1/1/2000") } end @@ -191,13 +191,13 @@ describe "an instance generated by a factory with multiple traits" do subject { FactoryBot.create(:user_without_admin_scoping) } it "raises an error" do - expect { subject }. - to raise_error(KeyError, "Trait not registered: \"admin_trait\"") + expect { subject } + .to raise_error(KeyError, "Trait not registered: \"admin_trait\"") end end context "child factory using grandparents' trait" do - subject { FactoryBot.create(:female_great_user) } + subject { FactoryBot.create(:female_great_user) } its(:great) { should eq "GREAT!!!" } end end @@ -300,8 +300,8 @@ describe "looking up traits that don't exist" do factory :user end - expect { FactoryBot.build(:user, double("not a trait")) }. - to raise_error(KeyError) + expect { FactoryBot.build(:user, double("not a trait")) } + .to raise_error(KeyError) end end @@ -332,12 +332,12 @@ describe "traits with callbacks" do end context "when the factory has a trait passed via arguments" do - subject { FactoryBot.create(:caps_user) } + subject { FactoryBot.create(:caps_user) } its(:name) { should eq "JOHN" } end context "when the factory has an implicit trait" do - subject { FactoryBot.create(:caps_user_implicit_trait) } + subject { FactoryBot.create(:caps_user_implicit_trait) } its(:name) { should eq "JOHN" } end @@ -369,7 +369,7 @@ describe "traits added via strategy" do subject { FactoryBot.create(:user, :admin, :great, name: "Joe") } its(:admin) { should be true } - its(:name) { should eq "JOE" } + its(:name) { should eq "JOE" } it "doesn't modify the user factory" do subject @@ -382,21 +382,21 @@ describe "traits added via strategy" do subject { FactoryBot.build(:user, :admin, :great, name: "Joe") } its(:admin) { should be true } - its(:name) { should eq "Joe" } + its(:name) { should eq "Joe" } end context "adding traits in attributes_for" do subject { FactoryBot.attributes_for(:user, :admin, :great) } its([:admin]) { should be true } - its([:name]) { should eq "John" } + its([:name]) { should eq "John" } end context "adding traits in build_stubbed" do subject { FactoryBot.build_stubbed(:user, :admin, :great, name: "Jack") } its(:admin) { should be true } - its(:name) { should eq "Jack" } + its(:name) { should eq "Jack" } end context "adding traits in create_list" do @@ -443,9 +443,9 @@ describe "traits and dynamic attributes that are applied simultaneously" do end end - subject { FactoryBot.build(:user) } - its(:name) { should eq "John" } - its(:email) { should eq "John@example.com" } + subject { FactoryBot.build(:user) } + its(:name) { should eq "John" } + its(:email) { should eq "John@example.com" } its(:combined) { should eq "John " } end @@ -872,7 +872,7 @@ describe "when a self-referential trait is defined" do expect { FactoryBot.build(:user, :admin) }.to raise_error( FactoryBot::TraitDefinitionError, - "Self-referencing trait 'admin'", + "Self-referencing trait 'admin'" ) end @@ -889,7 +889,7 @@ describe "when a self-referential trait is defined" do expect { FactoryBot.build(:user, :admin) }.to raise_error( FactoryBot::TraitDefinitionError, - "Self-referencing trait 'admin'", + "Self-referencing trait 'admin'" ) end end diff --git a/spec/acceptance/transient_attributes_spec.rb b/spec/acceptance/transient_attributes_spec.rb index 189170f..bfdff9f 100644 --- a/spec/acceptance/transient_attributes_spec.rb +++ b/spec/acceptance/transient_attributes_spec.rb @@ -7,12 +7,12 @@ describe "transient attributes" do factory :user do transient do - four { 2 + 2 } + four { 2 + 2 } rockstar { true } - upcased { false } + upcased { false } end - name { "#{FactoryBot.generate(:name)}#{' - Rockstar' if rockstar}" } + name { "#{FactoryBot.generate(:name)}#{" - Rockstar" if rockstar}" } email { "#{name.downcase}#{four}@example.com" } after(:create) do |user, evaluator| @@ -27,15 +27,15 @@ describe "transient attributes" do it { should_not have_key(:four) } it { should_not have_key(:rockstar) } it { should_not have_key(:upcased) } - it { should have_key(:name) } - it { should have_key(:email) } + it { should have_key(:name) } + it { should have_key(:email) } end context "with a transient variable assigned" do - let(:rockstar) { FactoryBot.create(:user, rockstar: true, four: "1234") } + let(:rockstar) { FactoryBot.create(:user, rockstar: true, four: "1234") } let(:rockstar_with_name) { FactoryBot.create(:user, name: "Jane Doe", rockstar: true) } - let(:upcased_rockstar) { FactoryBot.create(:user, rockstar: true, upcased: true) } - let(:groupie) { FactoryBot.create(:user, rockstar: false) } + let(:upcased_rockstar) { FactoryBot.create(:user, rockstar: true, upcased: true) } + let(:groupie) { FactoryBot.create(:user, rockstar: false) } it "generates the correct attributes on a rockstar" do expect(rockstar.name).to eq "John 1 - Rockstar" @@ -108,7 +108,7 @@ describe "assigning values from a transient attribute" do foo { Foo.new("id-of-foo", "name-of-foo") } end - foo_id { foo.id } + foo_id { foo.id } foo_name { foo.name } end end diff --git a/spec/factory_bot/attribute/association_spec.rb b/spec/factory_bot/attribute/association_spec.rb index 8dfb925..4d54871 100644 --- a/spec/factory_bot/attribute/association_spec.rb +++ b/spec/factory_bot/attribute/association_spec.rb @@ -1,13 +1,14 @@ describe FactoryBot::Attribute::Association do - let(:name) { :author } - let(:factory) { :user } - let(:overrides) { { first_name: "John" } } + let(:name) { :author } + let(:factory) { :user } + let(:overrides) { {first_name: "John"} } let(:association) { double("association") } subject { FactoryBot::Attribute::Association.new(name, factory, overrides) } module MissingMethods - def association(*args); end + def association(*args) + end end before do @@ -15,11 +16,11 @@ describe FactoryBot::Attribute::Association do # Ususually this is determined via '#method_missing' subject.extend(MissingMethods) - allow(subject). - to receive(:association).with(any_args).and_return association + allow(subject) + .to receive(:association).with(any_args).and_return association end - it { should be_association } + it { should be_association } its(:name) { should eq name } it "builds the association when calling the proc" do @@ -33,6 +34,6 @@ describe FactoryBot::Attribute::Association do end describe FactoryBot::Attribute::Association, "with a string name" do - subject { FactoryBot::Attribute::Association.new("name", :user, {}) } + subject { FactoryBot::Attribute::Association.new("name", :user, {}) } its(:name) { should eq :name } end diff --git a/spec/factory_bot/attribute/dynamic_spec.rb b/spec/factory_bot/attribute/dynamic_spec.rb index b8088a7..60cfe09 100644 --- a/spec/factory_bot/attribute/dynamic_spec.rb +++ b/spec/factory_bot/attribute/dynamic_spec.rb @@ -1,5 +1,5 @@ describe FactoryBot::Attribute::Dynamic do - let(:name) { :first_name } + let(:name) { :first_name } let(:block) { -> {} } subject { FactoryBot::Attribute::Dynamic.new(name, false, block) } @@ -23,11 +23,12 @@ describe FactoryBot::Attribute::Dynamic do end context "with a block referencing an attribute on the attribute" do - let(:block) { -> { attribute_defined_on_attribute } } + let(:block) { -> { attribute_defined_on_attribute } } let(:result) { "other attribute value" } module MissingMethods - def attribute_defined_on_attribute(*args); end + def attribute_defined_on_attribute(*args) + end end before do @@ -35,8 +36,8 @@ describe FactoryBot::Attribute::Dynamic do # be mocked. Ususually this is determined via '#method_missing' subject.extend(MissingMethods) - allow(subject). - to receive(:attribute_defined_on_attribute).and_return result + allow(subject) + .to receive(:attribute_defined_on_attribute).and_return result end it "evaluates the attribute from the attribute" do @@ -48,7 +49,7 @@ describe FactoryBot::Attribute::Dynamic do let(:block) do -> do FactoryBot::Internal.register_sequence( - FactoryBot::Sequence.new(:email, 1) { |n| "foo#{n}" }, + FactoryBot::Sequence.new(:email, 1) { |n| "foo#{n}" } ) end end @@ -60,6 +61,6 @@ describe FactoryBot::Attribute::Dynamic do end describe FactoryBot::Attribute::Dynamic, "with a string name" do - subject { FactoryBot::Attribute::Dynamic.new("name", false, -> {}) } + subject { FactoryBot::Attribute::Dynamic.new("name", false, -> {}) } its(:name) { should eq :name } end diff --git a/spec/factory_bot/attribute/sequence_spec.rb b/spec/factory_bot/attribute/sequence_spec.rb index 13d8388..aafdea5 100644 --- a/spec/factory_bot/attribute/sequence_spec.rb +++ b/spec/factory_bot/attribute/sequence_spec.rb @@ -1,10 +1,10 @@ describe FactoryBot::Attribute::Sequence do let(:sequence_name) { :name } - let(:name) { :first_name } - let(:sequence) { FactoryBot::Sequence.new(sequence_name, 5) { |n| "Name #{n}" } } + let(:name) { :first_name } + let(:sequence) { FactoryBot::Sequence.new(sequence_name, 5) { |n| "Name #{n}" } } subject { FactoryBot::Attribute::Sequence.new(name, sequence_name, false) } - before { FactoryBot::Internal.register_sequence(sequence) } + before { FactoryBot::Internal.register_sequence(sequence) } its(:name) { should eq name } diff --git a/spec/factory_bot/attribute_list_spec.rb b/spec/factory_bot/attribute_list_spec.rb index 19e1289..f8edc61 100644 --- a/spec/factory_bot/attribute_list_spec.rb +++ b/spec/factory_bot/attribute_list_spec.rb @@ -30,11 +30,11 @@ describe FactoryBot::AttributeList, "#define_attribute" do attribute = double(:attribute, name: :attribute_name) list = FactoryBot::AttributeList.new - expect do + expect { 2.times { list.define_attribute(attribute) } - end.to raise_error( + }.to raise_error( FactoryBot::AttributeDefinitionError, - "Attribute already defined: attribute_name", + "Attribute already defined: attribute_name" ) end end @@ -44,11 +44,11 @@ describe FactoryBot::AttributeList, "#define_attribute with a named attribute li association_with_same_name = FactoryBot::Attribute::Association.new(:author, :author, {}) list = FactoryBot::AttributeList.new(:author) - expect do + expect { list.define_attribute(association_with_same_name) - end.to raise_error( + }.to raise_error( FactoryBot::AssociationDefinitionError, - "Self-referencing association 'author' in 'author'", + "Self-referencing association 'author' in 'author'" ) end @@ -81,7 +81,7 @@ describe FactoryBot::AttributeList, "#associations" do email_attribute = FactoryBot::Attribute::Dynamic.new( :email, false, - ->(u) { "#{u.full_name}@example.com" }, + ->(u) { "#{u.full_name}@example.com" } ) author_attribute = FactoryBot::Attribute::Association.new(:author, :user, {}) profile_attribute = FactoryBot::Attribute::Association.new(:profile, :profile, {}) @@ -105,7 +105,7 @@ describe FactoryBot::AttributeList, "filter based on ignored attributes" do it "filters #ignored attributes" do list = build_attribute_list( build_ignored_attribute(:comments_count), - build_non_ignored_attribute(:email), + build_non_ignored_attribute(:email) ) expect(list.ignored.names).to eq [:comments_count] @@ -114,7 +114,7 @@ describe FactoryBot::AttributeList, "filter based on ignored attributes" do it "filters #non_ignored attributes" do list = build_attribute_list( build_ignored_attribute(:comments_count), - build_non_ignored_attribute(:email), + build_non_ignored_attribute(:email) ) expect(list.non_ignored.names).to eq [:email] @@ -140,7 +140,7 @@ describe FactoryBot::AttributeList, "generating names" do list = build_attribute_list( build_ignored_attribute(:comments_count), build_non_ignored_attribute(:last_name), - build_association(:avatar), + build_association(:avatar) ) expect(list.names).to eq [:comments_count, :last_name, :avatar] @@ -150,7 +150,7 @@ describe FactoryBot::AttributeList, "generating names" do list = build_attribute_list( build_ignored_attribute(:posts_count), build_non_ignored_attribute(:last_name), - build_association(:avatar), + build_association(:avatar) ) expect(list.ignored.names).to eq [:posts_count] @@ -160,7 +160,7 @@ describe FactoryBot::AttributeList, "generating names" do list = build_attribute_list( build_ignored_attribute(:posts_count), build_non_ignored_attribute(:last_name), - build_association(:avatar), + build_association(:avatar) ) expect(list.non_ignored.names).to eq [:last_name, :avatar] @@ -170,7 +170,7 @@ describe FactoryBot::AttributeList, "generating names" do list = build_attribute_list( build_ignored_attribute(:posts_count), build_non_ignored_attribute(:last_name), - build_association(:avatar), + build_association(:avatar) ) expect(list.associations.names).to eq [:avatar] diff --git a/spec/factory_bot/decorator/attribute_hash_spec.rb b/spec/factory_bot/decorator/attribute_hash_spec.rb index 5fe00dd..4706b88 100644 --- a/spec/factory_bot/decorator/attribute_hash_spec.rb +++ b/spec/factory_bot/decorator/attribute_hash_spec.rb @@ -1,7 +1,7 @@ describe FactoryBot::Decorator::AttributeHash do describe "#attributes" do it "returns a hash of attributes" do - attributes = { attribute_1: :value, attribute_2: :value } + attributes = {attribute_1: :value, attribute_2: :value} component = double(:component, attributes) decorator = described_class.new(component, [:attribute_1, :attribute_2]) @@ -11,7 +11,7 @@ describe FactoryBot::Decorator::AttributeHash do context "with an attribute called 'attributes'" do it "does not call itself recursively" do - attributes = { attributes: :value } + attributes = {attributes: :value} component = double(:component, attributes) decorator = described_class.new(component, [:attributes]) diff --git a/spec/factory_bot/definition_proxy_spec.rb b/spec/factory_bot/definition_proxy_spec.rb index 2b3e003..88b6a66 100644 --- a/spec/factory_bot/definition_proxy_spec.rb +++ b/spec/factory_bot/definition_proxy_spec.rb @@ -5,8 +5,8 @@ describe FactoryBot::DefinitionProxy, "#add_attribute" do attribute_value = -> { "dynamic attribute" } proxy.add_attribute(:attribute_name, &attribute_value) - expect(definition).to have_dynamic_declaration(:attribute_name). - with_value(attribute_value) + expect(definition).to have_dynamic_declaration(:attribute_name) + .with_value(attribute_value) end it "declares a dynamic attribute on the factory when the proxy ignores attributes" do @@ -14,9 +14,9 @@ describe FactoryBot::DefinitionProxy, "#add_attribute" do proxy = FactoryBot::DefinitionProxy.new(definition, true) attribute_value = -> { "dynamic attribute" } proxy.add_attribute(:attribute_name, &attribute_value) - expect(definition).to have_dynamic_declaration(:attribute_name). - ignored. - with_value(attribute_value) + expect(definition).to have_dynamic_declaration(:attribute_name) + .ignored + .with_value(attribute_value) end end @@ -29,9 +29,9 @@ describe FactoryBot::DefinitionProxy, "#transient" do add_attribute(:attribute_name, &attribute_value) end - expect(definition).to have_dynamic_declaration(:attribute_name). - ignored. - with_value(attribute_value) + expect(definition).to have_dynamic_declaration(:attribute_name) + .ignored + .with_value(attribute_value) end end @@ -49,8 +49,8 @@ describe FactoryBot::DefinitionProxy, "#method_missing" do proxy = FactoryBot::DefinitionProxy.new(definition) proxy.author factory: :user - expect(definition).to have_association_declaration(:author). - with_options(factory: :user) + expect(definition).to have_association_declaration(:author) + .with_options(factory: :user) end it "declares a dynamic attribute when called with a block" do @@ -59,8 +59,8 @@ describe FactoryBot::DefinitionProxy, "#method_missing" do attribute_value = -> { "dynamic attribute" } proxy.attribute_name(&attribute_value) - expect(definition).to have_dynamic_declaration(:attribute_name). - with_value(attribute_value) + expect(definition).to have_dynamic_declaration(:attribute_name) + .with_value(attribute_value) end it "raises a NoMethodError when called with a static-attribute-like argument" do @@ -71,7 +71,7 @@ describe FactoryBot::DefinitionProxy, "#method_missing" do expect(invalid_call).to raise_error( NoMethodError, "undefined method 'static_attributes_are_gone' in 'broken' factory\n" \ - "Did you mean? 'static_attributes_are_gone { \"true\" }'\n", + "Did you mean? 'static_attributes_are_gone { \"true\" }'\n" ) end end @@ -98,18 +98,18 @@ describe FactoryBot::DefinitionProxy, "#sequence" do proxy.sequence(:sequence, override) - expect(FactoryBot::Sequence).to have_received(:new). - with(:sequence, override) + expect(FactoryBot::Sequence).to have_received(:new) + .with(:sequence, override) end it "creates a new sequence with a block" do allow(FactoryBot::Sequence).to receive(:new).and_call_original - sequence_block = Proc.new { |n| "user+#{n}@example.com" } + sequence_block = proc { |n| "user+#{n}@example.com" } proxy = build_proxy(:factory) proxy.sequence(:sequence, 1, &sequence_block) - expect(FactoryBot::Sequence).to have_received(:new). - with(:sequence, 1, &sequence_block) + expect(FactoryBot::Sequence).to have_received(:new) + .with(:sequence, 1, &sequence_block) end end @@ -129,18 +129,18 @@ describe FactoryBot::DefinitionProxy, "#association" do proxy.association(:association_name, name: "Awesome") - expect(definition).to have_association_declaration(:association_name). - with_options(name: "Awesome") + expect(definition).to have_association_declaration(:association_name) + .with_options(name: "Awesome") end it "when passing a block raises an error" do definition = FactoryBot::Definition.new(:post) proxy = FactoryBot::DefinitionProxy.new(definition) - expect { proxy.association(:author) {} }. - to raise_error( + expect { proxy.association(:author) {} } + .to raise_error( FactoryBot::AssociationDefinitionError, - "Unexpected block passed to 'author' association in 'post' factory", + "Unexpected block passed to 'author' association in 'post' factory" ) end end @@ -234,7 +234,7 @@ describe FactoryBot::DefinitionProxy, "#factory" do proxy = FactoryBot::DefinitionProxy.new(definition) proxy.factory(:child, awesome: true) - expect(proxy.child_factories).to include([:child, { awesome: true }, nil]) + expect(proxy.child_factories).to include([:child, {awesome: true}, nil]) end it "with a block" do @@ -251,7 +251,7 @@ describe FactoryBot::DefinitionProxy, "#trait" do it "declares a trait" do definition = FactoryBot::Definition.new(:name) proxy = FactoryBot::DefinitionProxy.new(definition) - male_trait = Proc.new { gender { "Male" } } + male_trait = proc { gender { "Male" } } proxy.trait(:male, &male_trait) expect(definition).to have_trait(:male).with_block(male_trait) @@ -262,7 +262,7 @@ describe FactoryBot::DefinitionProxy, "#initialize_with" do it "defines the constructor on the definition" do definition = FactoryBot::Definition.new(:name) proxy = FactoryBot::DefinitionProxy.new(definition) - constructor = Proc.new { Array.new } + constructor = proc { [] } proxy.initialize_with(&constructor) expect(definition.constructor).to eq constructor diff --git a/spec/factory_bot/disallows_duplicates_registry_spec.rb b/spec/factory_bot/disallows_duplicates_registry_spec.rb index 4cf8590..9564cbb 100644 --- a/spec/factory_bot/disallows_duplicates_registry_spec.rb +++ b/spec/factory_bot/disallows_duplicates_registry_spec.rb @@ -13,7 +13,7 @@ describe FactoryBot::Decorator::DisallowsDuplicatesRegistry do decorator = FactoryBot::Decorator::DisallowsDuplicatesRegistry.new(registry) allow(registry).to receive(:registered?).and_return true - expect { decorator.register(:same_name, {}) }. - to raise_error(FactoryBot::DuplicateDefinitionError, "Great thing already registered: same_name") + expect { decorator.register(:same_name, {}) } + .to raise_error(FactoryBot::DuplicateDefinitionError, "Great thing already registered: same_name") end end diff --git a/spec/factory_bot/evaluator_class_definer_spec.rb b/spec/factory_bot/evaluator_class_definer_spec.rb index 12d1f83..e436f24 100644 --- a/spec/factory_bot/evaluator_class_definer_spec.rb +++ b/spec/factory_bot/evaluator_class_definer_spec.rb @@ -22,10 +22,10 @@ describe FactoryBot::EvaluatorClassDefiner do it "only instance_execs the block once even when returning nil" do count = 0 - attribute = stub_attribute :attribute do + attribute = stub_attribute(:attribute) { count += 1 nil - end + } evaluator = define_evaluator(attributes: [attribute]) 2.times { evaluator.attribute } @@ -47,7 +47,7 @@ describe FactoryBot::EvaluatorClassDefiner do child_attributes = [stub_attribute, stub_attribute] child_evaluator = define_evaluator( attributes: child_attributes, - parent_class: parent_evaluator_class, + parent_class: parent_evaluator_class ) expect(child_evaluator.attribute_lists).to eq [parent_attributes, child_attributes] @@ -62,7 +62,7 @@ describe FactoryBot::EvaluatorClassDefiner do def define_evaluator_class(arguments = {}) evaluator_class_definer = FactoryBot::EvaluatorClassDefiner.new( arguments[:attributes] || [], - arguments[:parent_class] || FactoryBot::Evaluator, + arguments[:parent_class] || FactoryBot::Evaluator ) evaluator_class_definer.evaluator_class end diff --git a/spec/factory_bot/factory_spec.rb b/spec/factory_bot/factory_spec.rb index f9ead4c..9635e6e 100644 --- a/spec/factory_bot/factory_spec.rb +++ b/spec/factory_bot/factory_spec.rb @@ -1,6 +1,6 @@ describe FactoryBot::Factory do it "has a factory name" do - name = :user + name = :user factory = FactoryBot::Factory.new(name) FactoryBot::Internal.register_factory(factory) @@ -31,7 +31,7 @@ describe FactoryBot::Factory do it "includes associations from the parent factory" do association_on_parent = FactoryBot::Declaration::Association.new(:association_on_parent, {}) - association_on_child = FactoryBot::Declaration::Association.new(:association_on_child, {}) + association_on_child = FactoryBot::Declaration::Association.new(:association_on_child, {}) define_class("Post") factory = FactoryBot::Factory.new(:post) @@ -48,7 +48,7 @@ describe FactoryBot::Factory do it "returns the overridden value in the generated attributes" do name = :name value = "The price is right!" - hash = { name => value } + hash = {name => value} define_class("Name") factory = FactoryBot::Factory.new(name) declaration = @@ -67,7 +67,7 @@ describe FactoryBot::Factory do declaration = FactoryBot::Declaration::Dynamic.new(name, false, -> { flunk }) factory.declare_attribute(declaration) - hash = { name.to_s => value } + hash = {name.to_s => value} result = factory.run(FactoryBot::Strategy::AttributesFor, hash) expect(result[name]).to eq value @@ -88,7 +88,7 @@ describe FactoryBot::Factory do FactoryBot.aliases << [/(.*)_alias/, '\1'] result = factory.run( FactoryBot::Strategy::AttributesFor, - test_alias: "new", + test_alias: "new" ) expect(result[:test_alias]).to eq "new" @@ -107,7 +107,7 @@ describe FactoryBot::Factory do FactoryBot.aliases << [/(.*)_alias/, '\1'] result = factory.run( FactoryBot::Strategy::AttributesFor, - test_alias: "new", + test_alias: "new" ) expect(result[:test]).to be_nil @@ -135,7 +135,7 @@ describe FactoryBot::Factory do end it "creates a new factory while overriding the parent class" do - name = :user + name = :user define_class("User") factory = FactoryBot::Factory.new(name) FactoryBot::Internal.register_factory(factory) @@ -296,8 +296,8 @@ describe FactoryBot::Factory, "running a factory" do declaration = FactoryBot::Declaration::Dynamic.new(:name, false, -> { "value" }) strategy = double("strategy", result: "result", add_observer: true) define_model("User", name: :string) - allow(FactoryBot::Declaration::Dynamic).to receive(:new). - and_return declaration + allow(FactoryBot::Declaration::Dynamic).to receive(:new) + .and_return declaration allow(declaration).to receive(:to_attributes).and_return attributes allow(FactoryBot::Strategy::Build).to receive(:new).and_return strategy factory = FactoryBot::Factory.new(:user) diff --git a/spec/factory_bot/find_definitions_spec.rb b/spec/factory_bot/find_definitions_spec.rb index 3bfd52a..cb7208d 100644 --- a/spec/factory_bot/find_definitions_spec.rb +++ b/spec/factory_bot/find_definitions_spec.rb @@ -49,7 +49,7 @@ describe "definition loading" do end end - %w(spec test).each do |dir| + %w[spec test].each do |dir| describe "with a factories file under #{dir}" do in_directory_with_files File.join(dir, "factories.rb") it_should_behave_like "finds definitions" do @@ -66,7 +66,7 @@ describe "definition loading" do describe "with several factories files under #{dir}/factories" do in_directory_with_files File.join(dir, "factories", "post_factory.rb"), - File.join(dir, "factories", "person_factory.rb") + File.join(dir, "factories", "person_factory.rb") it_should_behave_like "finds definitions" do it { should load_definitions_from("#{dir}/factories/post_factory.rb") } it { should load_definitions_from("#{dir}/factories/person_factory.rb") } @@ -75,7 +75,7 @@ describe "definition loading" do describe "with several factories files under #{dir}/factories in non-alphabetical order" do in_directory_with_files File.join(dir, "factories", "b.rb"), - File.join(dir, "factories", "a.rb") + File.join(dir, "factories", "a.rb") it "loads the files in the right order" do allow(FactoryBot).to receive(:load) wd = File.dirname(__FILE__) @@ -91,8 +91,8 @@ describe "definition loading" do describe "with nested and unnested factories files under #{dir}" do in_directory_with_files File.join(dir, "factories.rb"), - File.join(dir, "factories", "post_factory.rb"), - File.join(dir, "factories", "person_factory.rb") + File.join(dir, "factories", "post_factory.rb"), + File.join(dir, "factories", "person_factory.rb") it_should_behave_like "finds definitions" do it { should load_definitions_from("#{dir}/factories.rb") } it { should load_definitions_from("#{dir}/factories/post_factory.rb") } @@ -102,7 +102,7 @@ describe "definition loading" do describe "with deeply nested factory files under #{dir}" do in_directory_with_files File.join(dir, "factories", "subdirectory", "post_factory.rb"), - File.join(dir, "factories", "subdirectory", "person_factory.rb") + File.join(dir, "factories", "subdirectory", "person_factory.rb") it_should_behave_like "finds definitions" do it { should load_definitions_from("#{dir}/factories/subdirectory/post_factory.rb") } it { should load_definitions_from("#{dir}/factories/subdirectory/person_factory.rb") } diff --git a/spec/factory_bot/internal_spec.rb b/spec/factory_bot/internal_spec.rb index 5bb222c..0d4828b 100644 --- a/spec/factory_bot/internal_spec.rb +++ b/spec/factory_bot/internal_spec.rb @@ -4,10 +4,10 @@ describe FactoryBot::Internal do trait = FactoryBot::Trait.new(:admin) configuration = FactoryBot::Internal.configuration - expect { FactoryBot::Internal.register_trait(trait) }. - to change { configuration.traits.count }. - from(0). - to(1) + expect { FactoryBot::Internal.register_trait(trait) } + .to change { configuration.traits.count } + .from(0) + .to(1) end it "returns the registered trait" do @@ -31,10 +31,10 @@ describe FactoryBot::Internal do sequence = FactoryBot::Sequence.new(:email) configuration = FactoryBot::Internal.configuration - expect { FactoryBot::Internal.register_sequence(sequence) }. - to change { configuration.sequences.count }. - from(0). - to(1) + expect { FactoryBot::Internal.register_sequence(sequence) } + .to change { configuration.sequences.count } + .from(0) + .to(1) end it "returns the registered sequence" do @@ -75,10 +75,10 @@ describe FactoryBot::Internal do factory = FactoryBot::Factory.new(:object) configuration = FactoryBot::Internal.configuration - expect { FactoryBot::Internal.register_factory(factory) }. - to change { configuration.factories.count }. - from(0). - to(1) + expect { FactoryBot::Internal.register_factory(factory) } + .to change { configuration.factories.count } + .from(0) + .to(1) end it "returns the registered factory" do @@ -101,10 +101,10 @@ describe FactoryBot::Internal do it "registers the provided factory" do factory = FactoryBot::Factory.new(:object) configuration = FactoryBot::Internal.configuration - expect { FactoryBot::Internal.register_factory(factory) }. - to change { configuration.factories.count }. - from(0). - to(1) + expect { FactoryBot::Internal.register_factory(factory) } + .to change { configuration.factories.count } + .from(0) + .to(1) end it "returns the registered factory" do @@ -125,19 +125,19 @@ describe FactoryBot::Internal do it "register the provided strategy name with the class" do configuration = FactoryBot::Internal.configuration initial_strategies_count = configuration.strategies.count - expect do + expect { FactoryBot::Internal.register_strategy(:strategy_name, :strategy_class) - end.to change { configuration.strategies.count }. - from(initial_strategies_count). - to(initial_strategies_count + 1) + }.to change { configuration.strategies.count } + .from(initial_strategies_count) + .to(initial_strategies_count + 1) end end describe ".strategy_by_name" do it "finds a registered strategy" do FactoryBot::Internal.register_strategy(:strategy_name, :strategy_class) - expect(FactoryBot::Internal.strategy_by_name(:strategy_name)). - to eq :strategy_class + expect(FactoryBot::Internal.strategy_by_name(:strategy_name)) + .to eq :strategy_class end end end diff --git a/spec/factory_bot/registry_spec.rb b/spec/factory_bot/registry_spec.rb index cd364ef..1f42e9a 100644 --- a/spec/factory_bot/registry_spec.rb +++ b/spec/factory_bot/registry_spec.rb @@ -24,8 +24,8 @@ describe FactoryBot::Registry do it "raises when an object cannot be found" do registry = FactoryBot::Registry.new("Great thing") - expect { registry.find(:object_name) }. - to raise_error(KeyError, "Great thing not registered: \"object_name\"") + expect { registry.find(:object_name) } + .to raise_error(KeyError, "Great thing not registered: \"object_name\"") end it "adds and returns the object registered" do diff --git a/spec/factory_bot/sequence_spec.rb b/spec/factory_bot/sequence_spec.rb index 8fbd5e7..9033f11 100644 --- a/spec/factory_bot/sequence_spec.rb +++ b/spec/factory_bot/sequence_spec.rb @@ -1,5 +1,5 @@ shared_examples "a sequence" do |options| - first_value = options[:first_value] + first_value = options[:first_value] second_value = options[:second_value] it "has a next value equal to its first value" do @@ -23,9 +23,9 @@ end describe FactoryBot::Sequence do describe "a basic sequence" do let(:name) { :test } - subject { FactoryBot::Sequence.new(name) { |n| "=#{n}" } } + subject { FactoryBot::Sequence.new(name) { |n| "=#{n}" } } - its(:name) { should eq name } + its(:name) { should eq name } its(:names) { should eq [name] } it_behaves_like "a sequence", first_value: "=1", second_value: "=2" @@ -46,9 +46,9 @@ describe FactoryBot::Sequence do it "has the expected names as its names" do names = [:foo, :bar, :baz] - sequence = FactoryBot::Sequence.new(names.first, aliases: names.last(2)) do + sequence = FactoryBot::Sequence.new(names.first, aliases: names.last(2)) { "=#{n}" - end + } expect(sequence.names).to eq names end @@ -65,9 +65,9 @@ describe FactoryBot::Sequence do it "has the expected names as its names" do names = [:foo, :bar, :baz] - sequence = FactoryBot::Sequence.new(names.first, 3, aliases: names.last(2)) do + sequence = FactoryBot::Sequence.new(names.first, 3, aliases: names.last(2)) { "=#{n}" - end + } expect(sequence.names).to eq names end diff --git a/spec/factory_bot/strategy/attributes_for_spec.rb b/spec/factory_bot/strategy/attributes_for_spec.rb index a90f1ac..916a392 100644 --- a/spec/factory_bot/strategy/attributes_for_spec.rb +++ b/spec/factory_bot/strategy/attributes_for_spec.rb @@ -1,5 +1,5 @@ describe FactoryBot::Strategy::AttributesFor do - let(:result) { { name: "John Doe", gender: "Male", admin: false } } + let(:result) { {name: "John Doe", gender: "Male", admin: false} } let(:evaluation) { double("evaluation", hash: result) } it_should_behave_like "strategy without association support" @@ -9,8 +9,8 @@ describe FactoryBot::Strategy::AttributesFor do end it "does not run the to_create block" do - expect do + expect { subject.result(evaluation) - end.to_not raise_error + }.to_not raise_error end end diff --git a/spec/factory_bot/strategy/create_spec.rb b/spec/factory_bot/strategy/create_spec.rb index d9128f7..cdd7f20 100644 --- a/spec/factory_bot/strategy/create_spec.rb +++ b/spec/factory_bot/strategy/create_spec.rb @@ -7,7 +7,7 @@ describe FactoryBot::Strategy::Create do "evaluation", object: nil, notify: nil, - create: nil, + create: nil ) subject.result(evaluation) diff --git a/spec/factory_bot/strategy/stub_spec.rb b/spec/factory_bot/strategy/stub_spec.rb index 4ce2711..12550ab 100644 --- a/spec/factory_bot/strategy/stub_spec.rb +++ b/spec/factory_bot/strategy/stub_spec.rb @@ -11,7 +11,7 @@ shared_examples "disabled persistence method" do |method_name| it "raises an informative error if the method is called" do expect { instance.send(method_name) }.to raise_error( RuntimeError, - "stubbed models are not allowed to access the database - #{instance.class}##{method_name}()", + "stubbed models are not allowed to access the database - #{instance.class}##{method_name}()" ) end end @@ -24,9 +24,9 @@ describe FactoryBot::Strategy::Stub do context "asking for a result" do let(:result_instance) do - define_class("ResultInstance") do + define_class("ResultInstance") { attr_accessor :id, :created_at - end.new + }.new end let(:evaluation) do diff --git a/spec/factory_bot_spec.rb b/spec/factory_bot_spec.rb index 1795692..5da9f2d 100644 --- a/spec/factory_bot_spec.rb +++ b/spec/factory_bot_spec.rb @@ -1,8 +1,8 @@ describe FactoryBot do it "finds a registered strategy" do FactoryBot.register_strategy(:strategy_name, :strategy_class) - expect(FactoryBot.strategy_by_name(:strategy_name)). - to eq :strategy_class + expect(FactoryBot.strategy_by_name(:strategy_name)) + .to eq :strategy_class end describe ".use_parent_strategy" do diff --git a/spec/support/macros/define_constant.rb b/spec/support/macros/define_constant.rb index aee6400..b8c4b10 100644 --- a/spec/support/macros/define_constant.rb +++ b/spec/support/macros/define_constant.rb @@ -39,9 +39,9 @@ module DefineConstantMacros end def clear_generated_table(table_name) - ActiveRecord::Base. - connection. - execute("DROP TABLE IF EXISTS #{table_name}") + ActiveRecord::Base + .connection + .execute("DROP TABLE IF EXISTS #{table_name}") end private @@ -57,7 +57,7 @@ RSpec.configure do |config| config.before(:all) do ActiveRecord::Base.establish_connection( adapter: "sqlite3", - database: ":memory:", + database: ":memory:" ) end diff --git a/spec/support/matchers/declaration.rb b/spec/support/matchers/declaration.rb index 0737d00..65e4663 100644 --- a/spec/support/matchers/declaration.rb +++ b/spec/support/matchers/declaration.rb @@ -48,7 +48,7 @@ module DeclarationMatchers def failure_message [ "expected declarations to include declaration of type #{@declaration_type}", - @options ? "with options #{options}" : nil, + @options ? "with options #{options}" : nil ].compact.join " " end @@ -56,8 +56,8 @@ module DeclarationMatchers def expected_declaration case @declaration_type - when :dynamic then FactoryBot::Declaration::Dynamic.new(@name, ignored?, @value) - when :implicit then FactoryBot::Declaration::Implicit.new(@name, @factory, ignored?) + when :dynamic then FactoryBot::Declaration::Dynamic.new(@name, ignored?, @value) + when :implicit then FactoryBot::Declaration::Implicit.new(@name, @factory, ignored?) when :association if @options FactoryBot::Declaration::Association.new(@name, options) diff --git a/spec/support/shared_examples/strategy.rb b/spec/support/shared_examples/strategy.rb index 16502a6..19bf60c 100644 --- a/spec/support/shared_examples/strategy.rb +++ b/spec/support/shared_examples/strategy.rb @@ -1,5 +1,5 @@ shared_examples_for "strategy without association support" do - let(:factory) { double("associate_factory") } + let(:factory) { double("associate_factory") } let(:attribute) { FactoryBot::Attribute::Association.new(:user, :user, {}) } def association_named(name, overrides) @@ -70,9 +70,9 @@ end shared_examples_for "strategy with callbacks" do |*callback_names| let(:result_instance) do - define_class("ResultInstance") do + define_class("ResultInstance") { attr_accessor :id - end.new + }.new end let(:evaluation) do