tests: factor out upload helper methods.

This commit is contained in:
evazion
2021-01-04 19:54:54 -06:00
parent 16d6f3bbd5
commit 913ce88024
2 changed files with 31 additions and 27 deletions

View File

@@ -1,33 +1,6 @@
require 'test_helper'
class UploadsControllerTest < ActionDispatch::IntegrationTest
def self.should_upload_successfully(source)
should "upload successfully from #{source}" do
assert_successful_upload(source, user: create(:user, created_at: 1.month.ago))
end
end
def assert_successful_upload(source_or_file_path, user: @user, **params)
if source_or_file_path =~ %r{\Ahttps?://}i
source = { source: source_or_file_path }
else
file = Rack::Test::UploadedFile.new(Rails.root.join(source_or_file_path))
source = { file: file }
end
assert_difference(["Upload.count"]) do
post_auth uploads_path, user, params: { upload: { tag_string: "abc", rating: "e", **source, **params }}
end
upload = Upload.last
assert_response :redirect
assert_redirected_to upload
assert_equal("completed", upload.status)
assert_equal(Post.last, upload.post)
assert_equal(upload.post.md5, upload.md5)
upload
end
context "The uploads controller" do
setup do
@user = create(:contributor_user, name: "marisa")

View File

@@ -1,4 +1,6 @@
module UploadTestHelper
extend ActiveSupport::Concern
def upload_from_file(filepath)
UploadService.new(file: upload_file(filepath)).start!
end
@@ -11,4 +13,33 @@ module UploadTestHelper
yield uploaded_file if block_given?
uploaded_file
end
def assert_successful_upload(source_or_file_path, user: @user, **params)
if source_or_file_path =~ %r{\Ahttps?://}i
source = { source: source_or_file_path }
else
file = Rack::Test::UploadedFile.new(Rails.root.join(source_or_file_path))
source = { file: file }
end
assert_difference(["Upload.count"]) do
post_auth uploads_path, user, params: { upload: { tag_string: "abc", rating: "e", **source, **params }}
end
upload = Upload.last
assert_response :redirect
assert_redirected_to upload
assert_equal("completed", upload.status)
assert_equal(Post.last, upload.post)
assert_equal(upload.post.md5, upload.md5)
upload
end
class_methods do
def should_upload_successfully(source)
should "upload successfully from #{source}" do
assert_successful_upload(source, user: create(:user, created_at: 1.month.ago))
end
end
end
end