Skip to content

Commit

Permalink
Adjust dummy_app initialization
Browse files Browse the repository at this point in the history
Previously we initialized the dummy_app implicitly when requiring the
file. Because of this we were relying on some hacks like using
ENV['BUNDLE_GEMFILE'] to try and determine the path to the desired
spec/dummy.

To be more reliable and to allow a single Gemfile, this commit requires
the app to be explcitly initialized through a new DummyApp.setup method.
  • Loading branch information
jhawthorn committed Dec 6, 2017
1 parent 59ad9c0 commit 6b7d4c3
Show file tree
Hide file tree
Showing 12 changed files with 74 additions and 36 deletions.
7 changes: 5 additions & 2 deletions api/Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,12 @@ require 'rake/testtask'
require 'rspec/core/rake_task'
require 'spree/testing_support/dummy_app/rake_tasks'

ENV['LIB_NAME'] = 'solidus_api'

RSpec::Core::RakeTask.new
task default: :spec

DummyApp::RakeTasks.new(
gem_root: File.expand_path('../', __FILE__),
lib_name: 'solidus_api'
)

task test_app: 'db:reset'
6 changes: 4 additions & 2 deletions api/spec/spec_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,13 @@

# This file is copied to spec/ when you run 'rails generate rspec:install'
ENV["RAILS_ENV"] ||= 'test'
ENV["LIB_NAME"] = 'solidus_api'

require 'solidus_api'
require 'spree/testing_support/dummy_app'
DummyApp::Migrations.auto_migrate
DummyApp.setup(
gem_root: File.expand_path('../../', __FILE__),
lib_name: 'solidus_api'
)

require 'rails-controller-testing'
require 'rspec/rails'
Expand Down
7 changes: 5 additions & 2 deletions backend/Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,14 @@ require 'rspec/core/rake_task'
require 'solidus_backend'
require 'spree/testing_support/dummy_app/rake_tasks'

ENV['LIB_NAME'] = 'solidus_backend'

RSpec::Core::RakeTask.new
task default: :spec

DummyApp::RakeTasks.new(
gem_root: File.expand_path('../', __FILE__),
lib_name: 'solidus_backend'
)

desc "Run the javascript specs"
task :teaspoon do
require "teaspoon/console"
Expand Down
6 changes: 4 additions & 2 deletions backend/spec/spec_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,13 @@
# This file is copied to ~/spec when you run 'ruby script/generate rspec'
# from the project root directory.
ENV["RAILS_ENV"] ||= 'test'
ENV["LIB_NAME"] = 'solidus_backend'

require 'solidus_backend'
require 'spree/testing_support/dummy_app'
DummyApp::Migrations.auto_migrate
DummyApp.setup(
gem_root: File.expand_path('../../', __FILE__),
lib_name: 'solidus_backend'
)

require 'rails-controller-testing'
require 'rspec-activemodel-mocks'
Expand Down
7 changes: 5 additions & 2 deletions core/Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,12 @@ require 'rake/testtask'
require 'rspec/core/rake_task'
require 'spree/testing_support/dummy_app/rake_tasks'

ENV['LIB_NAME'] = 'solidus_core'

RSpec::Core::RakeTask.new
task default: :spec

DummyApp::RakeTasks.new(
gem_root: File.dirname(__FILE__),
lib_name: 'solidus_core'
)

task test_app: 'db:reset'
24 changes: 12 additions & 12 deletions core/lib/spree/testing_support/dummy_app.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,16 +24,22 @@ module ApplicationHelper
end

module DummyApp
def self.gem_root
Pathname.new(File.dirname(ENV['BUNDLE_GEMFILE']))
end
def self.setup(gem_root:, lib_name:, auto_migrate: true)
ENV["LIB_NAME"] = lib_name
DummyApp::Application.config.root = File.join(gem_root, 'spec', 'dummy')

DummyApp::Application.initialize!

DummyApp::Application.routes.draw do
mount Spree::Core::Engine, at: '/'
end

def self.rails_root
Pathname.new(gem_root).join('spec', 'dummy')
if auto_migrate
DummyApp::Migrations.auto_migrate
end
end

