From 69ae9fe6b508acdf5bdfc64c5baae70bce15fad6 Mon Sep 17 00:00:00 2001 From: Jason Lee Date: Thu, 1 Feb 2018 23:49:25 +0800 Subject: 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" %> ``` --- activestorage/test/models/blob_test.rb | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'activestorage/test') 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 -- cgit v1.2.3