Skip to content

Commit a7543d2

Browse files
authored
Merge pull request #162 from solidusio/elia/factory_bot_fixes
Factory bot fixes for latest Solidus 2.11 release
2 parents c5942f3 + d96e3ef commit a7543d2

6 files changed

Lines changed: 36 additions & 5 deletions

File tree

Gemfile

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ gem 'rails', '>0.a'
1515

1616
# These gems will be used by the temporary extensions generated by tests
1717
group :test do
18-
gem 'factory_bot', '> 4.10.0'
1918
gem 'mysql2'
2019
gem 'pg'
2120
gem 'solidus_auth_devise'

lib/solidus_dev_support/rspec/rails_helper.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,9 @@
2020
require 'spree/testing_support/url_helpers'
2121
require 'spree/testing_support/preferences'
2222
require 'spree/testing_support/controller_requests'
23+
require 'solidus_dev_support/testing_support/factories'
2324
require 'solidus_dev_support/testing_support/preferences'
2425

25-
FactoryBot.find_definitions
26-
2726
RSpec.configure do |config|
2827
config.infer_spec_type_from_file_location!
2928

lib/solidus_dev_support/templates/extension/spec/spec_helper.rb.tt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ require 'solidus_dev_support/rspec/feature_helper'
1919
Dir["#{__dir__}/support/**/*.rb"].sort.each { |f| require f }
2020

2121
# Requires factories defined in lib/<%= file_name %>/testing_support/factories.rb
22-
require '<%= file_name %>/testing_support/factories'
22+
SolidusDevSupport::TestingSupport::Factories.load_for(<%= class_name %>::Engine)
2323

2424
RSpec.configure do |config|
2525
config.infer_spec_type_from_file_location!
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# frozen_string_literal: true
2+
3+
require 'spree/testing_support/factories'
4+
require 'factory_bot'
5+
6+
module SolidusDevSupport
7+
module TestingSupport
8+
module Factories
9+
def self.load_for(*engines)
10+
paths = engines.flat_map do |engine|
11+
engine.root.glob('lib/**/factories.rb')
12+
end
13+
14+
if Spree::TestingSupport.respond_to? :load_all_factories
15+
FactoryBot.definition_file_paths.concat(
16+
paths.map { |path| path.sub(/.rb\z/, '').to_s }
17+
)
18+
FactoryBot.reload
19+
else
20+
FactoryBot.find_definitions
21+
22+
paths.each { |path| require path }
23+
end
24+
end
25+
end
26+
end
27+
end

solidus_dev_support.gemspec

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ Gem::Specification.new do |spec|
3232
spec.add_dependency 'capybara-screenshot', '~> 1.0'
3333
spec.add_dependency 'codecov', '~> 0.2'
3434
spec.add_dependency 'database_cleaner', '~> 1.7'
35-
spec.add_dependency 'factory_bot_rails', '~> 5.1'
35+
spec.add_dependency 'factory_bot', '~> 4.8'
36+
spec.add_dependency 'factory_bot_rails'
3637
spec.add_dependency 'ffaker', '~> 2.13'
3738
spec.add_dependency 'gem-release', '~> 2.1'
3839
spec.add_dependency 'github_changelog_generator', '~> 1.15'

spec/features/create_extension_spec.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,11 +122,16 @@ def check_default_task
122122
end
123123

124124
def check_run_specs
125+
install_path.join('lib', 'solidus_test_extension', 'testing_support', 'factories.rb').open('a') do |factories_file|
126+
factories_file.write "\n puts 'loading test_extension factories'"
127+
end
128+
125129
install_path.join('spec', 'some_spec.rb').write(
126130
"require 'spec_helper'\nRSpec.describe 'Some test' do it { expect(true).to be_truthy } end\n"
127131
)
128132
cd(install_path) do
129133
output = sh('bundle exec rspec')
134+
expect(output).to include('loading test_extension factories')
130135
expect(output).to include('1 example, 0 failures')
131136
expect(output).to include(ENV['CODECOV_TOKEN'] ? 'Coverage reports upload successfully' : 'Provide a CODECOV_TOKEN environment variable to enable Codecov uploads')
132137
end

0 commit comments

Comments
 (0)