9b8a448477
The cache store is explicitly used by some specs, but they were not isolated and therefore not reliable. This fixes the issue by clearing the cache after each specs.
72 lines
2.1 KiB
Ruby
72 lines
2.1 KiB
Ruby
ENV['RAILS_ENV'] ||= 'test'
|
|
require File.expand_path('../../config/environment', __FILE__)
|
|
|
|
abort("The Rails environment is running in production mode!") if Rails.env.production?
|
|
|
|
require 'spec_helper'
|
|
require 'rspec/rails'
|
|
require 'webmock/rspec'
|
|
require 'paperclip/matchers'
|
|
require 'capybara/rspec'
|
|
|
|
Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }
|
|
|
|
ActiveRecord::Migration.maintain_test_schema!
|
|
WebMock.disable_net_connect!
|
|
Redis.current = Redis::Namespace.new("mastodon_test#{ENV['TEST_ENV_NUMBER']}", redis: Redis.current)
|
|
Sidekiq::Testing.inline!
|
|
Sidekiq::Logging.logger = nil
|
|
|
|
Devise::Test::ControllerHelpers.module_eval do
|
|
alias_method :original_sign_in, :sign_in
|
|
|
|
def sign_in(resource, _deprecated = nil, scope: nil)
|
|
original_sign_in(resource, scope: scope)
|
|
|
|
SessionActivation.deactivate warden.cookies.signed['_session_id']
|
|
|
|
warden.cookies.signed['_session_id'] = {
|
|
value: resource.activate_session(warden.request),
|
|
expires: 1.year.from_now,
|
|
httponly: true,
|
|
}
|
|
end
|
|
end
|
|
|
|
RSpec.configure do |config|
|
|
config.fixture_path = "#{::Rails.root}/spec/fixtures"
|
|
config.use_transactional_fixtures = true
|
|
config.order = 'random'
|
|
config.infer_spec_type_from_file_location!
|
|
config.filter_rails_from_backtrace!
|
|
|
|
config.include Devise::Test::ControllerHelpers, type: :controller
|
|
config.include Devise::Test::ControllerHelpers, type: :view
|
|
config.include Paperclip::Shoulda::Matchers
|
|
config.include ActiveSupport::Testing::TimeHelpers
|
|
|
|
config.before :each, type: :feature do
|
|
https = ENV['LOCAL_HTTPS'] == 'true'
|
|
Capybara.app_host = "http#{https ? 's' : ''}://#{ENV.fetch('LOCAL_DOMAIN')}"
|
|
end
|
|
|
|
config.after :each do
|
|
Rails.cache.clear
|
|
|
|
keys = Redis.current.keys
|
|
Redis.current.del(keys) if keys.any?
|
|
end
|
|
end
|
|
|
|
RSpec::Sidekiq.configure do |config|
|
|
config.warn_when_jobs_not_processed_by_sidekiq = false
|
|
end
|
|
|
|
def request_fixture(name)
|
|
File.read(File.join(Rails.root, 'spec', 'fixtures', 'requests', name))
|
|
end
|
|
|
|
def attachment_fixture(name)
|
|
File.open(File.join(Rails.root, 'spec', 'fixtures', 'files', name))
|
|
end
|