checkout/Rakefile
require 'bundler/gem_tasks'
require 'rubocop/rake_task'
require 'rspec/core/rake_task'
require 'generators/spree/install/install_generator'
require 'market_town/checkout/generators/dummy_generator'
desc 'Run full spec suite'
task default: [:rubocop, :common_spec, :spree_spec, :solidus_spec]
RuboCop::RakeTask.new
desc 'Run common specs'
RSpec::Core::RakeTask.new(:common_spec) do |spec|
spec.exclude_pattern = 'spec/checkout/integrations/**/*_spec.rb'
end
desc 'Run spree specs, creating test app if it does not exist'
RSpec::Core::RakeTask.new(:spree_spec) do |spec|
ENV['BUNDLE_GEMFILE'] = File.expand_path('../Gemfile.spree.rb', __FILE__)
spec.pattern = integration_pattern(:spree)
system 'bundle exec rake create_spree_test_app'
end
desc 'Run solidus specs, creating test app if it does not exist'
RSpec::Core::RakeTask.new(:solidus_spec) do |spec|
ENV['BUNDLE_GEMFILE'] = File.expand_path('../Gemfile.solidus.rb', __FILE__)
spec.pattern = integration_pattern(:solidus)
system 'bundle exec rake create_solidus_test_app'
end
desc 'Remove dummy applications'
task :cleanup do
system 'rm -rf spec/fixtures/*/dummy/'
end
desc 'Create test spree app'
task :create_spree_test_app do
ENV['DUMMY_PATH'] = 'spec/fixtures/spree/dummy/'
build_test_app
end
desc 'Create test solidus app'
task :create_solidus_test_app do
ENV['DUMMY_PATH'] = 'spec/fixtures/solidus/dummy/'
build_test_app
end
def build_test_app
return if File.exist?(ENV['DUMMY_PATH'])
require 'spree/core'
ENV['RAILS_ENV'] = 'test'
MarketTown::Checkout::DummyGenerator.start(%w(--lib_name=market_town/checkout
--quiet))
Spree::InstallGenerator.start(%w(--lib_name=market_town/checkout
--auto-accept
--migrate=false
--seed=false
--sample=false
--quiet
--user_class=Spree::User
--skip-sprockets))
puts 'Setting up dummy database...'
silence_stream(STDOUT) do
sh 'bundle exec rake db:drop db:create db:migrate'
end
end
def integration_pattern(integration)
path = "../spec/checkout/integrations/#{integration}/{,**/}*_spec.rb"
Dir[File.expand_path(path, __FILE__)]
end