Add minitest-reporters gem. Replace the default output of `bin/rails test` with a progress bar. The default output just emits periods for passed tests, which makes it hard to tell how long tests will take and causes test runner output on Github to appear to hang. The web console on Github is line buffered, but the default test runner doesn't normally emit newlines (unless a test fails), so the output can hang for a long time.
130 lines
3.5 KiB
Ruby
130 lines
3.5 KiB
Ruby
ENV["RAILS_ENV"] = "test"
|
|
|
|
if ENV["SIMPLECOV"]
|
|
require 'simplecov'
|
|
SimpleCov.start 'rails' do
|
|
add_group "Libraries", ["app/logical", "lib"]
|
|
add_group "Presenters", "app/presenters"
|
|
end
|
|
end
|
|
|
|
require File.expand_path('../config/environment', __dir__)
|
|
require 'rails/test_help'
|
|
require 'cache'
|
|
require 'webmock/minitest'
|
|
require 'mocha/minitest'
|
|
require 'minitest/reporters'
|
|
|
|
Minitest::Reporters.use!(Minitest::Reporters::ProgressReporter.new)
|
|
|
|
Dir[File.expand_path(File.dirname(__FILE__) + "/factories/*.rb")].sort.each {|file| require file}
|
|
Dir[File.expand_path(File.dirname(__FILE__) + "/test_helpers/*.rb")].sort.each {|file| require file}
|
|
|
|
Shoulda::Matchers.configure do |config|
|
|
config.integrate do |with|
|
|
with.test_framework :minitest
|
|
with.library :rails
|
|
end
|
|
end
|
|
|
|
module TestHelpers
|
|
def as(user, &block)
|
|
CurrentUser.as(user, &block)
|
|
end
|
|
|
|
def as_user(&block)
|
|
CurrentUser.as(@user, &block)
|
|
end
|
|
|
|
def load_pixiv_tokens!
|
|
if ENV["DANBOORU_PERSIST_PIXIV_SESSION"] && Cache.get("pixiv-papi-access-token")
|
|
Cache.put("pixiv-papi-access-token", Thread.current[:pixiv_papi_access_token])
|
|
Cache.put(PixivWebAgent::SESSION_CACHE_KEY, Thread.current[:pixiv_session_cache_key])
|
|
Cache.put(PixivWebAgent::COMIC_SESSION_CACHE_KEY, Thread.current[:pixiv_comic_session_cache_key])
|
|
end
|
|
end
|
|
|
|
def save_pixiv_tokens!
|
|
if ENV["DANBOORU_PERSIST_PIXIV_SESSION"]
|
|
Thread.current[:pixiv_papi_access_token] = Cache.get("pixiv-papi-access-token")
|
|
Thread.current[:pixiv_session_cache_key] = Cache.get(PixivWebAgent::SESSION_CACHE_KEY)
|
|
Thread.current[:pixiv_comic_session_cache_key] = Cache.get(PixivWebAgent::COMIC_SESSION_CACHE_KEY)
|
|
end
|
|
end
|
|
end
|
|
|
|
class ActiveSupport::TestCase
|
|
include ActiveJob::TestHelper
|
|
include FactoryBot::Syntax::Methods
|
|
extend PostArchiveTestHelper
|
|
extend PoolArchiveTestHelper
|
|
include ReportbooruHelper
|
|
include DownloadTestHelper
|
|
include IqdbTestHelper
|
|
include UploadTestHelper
|
|
include TestHelpers
|
|
|
|
mock_post_version_service!
|
|
mock_pool_version_service!
|
|
|
|
setup do
|
|
Socket.stubs(:gethostname).returns("www.example.com")
|
|
mock_popular_search_service!
|
|
mock_missed_search_service!
|
|
WebMock.allow_net_connect!
|
|
|
|
storage_manager = StorageManager::Local.new(base_dir: "#{Rails.root}/public/data/test")
|
|
Danbooru.config.stubs(:storage_manager).returns(storage_manager)
|
|
Danbooru.config.stubs(:backup_storage_manager).returns(StorageManager::Null.new)
|
|
end
|
|
|
|
teardown do
|
|
FileUtils.rm_rf(Danbooru.config.storage_manager.base_dir)
|
|
Cache.clear
|
|
end
|
|
end
|
|
|
|
class ActionDispatch::IntegrationTest
|
|
include TestHelpers
|
|
extend PostArchiveTestHelper
|
|
extend PoolArchiveTestHelper
|
|
|
|
mock_post_version_service!
|
|
mock_pool_version_service!
|
|
|
|
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
|
|
|
|
def setup
|
|
super
|
|
Socket.stubs(:gethostname).returns("www.example.com")
|
|
|
|
ActionDispatch::IntegrationTest.register_encoder :xml, response_parser: ->(body) { Nokogiri.XML(body) }
|
|
end
|
|
|
|
def teardown
|
|
super
|
|
Cache.clear
|
|
end
|
|
end
|
|
|
|
Rails.application.load_seed
|