gravatarify 1.1.0 → 1.2.0
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/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
|