gravatarify 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +88 -50
- data/Rakefile +2 -2
- data/VERSION.yml +1 -1
- data/lib/gravatarify.rb +4 -0
- data/lib/gravatarify/base.rb +12 -5
- data/lib/gravatarify/helper.rb +32 -0
- data/rails/init.rb +2 -5
- data/test/test_helper.rb +11 -1
- data/test/{gravatarify_integration_test.rb → unit/gravatarify_ar_dm_test.rb} +1 -4
- data/test/{gravatarify_base_test.rb → unit/gravatarify_base_test.rb} +34 -33
- data/test/unit/gravatarify_helper_test.rb +78 -0
- data/test/{gravatarify_object_support_test.rb → unit/gravatarify_object_support_test.rb} +0 -2
- data/test/{gravatarify_rack_vs_cgi_test.rb → unit/gravatarify_rack_vs_cgi_test.rb} +3 -4
- data/test/{gravatarify_subdomain_test.rb → unit/gravatarify_subdomain_test.rb} +30 -2
- metadata +15 -15
- data/lib/gravatarify/view_helper.rb +0 -24
- data/test/gravatarify_view_helper_test.rb +0 -47
data/README.md
CHANGED
@@ -1,82 +1,101 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
Removes any hassles building those pesky gravatar urls, it's not there arent any alternatives [out](http://github.com/mdeering/gravitar_image_tag),
|
4
|
-
[there](http://github.com/chrislloyd/gravtastic), but none seem to support stuff like `Proc`s for the default picture url, or
|
5
|
-
the multiple host names supported by gravatar.com (great when displaying lots of avatars).
|
1
|
+
Gravatarify
|
2
|
+
===========
|
6
3
|
|
7
|
-
|
4
|
+
Hassle-free construction of those pesky gravatar.com urls, with out-of-the-box support for
|
5
|
+
Rails, DataMapper and Haml. It's not that there aren't any alternatives [out](http://github.com/mdeering/gravitar_image_tag),
|
6
|
+
[there](http://github.com/chrislloyd/gravtastic), but none seem to support stuff like `Proc`s
|
7
|
+
for the default picture url, or the multiple host names supported by gravatar.com (great when
|
8
|
+
displaying lots of avatars).
|
8
9
|
|
9
10
|
- **Source**: <http://github.com/lwe/gravatarify>
|
10
11
|
- **Docs**: <http://rdoc.info/projects/lwe/gravatarify>
|
11
12
|
- **Gem**: <http://gemcutter.org/gems/gravatarify>
|
12
13
|
|
13
|
-
|
14
|
+
Ready, Set, Go!
|
15
|
+
---------------
|
14
16
|
|
15
|
-
|
17
|
+
**READY** Install gravatarify as a gem (requires gemcutter):
|
16
18
|
|
17
19
|
[sudo] gem install gravatarify
|
18
|
-
|
19
|
-
Ready to go! Using Rails? Either add as gem (in `config/environment.rb`):
|
20
|
-
|
21
|
-
config.gem 'gravatarify', :source => 'http://gemcutter.org'
|
22
20
|
|
23
|
-
or
|
24
|
-
|
21
|
+
or as Rails plugin:
|
22
|
+
|
25
23
|
./script/plugin install git://github.com/lwe/gravatarify.git
|
26
24
|
|
27
|
-
|
28
|
-
|
25
|
+
**SET** When using the Rails plugin, skip this step. Anyhow, just ensure that when installed as a gem
|
26
|
+
it's bundled using `bundler` or defined in `config/environment.rb`, or just that it's on the `$LOAD_PATH`
|
27
|
+
and then `require 'gravatarify'`'d somehow.
|
29
28
|
|
30
|
-
|
29
|
+
**GO** Use it! When using Rails or Haml then just give it an email and it will return the gravatar url:
|
31
30
|
|
32
|
-
|
31
|
+
# creates an 20x20 pixel <img/> tag in your Rails ERB views:
|
32
|
+
<%= gravatar_tag @user.email, :size => 20 %>
|
33
|
+
|
34
|
+
# or in HAML views
|
35
|
+
# (Note: how it's possible to skip the email attribute, btw - that's a feature)
|
36
|
+
%img{ gravatar_attrs(@user, :size => 20) }/
|
37
|
+
|
38
|
+
**More!?** Allright, that was just the quickstart, to get up and running with ease. However, this library provides
|
39
|
+
quite a bit more, like:
|
33
40
|
|
41
|
+
* ...view helpers, namely `gravatar_url` and `gravatar_tag`, see "Using the view helpers".
|
34
42
|
* ...object/model helpers, so that an object responds to `gravatar_url`, see "Using the model helpers"
|
35
43
|
Works also very well with plain old ruby objects.
|
36
|
-
* ...Rails view helpers, namely `gravatar_url` and `gravatar_tag`, see "Using the view helpers". This is rails only though!
|
37
44
|
* ...and finally, a base module which provides the gravatar url generation, ready to be integrated into
|
38
45
|
custom helpers, plain ruby code or whatever, see "Back to the roots".
|
39
46
|
|
40
|
-
|
47
|
+
Using the view helpers
|
48
|
+
----------------------
|
41
49
|
|
42
|
-
Probably one of the easiest ways to add support for gravatar images is with the included view helpers
|
50
|
+
Probably one of the easiest ways to add support for gravatar images is with the included view helpers.
|
51
|
+
When using Rails or HAML these should be automatically available, if not do something like:
|
43
52
|
|
44
|
-
|
53
|
+
# e.g. for Sinatra
|
54
|
+
helpers Gravatarify::Helper
|
45
55
|
|
46
|
-
|
56
|
+
# or include for Haml
|
57
|
+
Haml::Helpers.send(:include, Gravatarify::Helper)
|
47
58
|
|
48
|
-
|
59
|
+
# NOTE: basically just include the Gravatarify::Helper module
|
49
60
|
|
50
|
-
This
|
51
|
-
|
61
|
+
This then provides three helper methods: `gravatar_url`, `gravatar_attrs` and `gravatar_tag`.
|
62
|
+
To just build a simple `<img/>` tag, pass in an object (if it responds to `email` or `mail`)
|
63
|
+
or a string containg the e-mail address:
|
52
64
|
|
53
|
-
<%=
|
54
|
-
:alt => @user.name, :class => "avatar avatar-16"}/
|
65
|
+
<%= gravatar_tag @user %> # => assumes @user has email or mail field!
|
55
66
|
|
56
|
-
|
57
|
-
|
58
|
-
in the example above), the email address must be passed in.
|
67
|
+
This builds a neat `<img/>`-tag. To display an "X" rated avatar which is 25x25 pixel in size
|
68
|
+
and the `<img/>` tag should have a class attribute, do:
|
59
69
|
|
60
|
-
|
70
|
+
<%= gravatar_tag @user, :size => 25, :rating => :x, :class => "gravatar" %>
|
71
|
+
|
72
|
+
If more control is needed, or just the plain URL is required, resort to `gravatar_url`, which
|
73
|
+
returns a string with the (unescaped) url:
|
74
|
+
|
75
|
+
<img src="<%= h(gravatar_url(@user.author_email, :size => 16)) %>" alt="Gravatar"/>
|
76
|
+
|
77
|
+
Using the model helpers
|
78
|
+
-----------------------
|
61
79
|
|
62
80
|
A very simple method to add `gravatar_url` support to models is by using the `gravatarify` class method.
|
63
81
|
|
82
|
+
# Assuming User has a field named email or mail!
|
64
83
|
class User < ActiveRecord::Base
|
65
|
-
|
84
|
+
gravatarify
|
66
85
|
end
|
67
|
-
|
86
|
+
|
68
87
|
Thats it! Well, at least if the `User` model responds to `email` or `mail`. Then in the views all left to do is:
|
69
88
|
|
70
89
|
<%= image_tag @user.gravatar_url %>
|
71
|
-
|
90
|
+
|
72
91
|
Neat, isn't it? Of course passing options works just like with the view helpers:
|
73
92
|
|
74
93
|
<%= image_tag @user.gravatar_url(:size => 16, :rating => :r) %>
|
75
|
-
|
94
|
+
|
76
95
|
Defaults can even be passed to the `gravatarify` call, so no need to repeat them on every `gravatar_url` call.
|
77
96
|
|
78
97
|
gravatarify :employee_mail, :size => 16, :rating => :r
|
79
|
-
|
98
|
+
|
80
99
|
All gravatars will now come from the `employee_mail` field, not the default `email` or `mail` field and be in 16x16px in size
|
81
100
|
and have a rating of 'r'. Of course these can be overriden in calls to `gravatar_url` like before. Pretty cool is also the
|
82
101
|
fact that an object can be passed directly to `gravatar_tag` if it responds to `gravatar_url`, like:
|
@@ -85,10 +104,10 @@ fact that an object can be passed directly to `gravatar_tag` if it responds to `
|
|
85
104
|
class User < ActiveRecord::Base
|
86
105
|
gravatarify :size => 16, :secure => true
|
87
106
|
end
|
88
|
-
|
107
|
+
|
89
108
|
# view:
|
90
109
|
<%= gravatar_tag @user %> # -> <img ... width="16" src="https://secure.gravatar..." height="16" />
|
91
|
-
|
110
|
+
|
92
111
|
The `gravatar_tag` looks if the object responds to `gravatar_url` and if so, just passes the options to it,
|
93
112
|
it works also with plain old ruby objects, of course :)
|
94
113
|
|
@@ -110,14 +129,14 @@ of `PoroUser`.
|
|
110
129
|
|
111
130
|
No need for sophisticated stuff like view helpers and ActiveRecord integration, want to go back to the roots?
|
112
131
|
Then feel free to use `Gravatarify::Base#build_gravatar_url` directly.
|
113
|
-
|
114
|
-
For example, want to use `build_gravatar_url` in a Sinatra app?
|
115
|
-
|
116
|
-
helpers Gravatarify::Base
|
117
132
|
|
118
|
-
|
133
|
+
When the ability to display image tags is required in different view frameworks (like liquid!?),
|
134
|
+
then just ensure that `Gravatarify::Helper` is included in the framework in question.
|
135
|
+
See {Gravatarify::Base#build_gravatar_url} and of course {Gravatarify::Helper}
|
136
|
+
for more informations and usage examples.
|
119
137
|
|
120
|
-
|
138
|
+
Need more control?
|
139
|
+
==================
|
121
140
|
|
122
141
|
<table>
|
123
142
|
<tr>
|
@@ -163,12 +182,23 @@ Yeah, that should work :). See {Gravatarify::Base#build_gravatar_url} for more i
|
|
163
182
|
<tr>
|
164
183
|
<td><tt>:filetype</tt></td>
|
165
184
|
<td>String, Symbol</td>
|
166
|
-
<td>Change image type, gravatar.com supports <tt>:gif</tt>, <tt>:png</tt> and <tt>:jpg</tt
|
185
|
+
<td>Change image type, gravatar.com supports <tt>:gif</tt>, <tt>:png</tt> and <tt>:jpg</tt>. If set to <tt>false</tt>
|
186
|
+
then a URL without an extension will be built (and gravatar.com then returns a JPG image).</td>
|
167
187
|
<td><tt>:jpg</tt></td>
|
168
188
|
</tr>
|
169
189
|
</table>
|
170
190
|
|
171
|
-
|
191
|
+
To options globally, access the `Gravatarify.options` hash and set any options which should apply to all
|
192
|
+
gravatar urls there. Of course all settings can be overridden locally:
|
193
|
+
|
194
|
+
# disable suffix and set default size to 16x16px
|
195
|
+
Gravatarify.options[:filetype] = false
|
196
|
+
Gravatarify.options[:size] = 16
|
197
|
+
|
198
|
+
gravatar_url(@user.email) # => http://0.gravatar.com/avatar/..f93ff1e?s=16
|
199
|
+
gravatar_url(@user.email, :filetype => :png) # => http://0.gravatar.com/avatar/..f93ff1e.png?s=16
|
200
|
+
|
201
|
+
### Not yet enough?
|
172
202
|
|
173
203
|
The `:default` option can be passed in a `Proc`, so this is certainly useful to for example
|
174
204
|
to generate an image url, based on the request size:
|
@@ -195,7 +225,8 @@ Into the block is passed the options hash and as second parameter the object its
|
|
195
225
|
Not only the `:default` option accepts a Proc, but also `:secure`, can be useful to handle cases where
|
196
226
|
it should evaluate against `request.ssl?` for example.
|
197
227
|
|
198
|
-
|
228
|
+
About the code
|
229
|
+
==============
|
199
230
|
|
200
231
|
Eventhough this library has less than 100 LOC, it's split into four files, maybe a bit
|
201
232
|
of an overkill, though I like neat and tidy classes :)
|
@@ -214,9 +245,16 @@ of an overkill, though I like neat and tidy classes :)
|
|
214
245
|
# gravatarify class method to add a gravatar_url
|
215
246
|
# to any object.
|
216
247
|
|
217
|
-
lib/gravatarify/
|
248
|
+
lib/gravatarify/helper.rb # Defines those view helpers, mainly gravatar_tag
|
249
|
+
|
250
|
+
### Contribute
|
251
|
+
|
252
|
+
1. Fork the project and hack away
|
253
|
+
2. Ensure that the changes are well tested
|
254
|
+
3. Send me a pull request
|
218
255
|
|
219
|
-
|
256
|
+
Licence
|
257
|
+
=======
|
220
258
|
|
221
259
|
Copyright (c) 2009 Lukas Westermann
|
222
260
|
|
data/Rakefile
CHANGED
@@ -64,7 +64,7 @@ namespace :metrics do
|
|
64
64
|
require 'code_statistics'
|
65
65
|
dirs = {
|
66
66
|
'Libraries' => 'lib',
|
67
|
-
'Unit tests' => 'test'
|
67
|
+
'Unit tests' => 'test/unit'
|
68
68
|
}.map { |name,dir| [name, File.join(File.dirname(__FILE__), dir)] }
|
69
69
|
CodeStatistics.new(*dirs).to_s
|
70
70
|
end
|
@@ -73,7 +73,7 @@ namespace :metrics do
|
|
73
73
|
task :coverage do |t|
|
74
74
|
rm_f "doc/coverage"
|
75
75
|
mkdir_p "doc/coverage"
|
76
|
-
rcov = %(rcov -Ilib:test --exclude '\/gems\/' -o doc/coverage -T test/*_test.rb )
|
76
|
+
rcov = %(rcov -Ilib:test --exclude '\/gems\/' -o doc/coverage -T test/unit/*_test.rb )
|
77
77
|
system rcov
|
78
78
|
end
|
79
79
|
|
data/VERSION.yml
CHANGED
data/lib/gravatarify.rb
CHANGED
@@ -4,8 +4,12 @@
|
|
4
4
|
# custom implementations, just include Gravatarify::Base.
|
5
5
|
require 'gravatarify/base'
|
6
6
|
require 'gravatarify/object_support'
|
7
|
+
require 'gravatarify/helper'
|
7
8
|
|
8
9
|
# setup for AR und DataMapper, note: DataMapper yet untested :) but I suppose it works, because
|
9
10
|
# it works as expected on plain old ruby objects!
|
10
11
|
ActiveRecord::Base.send(:include, Gravatarify::ObjectSupport) if defined?(ActiveRecord)
|
11
12
|
DataMapper::Model.append_inclusions(Gravatarify::ObjectSupport) if defined?(DataMapper)
|
13
|
+
|
14
|
+
# and HAML support (if defined)
|
15
|
+
Haml::Helpers.send(:include, Gravatarify::Helper) if defined?(Haml)
|
data/lib/gravatarify/base.rb
CHANGED
@@ -32,6 +32,9 @@ module Gravatarify
|
|
32
32
|
# # or set a custom default rating
|
33
33
|
# Gravatarify.options[:rating] = :R
|
34
34
|
#
|
35
|
+
# # or disable adding an extension
|
36
|
+
# Gravatarify.options[:filetype] = false
|
37
|
+
#
|
35
38
|
def options; @options ||= {} end
|
36
39
|
|
37
40
|
# Globally overide subdomains used to build gravatar urls, normally
|
@@ -57,7 +60,12 @@ module Gravatarify
|
|
57
60
|
# defined.
|
58
61
|
def subdomain(str); subdomains[str.hash % subdomains.size] || GRAVATAR_DEFAULT_SUBDOMAIN end
|
59
62
|
|
60
|
-
|
63
|
+
# Helper method to escape string using either <tt>Rack::Utils</tt> if available or else
|
64
|
+
# fallback to <tt>CGI#escape</tt>.
|
65
|
+
def escape(str)
|
66
|
+
str = str.to_s unless str.is_a?(String) # convert to string!
|
67
|
+
defined?(Rack::Utils) ? Rack::Utils.escape(str) : CGI.escape(str)
|
68
|
+
end
|
61
69
|
end
|
62
70
|
|
63
71
|
# Provides core support to build gravatar urls based on supplied e-mail strings.
|
@@ -103,9 +111,8 @@ module Gravatarify
|
|
103
111
|
# FIXME: add symbolize_keys again, maybe just write custom method, so we do not depend on ActiveSupport magic...
|
104
112
|
url_options = Gravatarify.options.merge(url_options)
|
105
113
|
email_hash = Digest::MD5.hexdigest(Base.get_smart_email_from(email).strip.downcase)
|
106
|
-
|
107
|
-
build_gravatar_host(email_hash, url_options.delete(:secure)) <<
|
108
|
-
"/avatar/#{email_hash}.#{url_options.delete(:filetype) || GRAVATAR_DEFAULT_FILETYPE}#{build_gravatar_options(email, url_options)}"
|
114
|
+
extension = url_options[:filetype] == false ? '' : ".#{url_options.delete(:filetype) || GRAVATAR_DEFAULT_FILETYPE}"
|
115
|
+
build_gravatar_host(email_hash, url_options.delete(:secure)) << "/avatar/#{email_hash}#{extension}#{build_gravatar_options(email, url_options)}"
|
109
116
|
end
|
110
117
|
|
111
118
|
private
|
@@ -128,7 +135,7 @@ module Gravatarify
|
|
128
135
|
url_options.each_pair do |key, value|
|
129
136
|
key = GRAVATAR_ABBREV_OPTIONS[key] if GRAVATAR_ABBREV_OPTIONS.include?(key) # shorten key!
|
130
137
|
value = value.call(url_options, source.is_a?(String) ? self : source) if key.to_s == 'd' and value.respond_to?(:call)
|
131
|
-
params << "#{Gravatarify.escape(key
|
138
|
+
params << "#{Gravatarify.escape(key)}=#{Gravatarify.escape(value)}" if value
|
132
139
|
end
|
133
140
|
"?#{params.sort * '&'}" unless params.empty?
|
134
141
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Gravatarify::Helper
|
2
|
+
# so that it's possible to access that build_gravatar_url method
|
3
|
+
include Gravatarify::Base
|
4
|
+
|
5
|
+
# to simplify things a bit and have a neat-o naming
|
6
|
+
alias_method :gravatar_url, :build_gravatar_url
|
7
|
+
|
8
|
+
# Helper method for HAML to return a neat hash to be used as attributes in an image tag.
|
9
|
+
#
|
10
|
+
# Now it's as simple as doing something like:
|
11
|
+
#
|
12
|
+
# %img{ gravatar_attrs(@user.mail, :size => 20) }/
|
13
|
+
#
|
14
|
+
def gravatar_attrs(email, options = {})
|
15
|
+
url_options = options.reject { |key, value| !Gravatarify::GRAVATAR_OPTIONS.include?(key) }
|
16
|
+
options = options.delete_if { |key, value| Gravatarify::GRAVATAR_OPTIONS.include?(key) }
|
17
|
+
options[:alt] ||= Gravatarify::Base.get_smart_email_from(email) # use email as :alt attribute
|
18
|
+
options[:width] = options[:height] = (url_options[:size] || Gravatarify::GRAVATAR_DEFAULT_SIZE) # customize size
|
19
|
+
options[:src] = email.respond_to?(:gravatar_url) ? email.gravatar_url(url_options) : build_gravatar_url(email, url_options)
|
20
|
+
options
|
21
|
+
end
|
22
|
+
|
23
|
+
# Takes care of creating an <tt><img/></tt>-tag based on a gravatar url, it no longer
|
24
|
+
# makes use of any Rails helper, so is totally useable in any other library.
|
25
|
+
def gravatar_tag(email, options = {})
|
26
|
+
html_attrs = gravatar_attrs(email, options).map do |key,value|
|
27
|
+
escaped = defined?(Rack::Utils) ? Rack::Utils.escape_html(value) : CGI.escapeHTML(value)
|
28
|
+
"#{key}=\"#{escaped}\""
|
29
|
+
end.sort.join(" ")
|
30
|
+
"<img #{html_attrs} />"
|
31
|
+
end
|
32
|
+
end
|
data/rails/init.rb
CHANGED
@@ -1,7 +1,4 @@
|
|
1
1
|
require 'gravatarify'
|
2
2
|
|
3
|
-
#
|
4
|
-
if defined?(ActionView)
|
5
|
-
require 'gravatarify/view_helper'
|
6
|
-
ActionView::Base.send(:include, Gravatarify::ViewHelper)
|
7
|
-
end
|
3
|
+
# include view helpers only if ActionView is available
|
4
|
+
ActionView::Base.send(:include, Gravatarify::Helper) if defined?(ActionView)
|
data/test/test_helper.rb
CHANGED
@@ -3,10 +3,20 @@ require 'test/unit'
|
|
3
3
|
require 'shoulda'
|
4
4
|
require 'rr'
|
5
5
|
|
6
|
+
require 'active_support'
|
7
|
+
begin; require 'activerecord'; rescue LoadError; end
|
8
|
+
begin; require 'dm-core'; rescue LoadError; end
|
9
|
+
require 'gravatarify'
|
10
|
+
|
6
11
|
Test::Unit::TestCase.send :include, RR::Adapters::TestUnit
|
7
12
|
|
8
13
|
# Reset +Gravatarify+ to default hosts and cleared options
|
9
14
|
def reset_gravatarify!
|
10
15
|
Gravatarify.options.clear
|
11
16
|
Gravatarify.subdomains = Gravatarify::GRAVATAR_SUBDOMAINS
|
12
|
-
end
|
17
|
+
end
|
18
|
+
|
19
|
+
# some often used values...
|
20
|
+
BELLA_AT_GMAIL = "http://0.gravatar.com/avatar/1cacf1bc403efca2e7a58bcfa9574e4d"
|
21
|
+
BELLA_AT_GMAIL_JPG = "#{BELLA_AT_GMAIL}.jpg"
|
22
|
+
NIL_JPG = "http://1.gravatar.com/avatar/d41d8cd98f00b204e9800998ecf8427e.jpg"
|
@@ -1,9 +1,6 @@
|
|
1
1
|
require 'test_helper'
|
2
|
-
begin; require 'activerecord'; rescue LoadError; end
|
3
|
-
begin; require 'dm-core'; rescue LoadError; end
|
4
|
-
require 'gravatarify'
|
5
2
|
|
6
|
-
class
|
3
|
+
class GravatarifyArDmTest < Test::Unit::TestCase
|
7
4
|
def setup; reset_gravatarify! end
|
8
5
|
|
9
6
|
context "ActiveRecord::Base" do
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'test_helper'
|
2
|
-
require 'gravatarify/base'
|
3
2
|
|
4
3
|
class MockView
|
5
4
|
include Gravatarify::Base
|
@@ -12,53 +11,51 @@ class GravatarifyBaseTest < Test::Unit::TestCase
|
|
12
11
|
|
13
12
|
context "#build_gravatar_url, but without any options yet" do
|
14
13
|
should "generate correct url for hash without options" do
|
15
|
-
assert_equal
|
14
|
+
assert_equal BELLA_AT_GMAIL_JPG, build_gravatar_url('bella@gmail.com')
|
16
15
|
end
|
17
16
|
|
18
17
|
should "trim and lowercase email address (as according to gravatar docs)" do
|
19
|
-
assert_equal
|
20
|
-
assert_equal
|
21
|
-
assert_equal
|
18
|
+
assert_equal BELLA_AT_GMAIL_JPG, build_gravatar_url("\tbella@gmail.com \n\t")
|
19
|
+
assert_equal BELLA_AT_GMAIL_JPG, build_gravatar_url("BELLA@gmail.COM")
|
20
|
+
assert_equal BELLA_AT_GMAIL_JPG, build_gravatar_url(" BELLA@GMAIL.com")
|
22
21
|
end
|
23
22
|
|
24
23
|
should "handle a nil email as if it were an empty string" do
|
25
|
-
assert_equal
|
26
|
-
assert_equal
|
24
|
+
assert_equal NIL_JPG, build_gravatar_url(nil)
|
25
|
+
assert_equal NIL_JPG, build_gravatar_url('')
|
27
26
|
end
|
28
27
|
end
|
29
28
|
|
30
29
|
context "#build_gravatar_url, with options" do
|
31
30
|
should "add well known options like size, rating or default and always in alphabetical order" do
|
32
|
-
assert_equal "
|
33
|
-
assert_equal "
|
34
|
-
|
35
|
-
assert_equal "http://0.gravatar.com/avatar/1cacf1bc403efca2e7a58bcfa9574e4d.jpg?other=escaped%26yes%3F&r=x&s=30",
|
36
|
-
build_gravatar_url('bella@gmail.com', :size => 30, :rating => :x, :other => "escaped&yes?")
|
31
|
+
assert_equal "#{BELLA_AT_GMAIL_JPG}?s=16", build_gravatar_url('bella@gmail.com', :size => 16)
|
32
|
+
assert_equal "#{BELLA_AT_GMAIL_JPG}?d=http%3A%2F%2Fexample.com%2Ftest.jpg&s=20", build_gravatar_url('bella@gmail.com', :size => 20, :default => 'http://example.com/test.jpg')
|
33
|
+
assert_equal "#{BELLA_AT_GMAIL_JPG}?other=escaped%26yes%3F&r=x&s=30", build_gravatar_url('bella@gmail.com', :size => 30, :rating => :x, :other => "escaped&yes?")
|
37
34
|
end
|
38
35
|
|
39
36
|
should "ensure that all options as well as keys are escaped correctly" do
|
40
|
-
assert_equal "
|
41
|
-
build_gravatar_url('bella@gmail.com', 'escaped/me' => 'escaped/me')
|
37
|
+
assert_equal "#{BELLA_AT_GMAIL_JPG}?escaped%2Fme=escaped%2Fme", build_gravatar_url('bella@gmail.com', 'escaped/me' => 'escaped/me')
|
42
38
|
end
|
43
39
|
|
44
40
|
should "ignore false or nil options" do
|
45
|
-
assert_equal "
|
46
|
-
build_gravatar_url('bella@gmail.com', :s => 24, :invalid => false, :other => nil)
|
41
|
+
assert_equal "#{BELLA_AT_GMAIL_JPG}?s=24", build_gravatar_url('bella@gmail.com', :s => 24, :invalid => false, :other => nil)
|
47
42
|
end
|
48
43
|
|
49
44
|
should "allow different :filetype to be set, like 'gif' or 'png'" do
|
50
|
-
assert_equal "
|
51
|
-
assert_equal "
|
45
|
+
assert_equal "#{BELLA_AT_GMAIL}.gif", build_gravatar_url('bella@gmail.com', :filetype => :gif)
|
46
|
+
assert_equal "#{BELLA_AT_GMAIL}.png", build_gravatar_url('bella@gmail.com', :filetype => :png)
|
52
47
|
end
|
53
48
|
|
49
|
+
should "skip :filetype if set to false" do
|
50
|
+
assert_equal "#{BELLA_AT_GMAIL}", build_gravatar_url('bella@gmail.com', :filetype => false)
|
51
|
+
assert_equal "#{BELLA_AT_GMAIL_JPG}", build_gravatar_url('bella@gmail.com', :filetype => nil)
|
52
|
+
end
|
53
|
+
|
54
54
|
should "handle Procs as :default, to easily generate default urls based on supplied :size" do
|
55
55
|
default = Proc.new { |*args| "http://example.com/gravatar#{args.first[:size] ? '-' + args.first[:size].to_s : ''}.jpg" }
|
56
|
-
assert_equal "
|
57
|
-
|
58
|
-
assert_equal "
|
59
|
-
build_gravatar_url('bella@gmail.com', :size => 25, :d => default)
|
60
|
-
assert_equal "http://0.gravatar.com/avatar/1cacf1bc403efca2e7a58bcfa9574e4d.jpg?d=http%3A%2F%2Fexample.com%2Fgravatar-20.jpg&s=20",
|
61
|
-
build_gravatar_url('bella@gmail.com', :size => 20, 'd' => default)
|
56
|
+
assert_equal "#{BELLA_AT_GMAIL_JPG}?d=http%3A%2F%2Fexample.com%2Fgravatar.jpg", build_gravatar_url('bella@gmail.com', :default => default)
|
57
|
+
assert_equal "#{BELLA_AT_GMAIL_JPG}?d=http%3A%2F%2Fexample.com%2Fgravatar-25.jpg&s=25", build_gravatar_url('bella@gmail.com', :size => 25, :d => default)
|
58
|
+
assert_equal "#{BELLA_AT_GMAIL_JPG}?d=http%3A%2F%2Fexample.com%2Fgravatar-20.jpg&s=20", build_gravatar_url('bella@gmail.com', :size => 20, 'd' => default)
|
62
59
|
end
|
63
60
|
end
|
64
61
|
|
@@ -67,21 +64,21 @@ class GravatarifyBaseTest < Test::Unit::TestCase
|
|
67
64
|
obj = Object.new
|
68
65
|
mock(obj).email { "bella@gmail.com" }
|
69
66
|
|
70
|
-
assert_equal
|
67
|
+
assert_equal BELLA_AT_GMAIL_JPG, build_gravatar_url(obj)
|
71
68
|
end
|
72
69
|
|
73
70
|
should "look for :mail of field :email does not exist" do
|
74
71
|
obj = Object.new
|
75
72
|
mock(obj).mail { "bella@gmail.com" }
|
76
73
|
|
77
|
-
assert_equal
|
74
|
+
assert_equal BELLA_AT_GMAIL_JPG, build_gravatar_url(obj)
|
78
75
|
end
|
79
76
|
|
80
77
|
should "finally just use to_s... if neither :email nor :mail exists" do
|
81
78
|
obj = Object.new
|
82
79
|
mock(obj).to_s { "bella@gmail.com" }
|
83
80
|
|
84
|
-
assert_equal
|
81
|
+
assert_equal BELLA_AT_GMAIL_JPG, build_gravatar_url(obj)
|
85
82
|
end
|
86
83
|
|
87
84
|
should "handle Procs as :default and pass in the 'object' as second parameter" do
|
@@ -89,7 +86,7 @@ class GravatarifyBaseTest < Test::Unit::TestCase
|
|
89
86
|
girl = Object.new
|
90
87
|
mock(girl).email { "bella@gmail.com" }
|
91
88
|
mock(girl).female? { true }
|
92
|
-
assert_equal "
|
89
|
+
assert_equal "#{BELLA_AT_GMAIL_JPG}?d=http%3A%2F%2Fexample.com%2Fgravatar_girl.jpg", build_gravatar_url(girl, :default => default)
|
93
90
|
|
94
91
|
boy = Object.new
|
95
92
|
mock(boy).email { "hans@gmail.com" }
|
@@ -122,7 +119,7 @@ class GravatarifyBaseTest < Test::Unit::TestCase
|
|
122
119
|
|
123
120
|
mock_no_ssl = MockView.new
|
124
121
|
mock(mock_no_ssl).request.stub!.ssl? { false }
|
125
|
-
assert_equal
|
122
|
+
assert_equal BELLA_AT_GMAIL_JPG, mock_no_ssl.build_gravatar_url('bella@gmail.com')
|
126
123
|
end
|
127
124
|
end
|
128
125
|
|
@@ -134,13 +131,17 @@ class GravatarifyBaseTest < Test::Unit::TestCase
|
|
134
131
|
end
|
135
132
|
|
136
133
|
should "ensure that default options are always added" do
|
137
|
-
assert_equal "
|
138
|
-
build_gravatar_url('bella@gmail.com')
|
134
|
+
assert_equal "#{BELLA_AT_GMAIL}.png?anything=test&d=http%3A%2F%2Fexample.com%2Fgravatar.jpg", build_gravatar_url('bella@gmail.com')
|
139
135
|
end
|
140
136
|
|
141
137
|
should "ensure that default options can be overriden by passing options into build_gravatar_url call" do
|
142
|
-
assert_equal "
|
143
|
-
|
138
|
+
assert_equal "#{BELLA_AT_GMAIL}.gif?anything=else&d=http%3A%2F%2Fexample.com%2Fgravatar.jpg", build_gravatar_url('bella@gmail.com', :anything => "else", :filetype => :gif)
|
139
|
+
end
|
140
|
+
|
141
|
+
should "ensure that no filetypes are added when :filetype set to false, unless locally specified" do
|
142
|
+
Gravatarify.options[:filetype] = false
|
143
|
+
assert_equal "#{BELLA_AT_GMAIL}?anything=test&d=http%3A%2F%2Fexample.com%2Fgravatar.jpg", build_gravatar_url('bella@gmail.com')
|
144
|
+
assert_equal "#{BELLA_AT_GMAIL}.png?anything=test&d=http%3A%2F%2Fexample.com%2Fgravatar.jpg", build_gravatar_url('bella@gmail.com', :filetype => 'png')
|
144
145
|
end
|
145
146
|
end
|
146
147
|
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'gravatarify/helper'
|
3
|
+
|
4
|
+
class GravatarifyHelpersTest < Test::Unit::TestCase
|
5
|
+
include Gravatarify::Helper
|
6
|
+
|
7
|
+
def setup
|
8
|
+
# just ensure that no global options are defined when starting next test
|
9
|
+
reset_gravatarify!
|
10
|
+
end
|
11
|
+
|
12
|
+
context "#gravatar_url" do
|
13
|
+
should "return same urls as build_gravatar_url" do
|
14
|
+
assert_equal BELLA_AT_GMAIL_JPG, gravatar_url('bella@gmail.com')
|
15
|
+
assert_equal "#{BELLA_AT_GMAIL_JPG}?d=x&s=16", gravatar_url('bella@gmail.com', :d => 'x', :s => 16)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
context "#gravatar_attrs" do
|
20
|
+
should "return hash with :height, :width, :alt and :src defined" do
|
21
|
+
hash = gravatar_attrs('bella@gmail.com', :size => 16)
|
22
|
+
assert_equal "#{BELLA_AT_GMAIL_JPG}?s=16", hash[:src]
|
23
|
+
assert_equal 16, hash[:width]
|
24
|
+
assert_equal 16, hash[:height]
|
25
|
+
assert_equal 'bella@gmail.com', hash[:alt]
|
26
|
+
assert_nil hash[:size]
|
27
|
+
end
|
28
|
+
|
29
|
+
should "allow any param to be defined/overridden, except src, width and heigth" do
|
30
|
+
hash = gravatar_attrs('bella@gmail.com', :size => 20, :r => :x, :height => 40, :alt => 'bella', :id => 'test', :title => 'something', :class => 'gravatar')
|
31
|
+
assert_equal "#{BELLA_AT_GMAIL_JPG}?r=x&s=20", hash[:src]
|
32
|
+
assert_equal 20, hash[:width]
|
33
|
+
assert_equal 20, hash[:height]
|
34
|
+
assert_equal 'bella', hash[:alt]
|
35
|
+
assert_equal 'test', hash[:id]
|
36
|
+
assert_equal 'something', hash[:title]
|
37
|
+
assert_equal 'gravatar', hash[:class]
|
38
|
+
assert_nil hash[:size]
|
39
|
+
assert_nil hash[:r]
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
context "#gravatar_tag helper" do
|
44
|
+
should "create <img/> tag with correct gravatar urls" do
|
45
|
+
assert_equal '<img alt="bella@gmail.com" height="80" src="http://0.gravatar.com/avatar/1cacf1bc403efca2e7a58bcfa9574e4d.jpg" width="80" />', gravatar_tag('bella@gmail.com')
|
46
|
+
end
|
47
|
+
|
48
|
+
should "create <img/> tags and handle all options correctly, other options should be passed to Rails' image_tag" do
|
49
|
+
assert_equal '<img alt="bella@gmail.com" height="16" src="http://0.gravatar.com/avatar/1cacf1bc403efca2e7a58bcfa9574e4d.jpg?s=16" width="16" />',
|
50
|
+
gravatar_tag('bella@gmail.com', :size => 16)
|
51
|
+
assert_equal '<img alt="bella@gmail.com" class="gravatar" height="16" src="http://0.gravatar.com/avatar/1cacf1bc403efca2e7a58bcfa9574e4d.jpg?d=x&s=16" width="16" />',
|
52
|
+
gravatar_tag('bella@gmail.com', :class => "gravatar", :size => 16, :d => "x")
|
53
|
+
end
|
54
|
+
|
55
|
+
should "ensure that all values are correctly html-esacped!" do
|
56
|
+
assert_equal '<img alt="bella@gmail.com" height="80" src="http://0.gravatar.com/avatar/1cacf1bc403efca2e7a58bcfa9574e4d.jpg" title="<>" width="80" />',
|
57
|
+
gravatar_tag('bella@gmail.com', :title => '<>')
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
context "#gravatar_tag when passed in an object" do
|
62
|
+
should "create <img/>-tag based on :email field" do
|
63
|
+
obj = Object.new
|
64
|
+
mock(obj).email.times(2) { "bella@gmail.com" }
|
65
|
+
|
66
|
+
assert_equal '<img alt="bella@gmail.com" height="80" src="http://0.gravatar.com/avatar/1cacf1bc403efca2e7a58bcfa9574e4d.jpg" width="80" />',
|
67
|
+
gravatar_tag(obj)
|
68
|
+
end
|
69
|
+
|
70
|
+
should "create <img/>-tag based on gravatar_url from object if object responds to gravatar_url" do
|
71
|
+
obj = Object.new
|
72
|
+
mock(obj).gravatar_url({ :size => 16 }) { "http://0.gravatar.com/avatar/1cacf1bc403efca2e7a58bcfa9574e4d.jpg?s=16" }
|
73
|
+
|
74
|
+
assert_equal '<img alt="Gravatar" height="16" src="http://0.gravatar.com/avatar/1cacf1bc403efca2e7a58bcfa9574e4d.jpg?s=16" width="16" />',
|
75
|
+
gravatar_tag(obj, :size => 16, :alt => "Gravatar")
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'test_helper'
|
2
|
-
require '
|
2
|
+
require 'cgi'
|
3
3
|
|
4
4
|
class GravatarifyRackVsCgiTest < Test::Unit::TestCase
|
5
5
|
include Gravatarify::Base
|
6
|
-
|
6
|
+
|
7
7
|
# Reload Rack::Utils
|
8
8
|
def teardown
|
9
9
|
begin; require('rack/utils'); rescue LoadError; end
|
@@ -18,8 +18,7 @@ class GravatarifyRackVsCgiTest < Test::Unit::TestCase
|
|
18
18
|
should "fallback to CGI#escape" do
|
19
19
|
assert !defined?(Rack::Utils), 'Rack::Utils should no longer be defined'
|
20
20
|
assert defined?(CGI), "CGI should be defined"
|
21
|
-
assert_equal "
|
22
|
-
build_gravatar_url('bella@gmail.com', 'escaped/me' => 'escaped/me')
|
21
|
+
assert_equal "#{BELLA_AT_GMAIL_JPG}?escaped%2Fme=escaped%2Fme", build_gravatar_url('bella@gmail.com', 'escaped/me' => 'escaped/me')
|
23
22
|
end
|
24
23
|
end
|
25
24
|
end
|
@@ -1,5 +1,7 @@
|
|
1
1
|
require 'test_helper'
|
2
|
-
require '
|
2
|
+
require 'net/http'
|
3
|
+
require 'net/https'
|
4
|
+
require 'uri'
|
3
5
|
|
4
6
|
class GravatarifySubdomainTest < Test::Unit::TestCase
|
5
7
|
include Gravatarify::Base
|
@@ -32,5 +34,31 @@ class GravatarifySubdomainTest < Test::Unit::TestCase
|
|
32
34
|
assert_equal "http://www.gravatar.com/avatar/4979dd9653e759c78a81d4997f56bae2.jpg", build_gravatar_url('info@initech.com')
|
33
35
|
assert_equal "http://www.gravatar.com/avatar/d4489907918035d0bc6ff3f6c76e760d.jpg", build_gravatar_url('support@initech.com')
|
34
36
|
end
|
35
|
-
end
|
37
|
+
end
|
38
|
+
|
39
|
+
context "with Net::HTTP the gravatar.com subdomains" do
|
40
|
+
should "return an image of type image/jpeg" do
|
41
|
+
Gravatarify.subdomains.each do |subdomain|
|
42
|
+
response = Net::HTTP.get_response URI.parse("http://#{subdomain}.gravatar.com/avatar/4979dd9653e759c78a81d4997f56bae2.jpg")
|
43
|
+
assert_equal 200, response.code.to_i
|
44
|
+
assert_equal "image/jpeg", response.content_type
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
should "not respond to 3.gravatar.com, if so add to subdomains dude!!!" do
|
49
|
+
assert_raises(SocketError) { Net::HTTP.get_response URI.parse('http://3.gravatar.com/avatar/4979dd9653e759c78a81d4997f56bae2.jpg') }
|
50
|
+
end
|
51
|
+
|
52
|
+
should "respond to https://secure.gravatar.com/ urls as well" do
|
53
|
+
http = Net::HTTP.new('secure.gravatar.com', 443)
|
54
|
+
http.use_ssl = true
|
55
|
+
|
56
|
+
# do not verify peer certificate (get rid of that warning dude!)
|
57
|
+
http.instance_variable_get('@ssl_context').verify_mode = OpenSSL::SSL::VERIFY_NONE
|
58
|
+
|
59
|
+
response = http.get '/avatar/4979dd9653e759c78a81d4997f56bae2.jpg'
|
60
|
+
assert_equal 200, response.code.to_i
|
61
|
+
assert_equal "image/jpeg", response.content_type
|
62
|
+
end
|
63
|
+
end
|
36
64
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gravatarify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lukas Westermann
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-10-
|
12
|
+
date: 2009-10-23 00:00:00 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -32,16 +32,16 @@ files:
|
|
32
32
|
- init.rb
|
33
33
|
- lib/gravatarify.rb
|
34
34
|
- lib/gravatarify/base.rb
|
35
|
+
- lib/gravatarify/helper.rb
|
35
36
|
- lib/gravatarify/object_support.rb
|
36
|
-
- lib/gravatarify/view_helper.rb
|
37
37
|
- rails/init.rb
|
38
|
-
- test/gravatarify_base_test.rb
|
39
|
-
- test/gravatarify_integration_test.rb
|
40
|
-
- test/gravatarify_object_support_test.rb
|
41
|
-
- test/gravatarify_rack_vs_cgi_test.rb
|
42
|
-
- test/gravatarify_subdomain_test.rb
|
43
|
-
- test/gravatarify_view_helper_test.rb
|
44
38
|
- test/test_helper.rb
|
39
|
+
- test/unit/gravatarify_ar_dm_test.rb
|
40
|
+
- test/unit/gravatarify_base_test.rb
|
41
|
+
- test/unit/gravatarify_helper_test.rb
|
42
|
+
- test/unit/gravatarify_object_support_test.rb
|
43
|
+
- test/unit/gravatarify_rack_vs_cgi_test.rb
|
44
|
+
- test/unit/gravatarify_subdomain_test.rb
|
45
45
|
has_rdoc: true
|
46
46
|
homepage: http://github.com/lwe/gravatarify
|
47
47
|
licenses:
|
@@ -71,10 +71,10 @@ signing_key:
|
|
71
71
|
specification_version: 3
|
72
72
|
summary: Awesome gravatar support for ruby (and rails).
|
73
73
|
test_files:
|
74
|
-
- test/gravatarify_base_test.rb
|
75
|
-
- test/gravatarify_integration_test.rb
|
76
|
-
- test/gravatarify_object_support_test.rb
|
77
|
-
- test/gravatarify_rack_vs_cgi_test.rb
|
78
|
-
- test/gravatarify_subdomain_test.rb
|
79
|
-
- test/gravatarify_view_helper_test.rb
|
80
74
|
- test/test_helper.rb
|
75
|
+
- test/unit/gravatarify_ar_dm_test.rb
|
76
|
+
- test/unit/gravatarify_base_test.rb
|
77
|
+
- test/unit/gravatarify_helper_test.rb
|
78
|
+
- test/unit/gravatarify_object_support_test.rb
|
79
|
+
- test/unit/gravatarify_rack_vs_cgi_test.rb
|
80
|
+
- test/unit/gravatarify_subdomain_test.rb
|
@@ -1,24 +0,0 @@
|
|
1
|
-
# The view helper, especially for the +gravatar_tag+ helper, requires
|
2
|
-
# rails!
|
3
|
-
module Gravatarify::ViewHelper
|
4
|
-
include Gravatarify::Base
|
5
|
-
|
6
|
-
# Ensure proper gravatar_url method is available!
|
7
|
-
alias_method :gravatar_url, :build_gravatar_url
|
8
|
-
|
9
|
-
# Create <img .../> tag by passing +email+ to +gravatar_url+, is based
|
10
|
-
# on rails +image_tag+ helper method.
|
11
|
-
#
|
12
|
-
# <%= gravatar_tag(current_user.email, :size => 20) %> # -> <img alt="... height="20" src="http://grava... width="20" />
|
13
|
-
# <%= gravatar_tag('foo@bar.com', :class => "gravatar") # -> <img alt="foo@bar.com" class="gravatar" height="80" ... width="80" />
|
14
|
-
#
|
15
|
-
# Note: this method tries to be very clever about which options need to be passed to
|
16
|
-
# +gravatar_url+ and which to +image_tag+, so using this method it's not possible to
|
17
|
-
# send arbitary attributes to +gravatar_url+ and have them included in the url.
|
18
|
-
def gravatar_tag(email, options = {})
|
19
|
-
url_options = options.symbolize_keys.reject { |key,value| !Gravatarify::GRAVATAR_OPTIONS.include?(key) }
|
20
|
-
options[:alt] ||= Gravatarify::Base.get_smart_email_from(email) # use email as :alt attribute
|
21
|
-
options[:width] = options[:height] = (url_options[:size] || Gravatarify::GRAVATAR_DEFAULT_SIZE) # customize size
|
22
|
-
image_tag(email.respond_to?(:gravatar_url) ? email.gravatar_url(url_options) : gravatar_url(email, url_options), options)
|
23
|
-
end
|
24
|
-
end
|
@@ -1,47 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
require 'active_support'
|
3
|
-
require 'action_view/helpers'
|
4
|
-
require 'gravatarify'
|
5
|
-
require 'gravatarify/view_helper'
|
6
|
-
|
7
|
-
class GravatarifyViewHelperTest < Test::Unit::TestCase
|
8
|
-
include ActionView::Helpers
|
9
|
-
include Gravatarify::ViewHelper
|
10
|
-
|
11
|
-
def setup
|
12
|
-
# just ensure that no global options are defined when starting next test
|
13
|
-
reset_gravatarify!
|
14
|
-
end
|
15
|
-
|
16
|
-
context "#gravatar_tag helper" do
|
17
|
-
should "create <img/> tag with correct gravatar urls" do
|
18
|
-
assert_equal '<img alt="bella@gmail.com" height="80" src="http://0.gravatar.com/avatar/1cacf1bc403efca2e7a58bcfa9574e4d.jpg" width="80" />',
|
19
|
-
gravatar_tag('bella@gmail.com')
|
20
|
-
end
|
21
|
-
|
22
|
-
should "create <img/> tags and handle all options correctly, other options should be passed to Rails' image_tag" do
|
23
|
-
assert_equal '<img alt="bella@gmail.com" height="16" src="http://0.gravatar.com/avatar/1cacf1bc403efca2e7a58bcfa9574e4d.jpg?s=16" width="16" />',
|
24
|
-
gravatar_tag('bella@gmail.com', :size => 16)
|
25
|
-
assert_equal '<img alt="bella@gmail.com" class="gravatar" height="16" src="http://0.gravatar.com/avatar/1cacf1bc403efca2e7a58bcfa9574e4d.jpg?s=16" width="16" />',
|
26
|
-
gravatar_tag('bella@gmail.com', :class => "gravatar", :size => 16)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
context "#gravatar_tag when passed in an object" do
|
31
|
-
should "create <img/>-tag based on :email field" do
|
32
|
-
obj = Object.new
|
33
|
-
mock(obj).email.times(2) { "bella@gmail.com" }
|
34
|
-
|
35
|
-
assert_equal '<img alt="bella@gmail.com" height="80" src="http://0.gravatar.com/avatar/1cacf1bc403efca2e7a58bcfa9574e4d.jpg" width="80" />',
|
36
|
-
gravatar_tag(obj)
|
37
|
-
end
|
38
|
-
|
39
|
-
should "create <img/>-tag based on gravatar_url from object if object responds to gravatar_url" do
|
40
|
-
obj = Object.new
|
41
|
-
mock(obj).gravatar_url({ :size => 16 }) { "http://0.gravatar.com/avatar/1cacf1bc403efca2e7a58bcfa9574e4d.jpg?s=16" }
|
42
|
-
|
43
|
-
assert_equal '<img alt="Gravatar" height="16" src="http://0.gravatar.com/avatar/1cacf1bc403efca2e7a58bcfa9574e4d.jpg?s=16" width="16" />',
|
44
|
-
gravatar_tag(obj, :size => 16, :alt => "Gravatar")
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|