Files
danbooru/test/test_helper.rb
evazion a947a10c53 config: add debug_mode option.
Add a debug mode option. This is useful when debugging failed tests.

Debug mode disables parallel testing so you can set breakpoints in tests
with binding.pry (normally parallel testing makes it hard to set
breakpoints).

Debug mode also disables global exception handling for controllers. This
lets exceptions bubble up to the console during controller tests
(normally exceptions are swallowed by the controller, which prevents you
from seeing backtraces in failed controller tests).
2020-12-24 00:17:19 -06:00

93 lines
2.4 KiB
Ruby

ENV["RAILS_ENV"] = "test"
require 'simplecov'
require_relative "../config/environment"
require 'rails/test_help'
Dir["#{Rails.root}/test/factories/*.rb"].sort.each { |file| require file }
Dir["#{Rails.root}/test/test_helpers/*.rb"].sort.each { |file| require file }
Minitest::Reporters.use!(Minitest::Reporters::ProgressReporter.new)
Shoulda::Matchers.configure do |config|
config.integrate do |with|
with.test_framework :minitest
with.library :rails
end
end
Rails.application.load_seed
class ActiveSupport::TestCase
include ActiveJob::TestHelper
include FactoryBot::Syntax::Methods
extend PostArchiveTestHelper
extend PoolArchiveTestHelper
include ReportbooruHelper
include DownloadTestHelper
include IqdbTestHelper
include UploadTestHelper
mock_post_version_service!
mock_pool_version_service!
unless Danbooru.config.debug_mode
parallelize
parallelize_setup do |worker|
Rails.application.load_seed
SimpleCov.command_name "#{SimpleCov.command_name}-#{worker}"
end
end
parallelize_teardown do |worker|
SimpleCov.result
end
setup do
Socket.stubs(:gethostname).returns("www.example.com")
@temp_dir = Dir.mktmpdir("danbooru-temp-")
storage_manager = StorageManager::Local.new(base_dir: @temp_dir)
Danbooru.config.stubs(:storage_manager).returns(storage_manager)
Danbooru.config.stubs(:backup_storage_manager).returns(StorageManager::Null.new)
end
teardown do
FileUtils.rm_rf(@temp_dir)
Cache.clear
end
def as(user, &block)
CurrentUser.as(user, &block)
end
end
class ActionDispatch::IntegrationTest
extend ControllerHelper
register_encoder :xml, response_parser: ->(body) { Nokogiri.XML(body) }
register_encoder :atom, response_parser: ->(body) { Nokogiri.XML(body) }
register_encoder :html, response_parser: ->(body) { Nokogiri.HTML5(body) }
def method_authenticated(method_name, url, user, **options)
post session_path, params: { name: user.name, password: user.password }
send(method_name, url, **options)
end
def get_auth(url, user, **options)
method_authenticated(:get, url, user, **options)
end
def post_auth(url, user, **options)
method_authenticated(:post, url, user, **options)
end
def put_auth(url, user, **options)
method_authenticated(:put, url, user, **options)
end
def delete_auth(url, user, **options)
method_authenticated(:delete, url, user, **options)
end
end