require 'rubygems'
require 'spork'
require 'pp'
require 'paperclip/matchers'

# uncomment the following line to use spork with the debugger
# require 'spork/ext/ruby-debug'

Spork.prefork do
  ENV['RAILS_ENV'] ||= 'test'

  unless ENV['DRB']
    require 'simplecov'
    SimpleCov.start 'rails'
  end

  require 'rails/application'

  Spork.trap_method(Rails::Application, :eager_load!)
  Spork.trap_method(Rails::Application::RoutesReloader, :reload!)

  require File.expand_path('../dummy/config/environment', __FILE__)
  require 'rspec/rails'
  require 'shoulda/matchers'
  require 'factory_girl'
  require 'database_cleaner'

  RSpec.configure do |config|
    config.include FactoryGirl::Syntax::Methods
    config.include Paperclip::Shoulda::Matchers
    ### Mock Framework
    #
    # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
    #
    config.mock_framework = :rspec

    config.before(:suite) do
      DatabaseCleaner.clean_with(:truncation)
    end

    config.before(:each) do
      DatabaseCleaner.strategy = :truncation
    end

    config.before(:each) do
      DatabaseCleaner.start
    end

    config.after(:each) do
      DatabaseCleaner.clean
    end

    # 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

    # Run specs in random order to surface order dependencies. If you find an
    # order dependency and want to debug it, you can fix the order by providing
    # the seed, which is printed after each run.
    #     --seed 1234
    config.order = 'random'

    # config.render_views = true
  end

end

Spork.each_run do
  if ENV['DRB']
    require 'simplecov'
    SimpleCov.start 'rails'
  end

  ActiveRecord::Migration.check_pending! if defined?(ActiveRecord::Migration)

  require 'capybara/rspec'

  # Requires supporting ruby files with custom matchers and macros, etc,
  # in spec/support/ and its subdirectories.
  Dir[File.expand_path('../spec/support/**/*.rb', __FILE__)].each { |f| puts('REQUIRE #{ f }'); require f }
  Dir[File.expand_path('lib/**/*.rb', __FILE__)].each { |f| require f }

  FactoryGirl.reload
end
