require 'simplecov' SimpleCov.start require 'rubygems' # Require pry when we're not inside Travis-CI require 'pry' unless ENV['HAS_JOSH_K_SEAL_OF_APPROVAL'] ENV["RAILS_ENV"] ||= 'test' require File.expand_path("../../config/environment", __FILE__) require 'rspec/rails' require 'capybara' require 'database_cleaner' # Allow connections to phantomjs/selenium whilst raising errors # when connecting to external sites require 'webmock/rspec' WebMock.disable_net_connect!(:allow_localhost => true) # Requires supporting ruby files with custom matchers and macros, etc, # in spec/support/ and its subdirectories. Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f} require 'spree/core/testing_support/controller_requests' require 'spree/core/testing_support/capybara_ext' require 'spree/api/testing_support/setup' require 'spree/api/testing_support/helpers' require 'spree/api/testing_support/helpers_decorator' require 'spree/core/testing_support/authorization_helpers' require 'active_record/fixtures' fixtures_dir = File.expand_path('../../db/default', __FILE__) ActiveRecord::Fixtures.create_fixtures(fixtures_dir, ['spree/states', 'spree/countries']) # Capybara config require 'capybara/poltergeist' Capybara.javascript_driver = :poltergeist Capybara.register_driver :poltergeist do |app| options = {phantomjs_options: ['--load-images=no'], window_size: [1280, 800]} # Extend poltergeist's timeout to allow ample time to use pry in browser thread #options.merge! {timeout: 5.minutes} # Enable the remote inspector: Use page.driver.debug to open a remote debugger in chrome #options.merge! {inspector: true} Capybara::Poltergeist::Driver.new(app, options) end Capybara.default_wait_time = 30 require "paperclip/matchers" RSpec.configure do |config| # ## Mock Framework # # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line: # # config.mock_with :mocha # config.mock_with :flexmock # config.mock_with :rr # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures config.fixture_path = "#{::Rails.root}/spec/fixtures" # If you're not using ActiveRecord, or you'd prefer not to run each of your # examples within a transaction, remove the following line or assign false # instead of true. config.use_transactional_fixtures = false # If true, the base class of anonymous controllers will be inferred # automatically. This will be the default behavior in future versions of # rspec-rails. config.infer_base_class_for_anonymous_controllers = false # Filters config.filter_run_excluding :skip => true, :future => true, :to_figure_out => true # DatabaseCleaner config.before(:suite) { DatabaseCleaner.clean_with :deletion, {except: ['spree_countries', 'spree_states']} } config.before(:each) { DatabaseCleaner.strategy = :transaction } config.before(:each, js: true) { DatabaseCleaner.strategy = :deletion, {except: ['spree_countries', 'spree_states']} } config.before(:each) { DatabaseCleaner.start } config.after(:each) { DatabaseCleaner.clean } # Geocoding config.before(:each) { Spree::Address.any_instance.stub(:geocode).and_return([1,1]) } # Helpers config.include Rails.application.routes.url_helpers config.include Spree::UrlHelpers config.include Spree::CheckoutHelpers config.include Spree::Core::TestingSupport::ControllerRequests, :type => :controller config.include Devise::TestHelpers, :type => :controller config.extend Spree::Api::TestingSupport::Setup, :type => :controller config.include Spree::Api::TestingSupport::Helpers, :type => :controller config.include OpenFoodNetwork::ControllerHelper, :type => :controller config.include OpenFoodNetwork::FeatureToggleHelper config.include OpenFoodNetwork::EnterpriseGroupsHelper config.include OpenFoodNetwork::DistributionHelper config.include ActionView::Helpers::DateHelper # FactoryGirl require 'factory_girl_rails' config.include FactoryGirl::Syntax::Methods config.include Paperclip::Shoulda::Matchers config.include JsonSpec::Helpers # Profiling # # This code shouldn't be run in normal circumstances. But if you want to know # which parts of your code take most time, then you can activate the lines # below. Keep in mind that it will slow down the execution time heaps. # # The PerfTools will write a binary file to the specified path which can then # be examined by: # # bundle exec pprof.rb --text /tmp/rspec_profile # #require 'perftools' #config.before :suite do # PerfTools::CpuProfiler.start("/tmp/rspec_profile") #end # #config.after :suite do # PerfTools::CpuProfiler.stop #end end