aboutsummaryrefslogtreecommitdiffstats
path: root/activestorage/test/models/blob_test.rb
diff options
context:
space:
mode:
authorJason Lee <huacnlee@gmail.com>2018-02-01 23:49:25 +0800
committerJason Lee <huacnlee@gmail.com>2018-02-01 23:49:25 +0800
commit69ae9fe6b508acdf5bdfc64c5baae70bce15fad6 (patch)
treebfa0e3f929b0a22cfeb1f748d4d7a37d0a74e9d9 /activestorage/test/models/blob_test.rb
parent4f0eb1ccd9652118b05d42f152adaa4df7dc3388 (diff)
downloadrails-69ae9fe6b508acdf5bdfc64c5baae70bce15fad6.tar.gz
rails-69ae9fe6b508acdf5bdfc64c5baae70bce15fad6.tar.bz2
rails-69ae9fe6b508acdf5bdfc64c5baae70bce15fad6.zip
Allow `ActiveStorage::Blob#service_url` to pass addition options to `service.url`.
Because there have some service needs more parameters for file URL: https://www.alibabacloud.com/help/doc-detail/44687.htm ```rb class AliyunService < Service def url(key, options = {}) image_process = options[:oss_process] || "image/resize,w_800" "http://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=#{image_process}" end end ``` Use case: ```erb <%= image_tag @user.avatar.service_url(oss_process: "image/resize,m_fill,h_100,w_100" %> ```
Diffstat (limited to 'activestorage/test/models/blob_test.rb')
-rw-r--r--activestorage/test/models/blob_test.rb20
1 files changed, 20 insertions, 0 deletions
diff --git a/activestorage/test/models/blob_test.rb b/activestorage/test/models/blob_test.rb
index 664939dfa7..5cd2a94326 100644
--- a/activestorage/test/models/blob_test.rb
+++ b/activestorage/test/models/blob_test.rb
@@ -2,8 +2,11 @@
require "test_helper"
require "database/setup"
+require "active_support/testing/method_call_assertions"
class ActiveStorage::BlobTest < ActiveSupport::TestCase
+ include ActiveSupport::Testing::MethodCallAssertions
+
test "create after upload sets byte size and checksum" do
data = "Hello world!"
blob = create_blob data: data
@@ -82,6 +85,23 @@ class ActiveStorage::BlobTest < ActiveSupport::TestCase
end
end
+ test "urls allow for custom options" do
+ blob = create_blob(filename: "original.txt")
+
+ options = [
+ blob.key,
+ expires_in: blob.service.url_expires_in,
+ disposition: :inline,
+ content_type: blob.content_type,
+ filename: blob.filename,
+ thumb_size: "300x300",
+ thumb_mode: "crop"
+ ]
+ assert_called_with(blob.service, :url, options) do
+ blob.service_url(thumb_size: "300x300", thumb_mode: "crop")
+ end
+ end
+
test "purge deletes file from external service" do
blob = create_blob