avatar 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +10 -0
- data/Manifest.txt +32 -6
- data/lib/avatar.rb +1 -1
- data/lib/avatar/source/gravatar_source.rb +7 -5
- data/lib/avatar/source/paperclip_source.rb +52 -0
- data/lib/avatar/source/wrapper.rb +6 -0
- data/lib/avatar/source/wrapper/abstract_source_wrapper.rb +33 -0
- data/lib/avatar/source/wrapper/rails_asset_source_wrapper.rb +36 -0
- data/lib/avatar/source/wrapper/string_substitution_source_wrapper.rb +55 -0
- data/lib/avatar/version.rb +1 -1
- data/test/lib/paperclip/README +32 -0
- data/test/lib/paperclip/Rakefile +41 -0
- data/test/lib/paperclip/generators/paperclip/USAGE +5 -0
- data/test/lib/paperclip/generators/paperclip/paperclip_generator.rb +27 -0
- data/test/lib/paperclip/generators/paperclip/templates/paperclip_migration.rb +17 -0
- data/test/lib/paperclip/init.rb +3 -0
- data/test/lib/paperclip/lib/paperclip.rb +197 -0
- data/test/lib/paperclip/lib/paperclip/attachment.rb +230 -0
- data/test/lib/paperclip/lib/paperclip/geometry.rb +109 -0
- data/test/lib/paperclip/lib/paperclip/iostream.rb +43 -0
- data/test/lib/paperclip/lib/paperclip/thumbnail.rb +80 -0
- data/test/lib/paperclip/lib/paperclip/upfile.rb +32 -0
- data/test/lib/paperclip/tasks/paperclip_tasks.rake +38 -0
- data/test/lib/paperclip/test/database.yml +5 -0
- data/test/lib/paperclip/test/fixtures/12k.png +0 -0
- data/test/lib/paperclip/test/fixtures/5k.png +0 -0
- data/test/lib/paperclip/test/fixtures/bad.png +1 -0
- data/test/lib/paperclip/test/helper.rb +38 -0
- data/test/lib/paperclip/test/test_attachment.rb +99 -0
- data/test/lib/paperclip/test/test_geometry.rb +142 -0
- data/test/lib/paperclip/test/test_integration.rb +76 -0
- data/test/lib/paperclip/test/test_iostream.rb +60 -0
- data/test/lib/paperclip/test/test_paperclip.rb +83 -0
- data/test/lib/paperclip/test/test_thumbnail.rb +76 -0
- data/test/lib/schema.rb +14 -1
- data/test/test_file_column_source.rb +8 -6
- data/test/test_gravatar_source.rb +5 -0
- data/test/test_helper.rb +7 -2
- data/test/test_paperclip_source.rb +52 -0
- data/test/test_rails_asset_source_wrapper.rb +37 -0
- data/test/test_string_substitution_source_wrapper.rb +25 -0
- data/website/index.html +1 -1
- metadata +43 -11
- data/lib/avatar/source/rails_asset_source.rb +0 -64
- data/lib/avatar/source/string_substitution_source.rb +0 -45
- data/lib/avatar/string_substitution.rb +0 -28
- data/test/test_rails_asset_source.rb +0 -50
- data/test/test_string_substitution.rb +0 -28
- data/test/test_string_substitution_source.rb +0 -22
@@ -0,0 +1,76 @@
|
|
1
|
+
require 'test/helper.rb'
|
2
|
+
|
3
|
+
class PaperclipTest < Test::Unit::TestCase
|
4
|
+
context "A model with an attachment" do
|
5
|
+
setup do
|
6
|
+
rebuild_model :styles => { :large => "300x300>",
|
7
|
+
:medium => "100x100",
|
8
|
+
:thumb => ["32x32#", :gif] },
|
9
|
+
:default_style => :medium,
|
10
|
+
:url => "/:attachment/:class/:style/:id/:basename.:extension",
|
11
|
+
:path => ":rails_root/tmp/:attachment/:class/:style/:id/:basename.:extension"
|
12
|
+
end
|
13
|
+
|
14
|
+
should "integrate" do
|
15
|
+
@dummy = Dummy.new
|
16
|
+
@file = File.new(File.join(FIXTURES_DIR, "5k.png"))
|
17
|
+
@bad_file = File.new(File.join(FIXTURES_DIR, "bad.png"))
|
18
|
+
|
19
|
+
assert @dummy.avatar = @file
|
20
|
+
assert @dummy.valid?
|
21
|
+
assert @dummy.save
|
22
|
+
|
23
|
+
[["100x15", nil],
|
24
|
+
["434x66", :original],
|
25
|
+
["300x46", :large],
|
26
|
+
["100x15", :medium],
|
27
|
+
["32x32", :thumb]].each do |geo, style|
|
28
|
+
cmd = %Q[identify -format "%wx%h" #{@dummy.avatar.to_io(style).path}]
|
29
|
+
assert_equal geo, `#{cmd}`.chomp, cmd
|
30
|
+
end
|
31
|
+
|
32
|
+
saved_paths = [:thumb, :medium, :large, :original].collect{|s| @dummy.avatar.to_io(s).path }
|
33
|
+
|
34
|
+
@d2 = Dummy.find(@dummy.id)
|
35
|
+
assert_equal "100x15", `identify -format "%wx%h" #{@dummy.avatar.to_io.path}`.chomp
|
36
|
+
assert_equal "434x66", `identify -format "%wx%h" #{@dummy.avatar.to_io(:original).path}`.chomp
|
37
|
+
assert_equal "300x46", `identify -format "%wx%h" #{@d2.avatar.to_io(:large).path}`.chomp
|
38
|
+
assert_equal "100x15", `identify -format "%wx%h" #{@d2.avatar.to_io(:medium).path}`.chomp
|
39
|
+
assert_equal "32x32", `identify -format "%wx%h" #{@d2.avatar.to_io(:thumb).path}`.chomp
|
40
|
+
|
41
|
+
@dummy.avatar = nil
|
42
|
+
assert_nil @dummy.avatar_file_name
|
43
|
+
assert @dummy.valid?
|
44
|
+
assert @dummy.save
|
45
|
+
|
46
|
+
saved_paths.each do |p|
|
47
|
+
assert ! File.exists?(p)
|
48
|
+
end
|
49
|
+
|
50
|
+
@d2 = Dummy.find(@dummy.id)
|
51
|
+
assert_nil @d2.avatar_file_name
|
52
|
+
|
53
|
+
@d2.avatar = @bad_file
|
54
|
+
assert ! @d2.valid?
|
55
|
+
@d2.avatar = nil
|
56
|
+
assert @d2.valid?
|
57
|
+
|
58
|
+
Dummy.validates_attachment_presence :avatar
|
59
|
+
@d3 = Dummy.find(@d2.id)
|
60
|
+
@d3.avatar = @file
|
61
|
+
assert @d3.valid?
|
62
|
+
@d3.avatar = @bad_file
|
63
|
+
assert ! @d3.valid?
|
64
|
+
@d3.avatar = nil
|
65
|
+
assert ! @d3.valid?
|
66
|
+
|
67
|
+
@dummy.avatar = @file
|
68
|
+
assert @dummy.save
|
69
|
+
@dummy.avatar = nil
|
70
|
+
assert_nil @dummy.avatar_file_name
|
71
|
+
@dummy.reload
|
72
|
+
assert_equal "5k.png", @dummy.avatar_file_name
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'test/unit'
|
3
|
+
require 'stringio'
|
4
|
+
require 'tempfile'
|
5
|
+
require 'shoulda'
|
6
|
+
|
7
|
+
require File.join(File.dirname(__FILE__), '..', 'lib', 'paperclip', 'iostream.rb')
|
8
|
+
|
9
|
+
class IOStreamTest < Test::Unit::TestCase
|
10
|
+
context "IOStream" do
|
11
|
+
should "be included in IO, File, Tempfile, and StringIO" do
|
12
|
+
[IO, File, Tempfile, StringIO].each do |klass|
|
13
|
+
assert klass.included_modules.include?(IOStream), "Not in #{klass}"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
context "A file" do
|
19
|
+
setup do
|
20
|
+
@file = File.new(File.join(File.dirname(__FILE__), "fixtures", "5k.png"))
|
21
|
+
end
|
22
|
+
|
23
|
+
context "that is sent #stream_to" do
|
24
|
+
|
25
|
+
[["/tmp/iostream.string.test", File],
|
26
|
+
[Tempfile.new('iostream.test'), Tempfile]].each do |args|
|
27
|
+
|
28
|
+
context "and given a #{args[0].class.to_s}" do
|
29
|
+
setup do
|
30
|
+
assert @result = @file.stream_to(args[0])
|
31
|
+
end
|
32
|
+
|
33
|
+
should "return a #{args[1].to_s}" do
|
34
|
+
assert @result.is_a?(args[1])
|
35
|
+
end
|
36
|
+
|
37
|
+
should "contain the same data as the original file" do
|
38
|
+
@file.rewind; @result.rewind
|
39
|
+
assert_equal @file.read, @result.read
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
context "that is sent #to_tempfile" do
|
46
|
+
setup do
|
47
|
+
assert @tempfile = @file.to_tempfile
|
48
|
+
end
|
49
|
+
|
50
|
+
should "convert it to a Tempfile" do
|
51
|
+
assert @tempfile.is_a?(Tempfile)
|
52
|
+
end
|
53
|
+
|
54
|
+
should "have the Tempfile contain the same data as the file" do
|
55
|
+
@file.rewind; @tempfile.rewind
|
56
|
+
assert_equal @file.read, @tempfile.read
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
require 'test/helper.rb'
|
2
|
+
|
3
|
+
class PaperclipTest < Test::Unit::TestCase
|
4
|
+
context "An ActiveRecord model with an 'avatar' attachment" do
|
5
|
+
setup do
|
6
|
+
rebuild_model
|
7
|
+
@file = File.new(File.join(FIXTURES_DIR, "5k.png"))
|
8
|
+
end
|
9
|
+
|
10
|
+
context "that is attr_protected" do
|
11
|
+
setup do
|
12
|
+
Dummy.class_eval do
|
13
|
+
attr_protected :avatar
|
14
|
+
end
|
15
|
+
@dummy = Dummy.new
|
16
|
+
end
|
17
|
+
|
18
|
+
should "not assign the avatar on mass-set" do
|
19
|
+
@dummy.logger.expects(:debug)
|
20
|
+
|
21
|
+
@dummy.attributes = { :other => "I'm set!",
|
22
|
+
:avatar => @file }
|
23
|
+
|
24
|
+
assert_equal "I'm set!", @dummy.other
|
25
|
+
assert ! @dummy.avatar?
|
26
|
+
end
|
27
|
+
|
28
|
+
should "still allow assigment on normal set" do
|
29
|
+
@dummy.logger.expects(:debug).times(0)
|
30
|
+
|
31
|
+
@dummy.other = "I'm set!"
|
32
|
+
@dummy.avatar = @file
|
33
|
+
|
34
|
+
assert_equal "I'm set!", @dummy.other
|
35
|
+
assert @dummy.avatar?
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
should "have an #avatar method" do
|
40
|
+
assert Dummy.new.respond_to?(:avatar)
|
41
|
+
end
|
42
|
+
|
43
|
+
should "have an #avatar= method" do
|
44
|
+
assert Dummy.new.respond_to?(:avatar=)
|
45
|
+
end
|
46
|
+
|
47
|
+
[[:presence, nil, "5k.png", nil],
|
48
|
+
[:size, {:in => 1..10240}, "5k.png", "12k.png"]].each do |args|
|
49
|
+
context "with #{args[0]} validations" do
|
50
|
+
setup do
|
51
|
+
Dummy.class_eval do
|
52
|
+
send(*[:"validates_attachment_#{args[0]}", :avatar, args[1]].compact)
|
53
|
+
end
|
54
|
+
@dummy = Dummy.new
|
55
|
+
end
|
56
|
+
|
57
|
+
context "and a valid file" do
|
58
|
+
setup do
|
59
|
+
@file = args[2] && File.new(File.join(FIXTURES_DIR, args[2]))
|
60
|
+
end
|
61
|
+
|
62
|
+
should "not have any errors" do
|
63
|
+
@dummy.avatar = @file
|
64
|
+
assert @dummy.avatar.valid?
|
65
|
+
assert_equal 0, @dummy.avatar.errors.length
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
context "and an invalid file" do
|
70
|
+
setup do
|
71
|
+
@file = args[3] && File.new(File.join(FIXTURES_DIR, args[3]))
|
72
|
+
end
|
73
|
+
|
74
|
+
should "have errors" do
|
75
|
+
@dummy.avatar = @file
|
76
|
+
assert ! @dummy.avatar.valid?
|
77
|
+
assert_equal 1, @dummy.avatar.errors.length
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'test/unit'
|
3
|
+
require 'shoulda'
|
4
|
+
require 'mocha'
|
5
|
+
require 'tempfile'
|
6
|
+
|
7
|
+
require File.join(File.dirname(__FILE__), '..', 'lib', 'paperclip', 'geometry.rb')
|
8
|
+
require File.join(File.dirname(__FILE__), '..', 'lib', 'paperclip', 'thumbnail.rb')
|
9
|
+
|
10
|
+
class ThumbnailTest < Test::Unit::TestCase
|
11
|
+
|
12
|
+
context "A Paperclip Tempfile" do
|
13
|
+
setup do
|
14
|
+
@tempfile = Paperclip::Tempfile.new("file.jpg")
|
15
|
+
end
|
16
|
+
|
17
|
+
should "have its path contain a real extension" do
|
18
|
+
assert_equal ".jpg", File.extname(@tempfile.path)
|
19
|
+
end
|
20
|
+
|
21
|
+
should "be a real Tempfile" do
|
22
|
+
assert @tempfile.is_a?(::Tempfile)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context "Another Paperclip Tempfile" do
|
27
|
+
setup do
|
28
|
+
@tempfile = Paperclip::Tempfile.new("file")
|
29
|
+
end
|
30
|
+
|
31
|
+
should "not have an extension if not given one" do
|
32
|
+
assert_equal "", File.extname(@tempfile.path)
|
33
|
+
end
|
34
|
+
|
35
|
+
should "still be a real Tempfile" do
|
36
|
+
assert @tempfile.is_a?(::Tempfile)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context "An image" do
|
41
|
+
setup do
|
42
|
+
@file = File.new(File.join(File.dirname(__FILE__), "fixtures", "5k.png"))
|
43
|
+
end
|
44
|
+
|
45
|
+
context "being thumbnailed at 100x50 with cropping" do
|
46
|
+
setup do
|
47
|
+
@thumb = Paperclip::Thumbnail.new(@file, "100x50#")
|
48
|
+
end
|
49
|
+
|
50
|
+
should "report its correct current and target geometries" do
|
51
|
+
assert_equal "100x50#", @thumb.target_geometry.to_s
|
52
|
+
assert_equal "434x66", @thumb.current_geometry.to_s
|
53
|
+
end
|
54
|
+
|
55
|
+
should "report its correct format" do
|
56
|
+
assert_nil @thumb.format
|
57
|
+
end
|
58
|
+
|
59
|
+
should "have whiny_thumbnails turned on by default" do
|
60
|
+
assert @thumb.whiny_thumbnails
|
61
|
+
end
|
62
|
+
|
63
|
+
should "send the right command to convert when sent #make" do
|
64
|
+
@thumb.expects(:system).with do |arg|
|
65
|
+
arg.match %r{convert\s+"#{File.expand_path(@thumb.file.path)}"\s+-scale\s+\"x50\"\s+-crop\s+\"100x50\+114\+0\"\s+\+repage\s+".*?"}
|
66
|
+
end
|
67
|
+
@thumb.make
|
68
|
+
end
|
69
|
+
|
70
|
+
should "create the thumbnail when sent #make" do
|
71
|
+
dst = @thumb.make
|
72
|
+
assert_match /100x50/, `identify #{dst.path}`
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
data/test/lib/schema.rb
CHANGED
@@ -1,7 +1,20 @@
|
|
1
1
|
ActiveRecord::Schema.define :version => 0 do
|
2
|
-
create_table :
|
2
|
+
create_table :file_column_users, :force => true do |t|
|
3
3
|
t.column :name, :text, :nil => false
|
4
4
|
t.column :email, :text, :nil => false
|
5
5
|
t.column :avatar, :string
|
6
|
+
t.column :icon, :string
|
7
|
+
end
|
8
|
+
create_table :paperclip_users, :force => true do |t|
|
9
|
+
t.column :name, :text, :nil => false
|
10
|
+
t.column :email, :text, :nil => false
|
11
|
+
|
12
|
+
t.column :avatar_file_name, :string
|
13
|
+
t.column :avatar_content_type, :string
|
14
|
+
t.column :avatar_file_size, :integer
|
15
|
+
|
16
|
+
t.column :icon_file_name, :string
|
17
|
+
t.column :icon_content_type, :string
|
18
|
+
t.column :icon_file_size, :integer
|
6
19
|
end
|
7
20
|
end
|
@@ -1,8 +1,10 @@
|
|
1
|
+
$: << File.expand_path(File.join(File.dirname(__FILE__), ['lib', 'file_column', 'lib']))
|
1
2
|
require File.join(File.dirname(__FILE__), 'test_helper.rb')
|
3
|
+
require File.join(File.dirname(__FILE__), ['lib', 'file_column', 'init'])
|
2
4
|
require 'file_column'
|
3
5
|
require 'avatar/source/file_column_source'
|
4
6
|
|
5
|
-
class
|
7
|
+
class FileColumnUser < ActiveRecord::Base
|
6
8
|
file_column :avatar
|
7
9
|
file_column :icon
|
8
10
|
end
|
@@ -12,9 +14,9 @@ class TestFileColumnSource < Test::Unit::TestCase
|
|
12
14
|
def setup
|
13
15
|
@source = Avatar::Source::FileColumnSource.new
|
14
16
|
png = File.new(File.join(File.dirname(__FILE__), ['lib', 'user_suit.png']))
|
15
|
-
@user_with_avatar =
|
16
|
-
@user_with_icon =
|
17
|
-
@user_without_avatar =
|
17
|
+
@user_with_avatar = FileColumnUser.create!(:email => 'joe@example.com', :avatar => png)
|
18
|
+
@user_with_icon = FileColumnUser.create!(:email => 'terry@example.com', :icon => png)
|
19
|
+
@user_without_avatar = FileColumnUser.create!(:email => 'sue@example.com')
|
18
20
|
end
|
19
21
|
|
20
22
|
def test_avatar_url_is_nil_if_person_is_nil
|
@@ -26,11 +28,11 @@ class TestFileColumnSource < Test::Unit::TestCase
|
|
26
28
|
end
|
27
29
|
|
28
30
|
def test_avatar_url_for_person_with_avatar
|
29
|
-
assert_equal "/
|
31
|
+
assert_equal "/file_column_user/avatar/#{@user_with_avatar.id}/0/user_suit.png", @source.avatar_url_for(@user_with_avatar)
|
30
32
|
end
|
31
33
|
|
32
34
|
def test_avatar_url_for_person_with_icon_and_custom_file_column_field
|
33
|
-
assert_equal "/
|
35
|
+
assert_equal "/file_column_user/icon/#{@user_with_icon.id}/0/user_suit.png", @source.avatar_url_for(@user_with_icon, :file_column_field => :icon)
|
34
36
|
end
|
35
37
|
|
36
38
|
end
|
@@ -71,4 +71,9 @@ class TestGravatarSource < Test::Unit::TestCase
|
|
71
71
|
assert_equal "http://www.gravatar.com/avatar/#{@email_hash}", @source.avatar_url_for(@gary, :r => 'EVIL')
|
72
72
|
end
|
73
73
|
|
74
|
+
def test_default_always_at_end
|
75
|
+
assert_equal "http://www.gravatar.com/avatar/#{@email_hash}?rating=any&default=http://gonzo.com", @source.avatar_url_for(@gary, :gravatar_rating => :any, :gravatar_default_url => 'http://gonzo.com')
|
76
|
+
assert_equal "http://www.gravatar.com/avatar/#{@email_hash}?size=110&default=http://gonzo.com", @source.avatar_url_for(@gary, :gravatar_size => 110, :gravatar_default_url => 'http://gonzo.com')
|
77
|
+
end
|
78
|
+
|
74
79
|
end
|
data/test/test_helper.rb
CHANGED
@@ -7,8 +7,13 @@ require 'active_record'
|
|
7
7
|
require 'active_support'
|
8
8
|
require 'action_controller'
|
9
9
|
require 'action_view'
|
10
|
-
|
11
|
-
|
10
|
+
|
11
|
+
#$: << File.expand_path(File.join(File.dirname(__FILE__), ['lib', 'file_column', 'lib']))
|
12
|
+
#$: << File.expand_path(File.join(File.dirname(__FILE__), ['lib', 'paperclip', 'lib']))
|
13
|
+
|
14
|
+
#require File.join(File.dirname(__FILE__), ['lib', 'file_column', 'init'])
|
15
|
+
#require File.join(File.dirname(__FILE__), ['lib', 'paperclip', 'init'])
|
16
|
+
|
12
17
|
require File.join(File.dirname(__FILE__), ['lib', 'database'])
|
13
18
|
require File.join(File.dirname(__FILE__), ['lib', 'schema'])
|
14
19
|
require File.join(File.dirname(__FILE__), ['..', 'lib', 'avatar'])
|
@@ -0,0 +1,52 @@
|
|
1
|
+
$: << File.expand_path(File.join(File.dirname(__FILE__), ['lib', 'paperclip', 'lib']))
|
2
|
+
require File.join(File.dirname(__FILE__), 'test_helper.rb')
|
3
|
+
require File.join(File.dirname(__FILE__), ['lib', 'paperclip', 'init'])
|
4
|
+
require 'avatar/source/paperclip_source'
|
5
|
+
|
6
|
+
class PaperclipUser < ActiveRecord::Base
|
7
|
+
has_attached_file :avatar,
|
8
|
+
:styles => { :medium => "300x300>",
|
9
|
+
:thumb => "100x100>" },
|
10
|
+
:default_style => :medium,
|
11
|
+
:path => ":rails_root/public/images/:class/:id/:attachment/:style/:basename.:extension",
|
12
|
+
:url => "/images/:class/:id/:attachment/:style/:basename.:extension"
|
13
|
+
|
14
|
+
has_attached_file :icon,
|
15
|
+
:styles => { :small => "80x80" },
|
16
|
+
:default_style => :small,
|
17
|
+
:path => ":rails_root/public/images/:class/:id/:attachment/:style/:basename.:extension",
|
18
|
+
:url => "/images/:class/:id/:attachment/:style/:basename.:extension"
|
19
|
+
end
|
20
|
+
|
21
|
+
class TestPaperclipSource < Test::Unit::TestCase
|
22
|
+
|
23
|
+
def setup
|
24
|
+
@source = Avatar::Source::PaperclipSource.new
|
25
|
+
png = File.new(File.join(File.dirname(__FILE__), ['lib', 'user_suit.png']))
|
26
|
+
assert File.exists?(png.path)
|
27
|
+
@user_with_avatar = PaperclipUser.create!(:email => 'clarence@example.com', :avatar => png)
|
28
|
+
@user_with_icon = PaperclipUser.create!(:email => 'bobbi@example.com', :icon => png)
|
29
|
+
@user_without_avatar = PaperclipUser.create!(:email => 'brunhilde@example.com')
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_avatar_url_is_nil_if_person_is_nil
|
33
|
+
assert_nil @source.avatar_url_for(nil)
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_avatar_url_is_nil_if_person_has_no_avatar
|
37
|
+
assert_nil @source.avatar_url_for(@user_without_avatar)
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_avatar_url_for_person_with_avatar
|
41
|
+
assert_equal "/images/paperclipusers/#{@user_with_avatar.id}/avatars/medium/user_suit.png", @source.avatar_url_for(@user_with_avatar)
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_avatar_url_is_nil_for_invalid_size
|
45
|
+
assert_nil @source.avatar_url_for(@user_with_avatar, :paperclip_style => :not_a_valid_style)
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_avatar_url_for_person_with_icon_and_custom_file_column_field
|
49
|
+
assert_equal "/images/paperclipusers/#{@user_with_icon.id}/icons/small/user_suit.png", @source.avatar_url_for(@user_with_icon, :paperclip_field => :icon)
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
+
require 'avatar/source/wrapper/rails_asset_source_wrapper'
|
3
|
+
require 'avatar/source/static_url_source'
|
4
|
+
require 'action_controller/base'
|
5
|
+
|
6
|
+
class TestRailsAssetSourceWrapper < Test::Unit::TestCase
|
7
|
+
|
8
|
+
def setup
|
9
|
+
ActionController::Base.asset_host = 'http://test.com'
|
10
|
+
@source = Avatar::Source::StaticUrlSource.new('/')
|
11
|
+
@wrapper = Avatar::Source::Wrapper::RailsAssetSourceWrapper.new(@source)
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_returns_nil_if_underlying_source_returns_nil
|
15
|
+
@source.instance_eval { def avatar_url_for(*args); nil; end }
|
16
|
+
assert_nil @wrapper.avatar_url_for(:a_person)
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_does_not_change_fully_qualified_uri
|
20
|
+
@source.url = 'http://example.com/images/avatar.png'
|
21
|
+
assert_equal 'http://example.com/images/avatar.png', @wrapper.avatar_url_for(3)
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_uses_asset_host
|
25
|
+
@source.url = '/images/avatar.png'
|
26
|
+
assert_equal 'http://test.com/images/avatar.png', @wrapper.avatar_url_for(4)
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_error_if_cannot_generate_full_uri
|
30
|
+
ActionController::Base.asset_host = ''
|
31
|
+
@source.url = '/images/avatar.png'
|
32
|
+
assert_raise(RuntimeError) {
|
33
|
+
@wrapper.avatar_url_for(4)
|
34
|
+
}
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|