Files
danbooru/test/test_helpers/upload_test_helper.rb
2022-02-15 17:12:02 -06:00

37 lines
1.1 KiB
Ruby

module UploadTestHelper
extend ActiveSupport::Concern
def create_upload!(source_or_file_path, user:, **params)
if source_or_file_path =~ %r{\Ahttps?://}i
skip "Login credentials not configured for #{source_or_file_path}" unless Sources::Strategies.find(source_or_file_path).class.enabled?
source = { source: source_or_file_path }
else
file = Rack::Test::UploadedFile.new(Rails.root.join(source_or_file_path))
source = { file: file }
end
perform_enqueued_jobs do
post_auth uploads_path(format: :json), user, params: { upload: { **source, **params }}
end
end
def assert_successful_upload(source_or_file_path, user: create(:user), **params)
create_upload!(source_or_file_path, user: user, **params)
upload = Upload.last
assert_response 201
assert_equal("", upload&.error.to_s)
assert_equal("completed", upload.status)
assert_operator(upload.media_assets.count, :>, 0)
upload
end
class_methods do
def should_upload_successfully(source)
should "upload successfully from #{source}" do
assert_successful_upload(source, user: create(:user))
end
end
end
end