spec/paperclip/url_generator_spec.rb in kt-paperclip-4.4.0 vs spec/paperclip/url_generator_spec.rb in kt-paperclip-5.4.0
- old
+ new
@@ -2,68 +2,71 @@
require 'spec_helper'
describe Paperclip::UrlGenerator do
it "uses the given interpolator" do
expected = "the expected result"
- mock_attachment = MockAttachment.new
mock_interpolator = MockInterpolator.new(result: expected)
+ mock_attachment = MockAttachment.new(interpolator: mock_interpolator)
- url_generator = Paperclip::UrlGenerator.new(mock_attachment,
- { interpolator: mock_interpolator })
+ url_generator = Paperclip::UrlGenerator.new(mock_attachment)
result = url_generator.for(:style_name, {})
assert_equal expected, result
assert mock_interpolator.has_interpolated_attachment?(mock_attachment)
assert mock_interpolator.has_interpolated_style_name?(:style_name)
end
it "uses the default URL when no file is assigned" do
- mock_attachment = MockAttachment.new
mock_interpolator = MockInterpolator.new
default_url = "the default url"
- options = { interpolator: mock_interpolator, default_url: default_url}
+ options = { interpolator: mock_interpolator, default_url: default_url }
+ mock_attachment = MockAttachment.new(options)
- url_generator = Paperclip::UrlGenerator.new(mock_attachment, options)
+ url_generator = Paperclip::UrlGenerator.new(mock_attachment)
url_generator.for(:style_name, {})
assert mock_interpolator.has_interpolated_pattern?(default_url),
"expected the interpolator to be passed #{default_url.inspect} but it wasn't"
end
it "executes the default URL lambda when no file is assigned" do
- mock_attachment = MockAttachment.new
mock_interpolator = MockInterpolator.new
default_url = lambda {|attachment| "the #{attachment.class.name} default url" }
options = { interpolator: mock_interpolator, default_url: default_url}
+ mock_attachment = MockAttachment.new(options)
- url_generator = Paperclip::UrlGenerator.new(mock_attachment, options)
+ url_generator = Paperclip::UrlGenerator.new(mock_attachment)
url_generator.for(:style_name, {})
assert mock_interpolator.has_interpolated_pattern?("the MockAttachment default url"),
%{expected the interpolator to be passed "the MockAttachment default url", but it wasn't}
end
it "executes the method named by the symbol as the default URL when no file is assigned" do
mock_model = FakeModel.new
- mock_attachment = MockAttachment.new(model: mock_model)
- mock_interpolator = MockInterpolator.new
default_url = :to_s
- options = { interpolator: mock_interpolator, default_url: default_url}
+ mock_interpolator = MockInterpolator.new
+ options = {
+ interpolator: mock_interpolator,
+ default_url: default_url,
+ model: mock_model,
+ }
+ mock_attachment = MockAttachment.new(options)
- url_generator = Paperclip::UrlGenerator.new(mock_attachment, options)
+ url_generator = Paperclip::UrlGenerator.new(mock_attachment)
url_generator.for(:style_name, {})
assert mock_interpolator.has_interpolated_pattern?(mock_model.to_s),
%{expected the interpolator to be passed #{mock_model.to_s}, but it wasn't}
end
it "URL-escapes spaces if asked to" do
expected = "the expected result"
- mock_attachment = MockAttachment.new
mock_interpolator = MockInterpolator.new(result: expected)
options = { interpolator: mock_interpolator }
- url_generator = Paperclip::UrlGenerator.new(mock_attachment, options)
+ mock_attachment = MockAttachment.new(options)
+ url_generator = Paperclip::UrlGenerator.new(mock_attachment)
result = url_generator.for(:style_name, {escape: true})
assert_equal "the%20expected%20result", result
end
@@ -72,114 +75,122 @@
expected = Class.new do
def escape
"the escaped result"
end
end.new
- mock_attachment = MockAttachment.new
mock_interpolator = MockInterpolator.new(result: expected)
options = { interpolator: mock_interpolator }
- url_generator = Paperclip::UrlGenerator.new(mock_attachment, options)
+ mock_attachment = MockAttachment.new(options)
+ url_generator = Paperclip::UrlGenerator.new(mock_attachment)
result = url_generator.for(:style_name, {escape: true})
assert_equal "the escaped result", result
end
it "leaves spaces unescaped as asked to" do
expected = "the expected result"
- mock_attachment = MockAttachment.new
mock_interpolator = MockInterpolator.new(result: expected)
options = { interpolator: mock_interpolator }
- url_generator = Paperclip::UrlGenerator.new(mock_attachment, options)
+ mock_attachment = MockAttachment.new(options)
+ url_generator = Paperclip::UrlGenerator.new(mock_attachment)
result = url_generator.for(:style_name, {escape: false})
assert_equal "the expected result", result
end
it "defaults to leaving spaces unescaped" do
expected = "the expected result"
- mock_attachment = MockAttachment.new
mock_interpolator = MockInterpolator.new(result: expected)
options = { interpolator: mock_interpolator }
- url_generator = Paperclip::UrlGenerator.new(mock_attachment, options)
+ mock_attachment = MockAttachment.new(options)
+ url_generator = Paperclip::UrlGenerator.new(mock_attachment)
result = url_generator.for(:style_name, {})
assert_equal "the expected result", result
end
it "produces URLs without the updated_at value when the object does not respond to updated_at" do
expected = "the expected result"
mock_interpolator = MockInterpolator.new(result: expected)
- mock_attachment = MockAttachment.new(responds_to_updated_at: false)
- options = { interpolator: mock_interpolator }
- url_generator = Paperclip::UrlGenerator.new(mock_attachment, options)
+ options = { interpolator: mock_interpolator, responds_to_updated_at: false }
+ mock_attachment = MockAttachment.new(options)
+ url_generator = Paperclip::UrlGenerator.new(mock_attachment)
result = url_generator.for(:style_name, {timestamp: true})
assert_equal expected, result
end
it "produces URLs without the updated_at value when the updated_at value is nil" do
expected = "the expected result"
mock_interpolator = MockInterpolator.new(result: expected)
- mock_attachment = MockAttachment.new(responds_to_updated_at: true, updated_at: nil)
- options = { interpolator: mock_interpolator }
- url_generator = Paperclip::UrlGenerator.new(mock_attachment, options)
+ options = {
+ responds_to_updated_at: true,
+ updated_at: nil,
+ interpolator: mock_interpolator,
+ }
+ mock_attachment = MockAttachment.new(options)
+ url_generator = Paperclip::UrlGenerator.new(mock_attachment)
result = url_generator.for(:style_name, {timestamp: true})
assert_equal expected, result
end
it "produces URLs with the updated_at when it exists" do
expected = "the expected result"
updated_at = 1231231234
mock_interpolator = MockInterpolator.new(result: expected)
- mock_attachment = MockAttachment.new(updated_at: updated_at)
- options = { interpolator: mock_interpolator }
- url_generator = Paperclip::UrlGenerator.new(mock_attachment, options)
+ options = { interpolator: mock_interpolator, updated_at: updated_at }
+ mock_attachment = MockAttachment.new(options)
+ url_generator = Paperclip::UrlGenerator.new(mock_attachment)
result = url_generator.for(:style_name, {timestamp: true})
assert_equal "#{expected}?#{updated_at}", result
end
it "produces URLs with the updated_at when it exists, separated with a & if a ? follow by = already exists" do
expected = "the?expected=result"
updated_at = 1231231234
mock_interpolator = MockInterpolator.new(result: expected)
- mock_attachment = MockAttachment.new(updated_at: updated_at)
- options = { interpolator: mock_interpolator }
- url_generator = Paperclip::UrlGenerator.new(mock_attachment, options)
+ options = { interpolator: mock_interpolator, updated_at: updated_at }
+ mock_attachment = MockAttachment.new(options)
+ url_generator = Paperclip::UrlGenerator.new(mock_attachment)
result = url_generator.for(:style_name, {timestamp: true})
assert_equal "#{expected}&#{updated_at}", result
end
it "produces URLs without the updated_at when told to do as much" do
expected = "the expected result"
updated_at = 1231231234
mock_interpolator = MockInterpolator.new(result: expected)
- mock_attachment = MockAttachment.new(updated_at: updated_at)
- options = { interpolator: mock_interpolator }
- url_generator = Paperclip::UrlGenerator.new(mock_attachment, options)
+ options = { interpolator: mock_interpolator, updated_at: updated_at }
+ mock_attachment = MockAttachment.new(options)
+ url_generator = Paperclip::UrlGenerator.new(mock_attachment)
result = url_generator.for(:style_name, {timestamp: false})
assert_equal expected, result
end
it "produces the correct URL when the instance has a file name" do
expected = "the expected result"
- mock_attachment = MockAttachment.new(original_filename: 'exists')
mock_interpolator = MockInterpolator.new
- options = { interpolator: mock_interpolator, url: expected}
+ options = {
+ interpolator: mock_interpolator,
+ url: expected,
+ original_filename: "exists",
+ }
+ mock_attachment = MockAttachment.new(options)
- url_generator = Paperclip::UrlGenerator.new(mock_attachment, options)
+ url_generator = Paperclip::UrlGenerator.new(mock_attachment)
url_generator.for(:style_name, {})
assert mock_interpolator.has_interpolated_pattern?(expected),
"expected the interpolator to be passed #{expected.inspect} but it wasn't"
end
@@ -187,20 +198,20 @@
it "doesn't emit deprecation warnings" do
expected = "the expected result"
mock_interpolator = MockInterpolator.new(result: expected)
options = { interpolator: mock_interpolator }
mock_attachment = MockAttachment.new(options)
- url_generator = Paperclip::UrlGenerator.new(mock_attachment, options)
+ url_generator = Paperclip::UrlGenerator.new(mock_attachment)
expect { url_generator.for(:style_name, escape: true) }.to_not(output(/URI\.(un)?escape is obsolete/).to_stderr)
end
describe "should be able to escape (, ), [, and ]." do
def generate(expected, updated_at=nil)
- mock_attachment = MockAttachment.new(updated_at: updated_at)
mock_interpolator = MockInterpolator.new(result: expected)
- options = { interpolator: mock_interpolator }
- url_generator = Paperclip::UrlGenerator.new(mock_attachment, options)
+ options = { interpolator: mock_interpolator, updated_at: updated_at }
+ mock_attachment = MockAttachment.new(options)
+ url_generator = Paperclip::UrlGenerator.new(mock_attachment)
def url_generator.respond_to(params)
false if params == :escape
end
url_generator.for(:style_name, {escape: true, timestamp: !!updated_at})
end