lib/decidim/dev/test/rspec_support/attachment_helpers.rb in decidim-dev-0.26.10 vs lib/decidim/dev/test/rspec_support/attachment_helpers.rb in decidim-dev-0.27.0.rc1
- old
+ new
@@ -7,9 +7,39 @@
# It is intended to be used to avoid the implementation details, so that the
# attachment file size presentation can change more easily.
def attachment_file_size(attachment)
ActiveSupport::NumberHelper.number_to_human_size(attachment.file_size)
end
+
+ # Creates ActiveStorage::Blob object and returns its signed_id
+ # Used in non-system tests that need files.
+ def upload_test_file(file, options = {})
+ filename = options[:filename] || upload_test_file_filename(file)
+ content_type = options[:content_type] || upload_test_file_content_type(file)
+
+ blob = ActiveStorage::Blob.create_and_upload!(
+ io: File.open(file),
+ filename: filename,
+ content_type: content_type
+ )
+ return blob if options[:return_blob]
+
+ blob.signed_id
+ end
+
+ private
+
+ def upload_test_file_filename(file)
+ return file.original_filename if file.respond_to? :original_filename
+
+ file.split("/").last
+ end
+
+ def upload_test_file_content_type(file)
+ return file.content_type if file.respond_to? :content_type
+
+ MIME::Types.type_for(file).first.content_type
+ end
end
RSpec.configure do |config|
config.include AttachmentHelpers
end