mirror of
https://github.com/danbee/danbarberphoto
synced 2025-03-04 08:49:07 +00:00
142 lines
4.8 KiB
Ruby
142 lines
4.8 KiB
Ruby
# encoding: utf-8
|
|
require 'test/helper'
|
|
|
|
class StyleTest < Test::Unit::TestCase
|
|
|
|
context "A style rule" do
|
|
setup do
|
|
@attachment = attachment :path => ":basename.:extension",
|
|
:styles => { :foo => {:geometry => "100x100#", :format => :png} }
|
|
@style = @attachment.styles[:foo]
|
|
end
|
|
|
|
should "be held as a Style object" do
|
|
assert_kind_of Paperclip::Style, @style
|
|
end
|
|
|
|
should "get processors from the attachment definition" do
|
|
assert_equal [:thumbnail], @style.processors
|
|
end
|
|
|
|
should "have the right geometry" do
|
|
assert_equal "100x100#", @style.geometry
|
|
end
|
|
|
|
should "be whiny if the attachment is" do
|
|
@attachment.expects(:whiny).returns(true)
|
|
assert @style.whiny?
|
|
end
|
|
|
|
should "respond to hash notation" do
|
|
assert_equal [:thumbnail], @style[:processors]
|
|
assert_equal "100x100#", @style[:geometry]
|
|
end
|
|
end
|
|
|
|
context "A style rule with properties supplied as procs" do
|
|
setup do
|
|
@attachment = attachment :path => ":basename.:extension",
|
|
:whiny_thumbnails => true,
|
|
:processors => lambda {|a| [:test]},
|
|
:styles => {
|
|
:foo => lambda{|a| "300x300#"},
|
|
:bar => {
|
|
:geometry => lambda{|a| "300x300#"}
|
|
}
|
|
}
|
|
end
|
|
|
|
should "defer processing of procs until they are needed" do
|
|
assert_kind_of Proc, @attachment.styles[:foo].instance_variable_get("@geometry")
|
|
assert_kind_of Proc, @attachment.styles[:bar].instance_variable_get("@geometry")
|
|
assert_kind_of Proc, @attachment.instance_variable_get("@processors")
|
|
end
|
|
|
|
should "call procs when they are needed" do
|
|
assert_equal "300x300#", @attachment.styles[:foo].geometry
|
|
assert_equal "300x300#", @attachment.styles[:bar].geometry
|
|
assert_equal [:test], @attachment.styles[:foo].processors
|
|
assert_equal [:test], @attachment.styles[:bar].processors
|
|
end
|
|
end
|
|
|
|
context "An attachment with style rules in various forms" do
|
|
setup do
|
|
@attachment = attachment :path => ":basename.:extension",
|
|
:styles => {
|
|
:aslist => ["100x100", :png],
|
|
:ashash => {:geometry => "100x100", :format => :png},
|
|
:asstring => "100x100"
|
|
}
|
|
end
|
|
should "have the right number of styles" do
|
|
assert_kind_of Hash, @attachment.styles
|
|
assert_equal 3, @attachment.styles.size
|
|
end
|
|
|
|
should "have styles as Style objects" do
|
|
[:aslist, :ashash, :aslist].each do |s|
|
|
assert_kind_of Paperclip::Style, @attachment.styles[s]
|
|
end
|
|
end
|
|
|
|
should "have the right geometries" do
|
|
[:aslist, :ashash, :aslist].each do |s|
|
|
assert_equal @attachment.styles[s].geometry, "100x100"
|
|
end
|
|
end
|
|
|
|
should "have the right formats" do
|
|
assert_equal @attachment.styles[:aslist].format, :png
|
|
assert_equal @attachment.styles[:ashash].format, :png
|
|
assert_nil @attachment.styles[:asstring].format
|
|
end
|
|
|
|
end
|
|
|
|
context "An attachment with :convert_options" do
|
|
setup do
|
|
@attachment = attachment :path => ":basename.:extension",
|
|
:styles => {:thumb => "100x100", :large => "400x400"},
|
|
:convert_options => {:all => "-do_stuff", :thumb => "-thumbnailize"}
|
|
@style = @attachment.styles[:thumb]
|
|
@file = StringIO.new("...")
|
|
@file.stubs(:original_filename).returns("file.jpg")
|
|
end
|
|
|
|
before_should "not have called extra_options_for(:thumb/:large) on initialization" do
|
|
@attachment.expects(:extra_options_for).never
|
|
end
|
|
|
|
should "call extra_options_for(:thumb/:large) when convert options are requested" do
|
|
@attachment.expects(:extra_options_for).with(:thumb)
|
|
@attachment.styles[:thumb].convert_options
|
|
end
|
|
end
|
|
|
|
context "A style rule with its own :processors" do
|
|
setup do
|
|
@attachment = attachment :path => ":basename.:extension",
|
|
:styles => {
|
|
:foo => {
|
|
:geometry => "100x100#",
|
|
:format => :png,
|
|
:processors => [:test]
|
|
}
|
|
},
|
|
:processors => [:thumbnail]
|
|
@style = @attachment.styles[:foo]
|
|
end
|
|
|
|
should "not get processors from the attachment" do
|
|
@attachment.expects(:processors).never
|
|
assert_not_equal [:thumbnail], @style.processors
|
|
end
|
|
|
|
should "report its own processors" do
|
|
assert_equal [:test], @style.processors
|
|
end
|
|
|
|
end
|
|
end
|