madetech/market_town

View on GitHub
checkout/Rakefile

Summary

Maintainability
Test Coverage
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