Module: Spree::TestingSupport::FactoryBot
- Defined in:
- lib/spree/testing_support/factory_bot.rb
Constant Summary collapse
- SEQUENCES =
["#{::Spree::Core::Engine.root}/lib/spree/testing_support/sequences.rb"]
- FACTORIES =
Dir["#{::Spree::Core::Engine.root}/lib/spree/testing_support/factories/**/*_factory.rb"].sort
- PATHS =
SEQUENCES + FACTORIES
Class Method Summary collapse
- .add_definitions! ⇒ Object
- .add_paths_and_load! ⇒ Object
- .check_version ⇒ Object
- .definition_file_paths ⇒ Object
- .deprecate_cherry_picking ⇒ Object
- .when_cherry_picked ⇒ Object
Class Method Details
.add_definitions! ⇒ Object
58 59 60 |
# File 'lib/spree/testing_support/factory_bot.rb', line 58 def self.add_definitions! ::FactoryBot.definition_file_paths.unshift(*definition_file_paths).uniq! end |
.add_paths_and_load! ⇒ Object
62 63 64 65 |
# File 'lib/spree/testing_support/factory_bot.rb', line 62 def self.add_paths_and_load! add_definitions! ::FactoryBot.reload end |
.check_version ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/spree/testing_support/factory_bot.rb', line 44 def self.check_version require "factory_bot/version" requirement = Gem::Requirement.new(">= 4.8") version = Gem::Version.new(::FactoryBot::VERSION) unless requirement.satisfied_by? version Spree::Deprecation.warn( "Please be aware that the supported version of FactoryBot is #{requirement}, " \ "using version #{version} could lead to factory loading issues.", caller(2) ) end end |
.definition_file_paths ⇒ Object
16 17 18 |
# File 'lib/spree/testing_support/factory_bot.rb', line 16 def self.definition_file_paths @paths ||= PATHS.map { |path| path.sub(/.rb\z/, '') } end |
.deprecate_cherry_picking ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/spree/testing_support/factory_bot.rb', line 32 def self.deprecate_cherry_picking callsites = caller core_root = Spree::Core::Engine.root.to_s index = callsites.index { |line| !line.start_with? core_root } Spree::Deprecation.warn( "Please do not cherry-pick factories, this is not well supported by FactoryBot, " \ 'follow the changelog instructions on how to migrate your current setup.', callsites[index..] ) end |
.when_cherry_picked ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/spree/testing_support/factory_bot.rb', line 20 def self.when_cherry_picked callsites = caller # All good if the factory is being loaded by FactoryBot or from `testing_support/factories.rb`. return if callsites.find do |line| line.include?("/factory_bot/find_definitions.rb") || line.include?("/spree/testing_support/factories.rb") end yield end |