# frozen_string_literal: true require 'generators/spree/dummy/dummy_generator' class CommonRakeTasks include Rake::DSL def initialize namespace :common do task :test_app, :user_class do |_t, args| args.with_defaults(user_class: "Spree::LegacyUser") lib_name = ENV['LIB_NAME'] or raise "Please provide a library name via the LIB_NAME environment variable." require lib_name force_rails_environment_to_test Spree::DummyGenerator.start [ "--lib-name=#{lib_name}", "--quiet", ] # While the dummy app is generated the current directory # within ruby is changed to that of the dummy app. sh({ 'FRONTEND' => ENV['FRONTEND'] || 'classic', }, [ 'bin/rails', 'generate', 'solidus:install', Dir.pwd, # use the current dir as Rails.root "--auto-accept", "--authentication=none", "--payment-method=none", "--migrate=false", "--seed=false", "--sample=false", "--user-class=#{args[:user_class]}", "--quiet", ].shelljoin) puts "Setting up dummy database..." sh "bin/rails db:environment:set RAILS_ENV=test" sh "bin/rails db:drop db:create db:migrate VERBOSE=false RAILS_ENV=test" if extension_installation_generator_exists? puts 'Running extension installation generator...' sh "bin/rails generate #{rake_generator_namespace}:install --auto-run-migrations" end end task :seed do |_t, _args| puts "Seeding ..." sh "bundle exec rake db:seed RAILS_ENV=test" end end end private def force_rails_environment_to_test ENV["RAILS_ENV"] = 'test' Rails.env = 'test' end def extension_installation_generator_exists? require "generators/#{generator_namespace}/install/install_generator" true rescue LoadError false end def generator_namespace "#{ENV['LIB_NAMESPACE']&.underscore || ENV['LIB_NAME']}" end def rake_generator_namespace generator_namespace.gsub("/", ":") end end CommonRakeTasks.new