class Application < ::Rails::Application
config.root = DummyApp.rails_root
config.eager_load = false
config.cache_classes = true
config.cache_store = :memory_store
Expand Down Expand Up @@ -80,12 +86,6 @@ class Application < ::Rails::Application

require 'spree/testing_support/dummy_app/migrations'

DummyApp::Application.initialize!

DummyApp::Application.routes.draw do
mount Spree::Core::Engine, at: '/'
end

ActiveSupport.on_load(:action_controller) do
wrap_parameters format: [:json]
end
Expand Down
21 changes: 17 additions & 4 deletions core/lib/spree/testing_support/dummy_app/rake_tasks.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,20 @@
task :dummy_environment do
ENV['RAILS_ENV'] = 'test'
require ENV['LIB_NAME'] if ENV['LIB_NAME']
require 'spree/testing_support/dummy_app'
module DummyApp
class RakeTasks
include Rake::DSL

def initialize(gem_root:, lib_name:)
task :dummy_environment do
ENV['RAILS_ENV'] = 'test'
require lib_name
require 'spree/testing_support/dummy_app'
DummyApp.setup(
gem_root: gem_root,
lib_name: lib_name,
auto_migrate: false
)
end
end
end
end

namespace :db do
Expand Down
6 changes: 4 additions & 2 deletions core/spec/rails_helper.rb
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
require 'spec_helper'

ENV["RAILS_ENV"] ||= 'test'
ENV["LIB_NAME"] = 'solidus_core'

require 'spree/testing_support/dummy_app'
DummyApp::Migrations.auto_migrate
DummyApp.setup(
gem_root: File.expand_path('../../', __FILE__),
lib_name: 'solidus_core'
)

require 'rspec/rails'
require 'rspec-activemodel-mocks'
Expand Down
7 changes: 5 additions & 2 deletions frontend/Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,12 @@ require 'rake/testtask'
require 'rspec/core/rake_task'
require 'spree/testing_support/dummy_app/rake_tasks'

ENV['LIB_NAME'] = 'solidus_frontend'

RSpec::Core::RakeTask.new
task default: :spec

DummyApp::RakeTasks.new(
gem_root: File.expand_path('../', __FILE__),
lib_name: 'solidus_frontend'
)

task test_app: 'db:reset'
6 changes: 4 additions & 2 deletions frontend/spec/spec_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,13 @@
# This file is copied to ~/spec when you run 'ruby script/generate rspec'
# from the project root directory.
ENV["RAILS_ENV"] ||= 'test'
ENV["LIB_NAME"] = 'solidus_frontend'

require 'solidus_frontend'
require 'spree/testing_support/dummy_app'
DummyApp::Migrations.auto_migrate
DummyApp.setup(
gem_root: File.expand_path('../../', __FILE__),
lib_name: 'solidus_frontend'
)

require 'rails-controller-testing'
require 'rspec/rails'
Expand Down
7 changes: 5 additions & 2 deletions sample/Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,12 @@ require 'rake/testtask'
require 'rspec/core/rake_task'
require 'spree/testing_support/dummy_app/rake_tasks'

ENV['LIB_NAME'] = 'solidus_sample'

RSpec::Core::RakeTask.new
task default: :spec

DummyApp::RakeTasks.new(
gem_root: File.expand_path('../', __FILE__),
lib_name: 'solidus_sample'
)

task test_app: 'db:reset'
6 changes: 4 additions & 2 deletions sample/spec/spec_helper.rb
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
# This file is copied to ~/spec when you run 'ruby script/generate rspec'
# from the project root directory.
ENV["RAILS_ENV"] ||= 'test'
ENV["LIB_NAME"] = 'solidus_sample'

require 'solidus_sample'
require 'spree/testing_support/dummy_app'
DummyApp::Migrations.auto_migrate
DummyApp.setup(
gem_root: File.expand_path('../../', __FILE__),
lib_name: 'solidus_sample'
)

require 'rspec/rails'
require 'database_cleaner'
Expand Down

0 comments on commit 6b7d4c3

Please sign in to comment.