gravtastic 2.0.0 → 2.1.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.textile CHANGED
@@ -35,7 +35,7 @@ Now, you can access your object's gravatar with the @gravatar_url@ method:
35
35
 
36
36
  Note that it defaults to a PG rating. You can specify extra options with a hash:
37
37
 
38
- current_user.gravatar_url(:rating => 'R18', :size => 512)
38
+ current_user.gravatar_url(:rating => 'R', :size => 512)
39
39
  => "http://gravatar.com/e9e719b44653a9300e1567f09f6b2e9e.png?r=R18&s=512"
40
40
 
41
41
  current_user.gravatar_url(:secure => true)
@@ -43,7 +43,7 @@ Note that it defaults to a PG rating. You can specify extra options with a hash:
43
43
 
44
44
  However, to DRY things up you can specify defaults in the class declaration.
45
45
 
46
- is_gravtastic :with => :author_email, :rating => 'R18', :size => 20
46
+ is_gravtastic :with => :author_email, :rating => 'R', :size => 20
47
47
 
48
48
  Nice, now all the calls to gravatar_url will have the defaults you have specified. Any options that you pass when you use @gravatar_url@ will over-ride these class-defaults.
49
49
 
@@ -69,6 +69,8 @@ h2. Thanks
69
69
 
70
70
  * "Xavier Shay":http://rhnh.net and others for "Enki":http://enkiblog.com (the reason this was written)
71
71
  * "Matthew Moore":http://www.matthewpaulmoore.com/ for helpful suggestions and for submitting it to the official list of Gravatar implementations.
72
+ * "Vincent Charles":http://vincentcharles.com/ For an updated README.
73
+
72
74
 
73
75
 
74
76
  h2. License
data/Rakefile CHANGED
@@ -1,72 +1,76 @@
1
- require 'rubygems'
2
- require 'rake/gempackagetask'
3
- require 'rake/rdoctask'
4
- require 'rubygems/specification'
5
- require 'spec/rake/spectask'
6
- require 'date'
1
+ require 'mg'
7
2
 
8
- GEM = "gravtastic"
9
- GEM_VERSION = "2.0.0"
10
- AUTHOR = "Chris Lloyd"
11
- EMAIL = "christopher.lloyd@gmail.com"
12
- HOMEPAGE = "http://github.com/chrislloyd/gravtastic"
13
- SUMMARY = "Easily add Gravatars to your Ruby objects."
3
+ MG.new('gravtastic.gemspec')
14
4
 
15
- spec = Gem::Specification.new do |s|
16
- s.name = GEM
17
- s.version = GEM_VERSION
18
- s.platform = Gem::Platform::RUBY
19
- s.rubyforge_project = GEM
20
- s.has_rdoc = true
21
- s.extra_rdoc_files = ['README.textile', 'LICENSE']
22
- s.summary = SUMMARY
23
- s.description = s.summary
24
- s.author = AUTHOR
25
- s.email = EMAIL
26
- s.homepage = HOMEPAGE
27
-
28
- # Uncomment this to add a dependency
29
- # s.add_dependency "foo"
30
-
31
- s.require_path = 'lib'
32
- s.files = %w(LICENSE README.textile Rakefile) + Dir.glob("{lib,spec}/**/*")
33
- end
34
-
35
- desc "Run Specs"
36
- Rake::GemPackageTask.new(spec) do |pkg|
37
- pkg.gem_spec = spec
38
- end
39
-
40
- desc "Generate Documentation"
41
- Rake::RDocTask.new do |rdoc|
42
- rdoc.rdoc_dir = 'doc'
43
- rdoc.title = 'Gravtastic'
44
- rdoc.options << '--line-numbers' << '--inline-source' << '--main' << 'Gravtastic'
45
- rdoc.rdoc_files.include(FileList[ 'lib/**/*.rb', 'README.textile', 'LICENSE'])
46
- end
47
-
48
- task :default => :spec
49
- task :specs => :spec
50
-
51
- desc "Run all examples"
52
- Spec::Rake::SpecTask.new('spec') do |t|
53
- t.spec_opts = ['--options','spec/spec.opts']
54
- t.spec_files = FileList['spec/**/*.rb']
55
- t.rcov = true
56
- end
57
-
58
- desc "install the gem locally"
59
- task :install => [:package] do
60
- sh %{sudo gem install pkg/#{GEM}-#{GEM_VERSION}}
61
- end
62
-
63
- desc "create a gemspec file"
64
- task :make_spec do
65
- File.open("#{GEM}.gemspec", "w") do |file|
66
- file.puts spec.to_ruby
67
- end
68
- end
69
-
70
- task :bugs do
71
- sh %{ditz html ; open html/index.html}
72
- end
5
+ # require 'rubygems'
6
+ # require 'rake/gempackagetask'
7
+ # require 'rake/rdoctask'
8
+ # require 'rubygems/specification'
9
+ # require 'spec/rake/spectask'
10
+ # require 'date'
11
+ #
12
+ # GEM = "gravtastic"
13
+ # GEM_VERSION = "2.0.0"
14
+ # AUTHOR = "Chris Lloyd"
15
+ # EMAIL = "christopher.lloyd@gmail.com"
16
+ # HOMEPAGE = "http://github.com/chrislloyd/gravtastic"
17
+ # SUMMARY = "Easily add Gravatars to your Ruby objects."
18
+ #
19
+ # spec = Gem::Specification.new do |s|
20
+ # s.name = GEM
21
+ # s.version = GEM_VERSION
22
+ # s.platform = Gem::Platform::RUBY
23
+ # s.rubyforge_project = GEM
24
+ # s.has_rdoc = true
25
+ # s.extra_rdoc_files = ['README.textile', 'LICENSE']
26
+ # s.summary = SUMMARY
27
+ # s.description = s.summary
28
+ # s.author = AUTHOR
29
+ # s.email = EMAIL
30
+ # s.homepage = HOMEPAGE
31
+ #
32
+ # # Uncomment this to add a dependency
33
+ # # s.add_dependency "foo"
34
+ #
35
+ # s.require_path = 'lib'
36
+ # s.files = %w(LICENSE README.textile Rakefile) + Dir.glob("{lib,spec}/**/*")
37
+ # end
38
+ #
39
+ # desc "Run Specs"
40
+ # Rake::GemPackageTask.new(spec) do |pkg|
41
+ # pkg.gem_spec = spec
42
+ # end
43
+ #
44
+ # desc "Generate Documentation"
45
+ # Rake::RDocTask.new do |rdoc|
46
+ # rdoc.rdoc_dir = 'doc'
47
+ # rdoc.title = 'Gravtastic'
48
+ # rdoc.options << '--line-numbers' << '--inline-source' << '--main' << 'Gravtastic'
49
+ # rdoc.rdoc_files.include(FileList[ 'lib/**/*.rb', 'README.textile', 'LICENSE'])
50
+ # end
51
+ #
52
+ # task :default => :spec
53
+ # task :specs => :spec
54
+ #
55
+ # desc "Run all examples"
56
+ # Spec::Rake::SpecTask.new('spec') do |t|
57
+ # t.spec_opts = ['--options','spec/spec.opts']
58
+ # t.spec_files = FileList['spec/**/*.rb']
59
+ # # t.rcov = true
60
+ # end
61
+ #
62
+ # desc "install the gem locally"
63
+ # task :install => [:package] do
64
+ # sh %{sudo gem install pkg/#{GEM}-#{GEM_VERSION}}
65
+ # end
66
+ #
67
+ # desc "create a gemspec file"
68
+ # task :make_spec do
69
+ # File.open("#{GEM}.gemspec", "w") do |file|
70
+ # file.puts spec.to_ruby
71
+ # end
72
+ # end
73
+ #
74
+ # task :bugs do
75
+ # sh %{ditz html ; open html/index.html}
76
+ # end
data/lib/gravtastic.rb CHANGED
@@ -3,180 +3,79 @@ $:.unshift(File.dirname(__FILE__)) unless
3
3
 
4
4
  require 'digest/md5'
5
5
  require 'cgi'
6
+ require 'uri'
6
7
 
7
- # = Gravtastic - Easily add Gravatars to your Ruby objects.
8
- #
9
- # Copyright (C) 2008 mailto:christopher.lloyd@gmail.com
10
- #
11
- # == Example
12
- #
13
- # Somewhere in your application you need to <tt>require 'gravtastic'</tt>. In Rails >= 2.1 you can forego this and just add a dependency gem dependency for Gravtastic.
14
- #
15
- # config.gem 'gravtastic'
16
- #
17
- # If you are using Merb & DataMapper you can add do the same by adding the following to your init.rb file:
18
- #
19
- # dependency 'gravtastic'
20
- #
21
- # Make sure you add this after either the <tt>use_orm :datamapper</tt> line or after a DataMapper extension. The next step is to give your model a Gravatar:
22
- #
23
- # class User
24
- # is_gravtastic
25
- # end
26
- #
27
- # If you are using a standard Ruby class you have to add the line <tt>include Gravtastic::Resource</tt> before <tt>is_gravtastic</tt>.
28
- #
29
- # This defaults to looking for the gravatar ID on the <tt>email</tt> method. So, if your <tt>User</tt> has an <tt>email</tt> then it will send that to Gravatar to get their picture. You can change the default gravatar source like this:
30
- #
31
- # is_gravtastic :with => :author_email
32
- #
33
- # Now, you can access your object's gravatar with the <tt>gravatar_url</tt> method:
34
- #
35
- # current_user.gravatar_url
36
- # => "http://gravatar.com/e9e719b44653a9300e1567f09f6b2e9e.png?r=PG"
37
- #
38
- # Note that it defaults to a PG rating. You can specify extra options with a hash:
39
- #
40
- # current_user.gravatar_url(:rating => 'R18', :size => 512)
41
- # => "http://gravatar.com/e9e719b44653a9300e1567f09f6b2e9e.png?r=R18&s=512"
42
- #
43
- # current_user.gravatar_url(:secure => true)
44
- # => "https://secure.gravatar.com/e9e719b44653a9300e1567f09f6b2e9e.png?r=PG"
45
- #
46
- # However, to DRY things up you can specify defaults in the class declaration.
47
- #
48
- # is_gravtastic :with => :author_email, :rating => 'R18', :size => 20
49
- #
50
- # Nice, now all the calls to gravatar_url will have the defaults you have specified. Any options that you pass when you use <tt>gravatar_url</tt> will over-ride these class-defaults.
51
- #
52
8
  module Gravtastic
53
- module Resource
54
9
 
55
- def self.included(base) # :nodoc:
56
- base.extend(ClassMethods)
10
+ def self.included(base)
11
+ base.extend(SingletonMethods)
12
+ end
13
+
14
+ module SingletonMethods
15
+
16
+ def is_gravtastic(source = :email, options={})
17
+ extend ClassMethods
18
+ include InstanceMethods
19
+
20
+ @gravatar_defaults = {
21
+ :rating => 'PG',
22
+ :secure => false,
23
+ :filetype => :png
24
+ }.merge(options)
25
+ @gravatar_source = source
26
+ end
27
+
28
+ alias :has_gravatar :is_gravtastic
29
+
30
+ end
31
+
32
+ module ClassMethods
33
+
34
+ # attr_reader :gravatar_source, :gravatar_defaults
35
+
36
+ def gravatar_source
37
+ @gravatar_source
57
38
  end
58
-
59
- module ClassMethods
60
-
61
- #
62
- # Sets the gravatar_source. Basically starts this whole shindig.
63
- #
64
- # Examples:
65
- #
66
- # is_gravtastic
67
- #
68
- # is_gravtastic :with => :author_email
69
- #
70
- # is_gravtastic :with => :author_email, :rating => 'R18', :secure => true
71
- #
72
- def is_gravtastic(options={})
73
- @gravatar_source = options[:with] || :email
74
-
75
- options.delete_if {|key,_| ![:size, :rating, :default, :secure].include?(key) }
76
- @gravatar_defaults = {:rating => 'PG', :secure => false}.merge(options)
77
- end
78
-
79
- alias :has_gravatar :is_gravtastic
80
-
81
- #
82
- # Returns a symbol of the instance method where the Gravatar is pulled from.
83
- #
84
- # For example, if your users email is returned by the method <tt>#gobagaldy_gook</tt> then it
85
- # will return the symbol <tt>:gobagaldy_gook</tt>.
86
- #
87
- def gravatar_source
88
- @gravatar_source
89
- end
90
-
91
- #
92
- # Returns a hash of all the default gravtastic options.
93
- #
94
- def gravatar_defaults
95
- @gravatar_defaults
96
- end
97
-
98
- #
99
- # Returns <tt>true</tt> if the gravatar_source is set. <tt>false</tt> if not. Easy!
100
- #
101
- def has_gravatar?
102
- !!gravatar_source
103
- end
104
39
 
40
+ def gravatar_defaults
41
+ @gravatar_defaults
105
42
  end
106
43
 
107
- #
108
- # The raw MD5 hash used by Gravatar, generated from the ClassMethods#gravatar_source.
109
- #
44
+ end
45
+
46
+ module InstanceMethods
47
+
110
48
  def gravatar_id
111
- if self.class.gravatar_source && value = send(self.class.gravatar_source)
112
- @gravatar_id = Digest::MD5.hexdigest(value.to_s.downcase)
113
- end
49
+ Digest::MD5.hexdigest(send(self.class.gravatar_source).to_s.downcase)
114
50
  end
115
51
 
116
- #
117
- # Returns a string with the URL for the instance's Gravatar.
118
- #
119
- # It defaults to <tt>:rating => 'PG'</tt> and <tt>:secure => false</tt>
120
- #
121
- # Examples:
122
- #
123
- # current_user.gravatar_url
124
- # => "http://gravatar.com/e9e719b44653a9300e1567f09f6b2e9e.png?r=PG"
125
- #
126
- # current_user.gravatar_url(:rating => 'R18', :size => 512, :default => 'http://example.com/images/example.jpg')
127
- # => "http://gravatar.com/e9e719b44653a9300e1567f09f6b2e9e.png?d=http%3A%2F%2Fexample.com%2Fimages%2Fexample.jpg&r=R18&s=512"
128
- #
129
- # current_user.gravatar_url(:secure => true)
130
- # => "https://secure.gravatar.com/e9e719b44653a9300e1567f09f6b2e9e.png?r=PG"
131
- #
132
- def gravatar_url(options={})
52
+ def gravatar_url(options={})
133
53
  options = self.class.gravatar_defaults.merge(options)
134
-
135
- @gravatar_url = gravatar_hostname(options[:secure]) + gravatar_filename + parse_url_options_hash(options)
54
+ gravatar_hostname(options.delete(:secure)) +
55
+ gravatar_filename(options.delete(:filetype)) +
56
+ url_params_from_hash(options)
136
57
  end
137
58
 
138
- private
139
-
140
- #
141
- # Parses a hash options for the image parameters. Returns a CGI escaped string.
142
- #
143
- def parse_url_options_hash(options)
144
- options.delete_if { |key,_| ![:size, :rating, :default].include?(key) }
145
-
146
- unless options.empty?
147
- '?' + options.map do |pair|
148
- pair[0] = pair[0].to_s[0,1] # Get the first character of the option
149
- pair.map{|item| item = CGI::escape(item.to_s) }.join('=') # Join key & value together
150
- end.sort.join('&') # Join options together
151
- else
152
- ''
153
- end
59
+ private
60
+
61
+ def url_params_from_hash(hash)
62
+ '?' + hash.map do |pair|
63
+ pair[0] = pair[0].to_s[0,1]
64
+ pair.map{|item| item = CGI::escape(item.to_s) }.join('=')
65
+ end.sort.join('&')
154
66
  end
155
-
156
- #
157
- # Returns the Gravatar.com hostname
158
- #
67
+
159
68
  def gravatar_hostname(secure)
160
69
  'http' + (secure ? 's://secure.' : '://') + 'gravatar.com/avatar/'
161
70
  end
162
71
 
163
- #
164
- # Returns the filename of the gravatar image.
165
- #
166
- def gravatar_filename
167
- if gravatar_id
168
- gravatar_id + '.png'
169
- else
170
- ''
171
- end
72
+ def gravatar_filename(filetype)
73
+ "#{gravatar_id}.#{filetype}"
172
74
  end
173
75
 
174
76
  end
175
- end
176
77
 
177
- ActiveRecord::Base.send(:include, Gravtastic::Resource) if defined?(ActiveRecord) # :nodoc:
78
+ end
178
79
 
179
- if defined?(DataMapper) # :nodoc:
180
- DataMapper::Resource.append_inclusions Gravtastic::Resource
181
- DataMapper::Model.append_extensions Gravtastic::Resource::ClassMethods
182
- end
80
+ ActiveRecord::Base.send(:include, Gravtastic) if defined?(ActiveRecord) # :nodoc:
81
+ DataMapper::Resource.append_inclusions(Gravtastic) if defined?(DataMapper) # :nodoc:
@@ -2,37 +2,37 @@ require File.dirname(__FILE__) + '/spec_helper'
2
2
  require 'rubygems'
3
3
 
4
4
  require 'activerecord'
5
- require 'dm-core'
5
+ # require 'dm-core'
6
+ require 'gravtastic'
6
7
 
7
- reload_gravtastic!
8
8
 
9
- class User
10
- include DataMapper::Resource
11
- is_gravtastic
12
- end
9
+ # class User
10
+ # include DataMapper::Resource
11
+ # is_gravtastic
12
+ # end
13
13
 
14
14
  describe ActiveRecord::Base do
15
-
16
- it "includes Gravtastic::Resource" do
17
- ActiveRecord::Base.included_modules.should include(Gravtastic::Resource)
15
+
16
+ it "includes Gravtastic" do
17
+ ActiveRecord::Base.included_modules.should include(Gravtastic)
18
18
  end
19
-
19
+
20
20
  it "responds to .is_gravtastic" do
21
21
  ActiveRecord::Base.should respond_to(:is_gravtastic)
22
22
  end
23
-
24
- end
25
23
 
26
- describe DataMapper::Resource do
27
-
28
- it "includes Gravtastic::Resource" do
29
- User.included_modules.should include(Gravtastic::Resource)
30
- end
31
-
32
- it "responds to .is_gravtastic" do
33
- User.should respond_to(:is_gravtastic)
34
- end
35
-
36
24
  end
37
25
 
26
+ # describe DataMapper::Resource do
27
+ #
28
+ # it "includes Gravtastic::Resource" do
29
+ # User.included_modules.should include(Gravtastic)
30
+ # end
31
+ #
32
+ # it "responds to .is_gravtastic" do
33
+ # User.should respond_to(:is_gravtastic)
34
+ # end
35
+ #
36
+ # end
37
+
38
38
 
@@ -1,218 +1,75 @@
1
1
  require File.dirname(__FILE__) + '/spec_helper'
2
+ require 'gravtastic'
2
3
 
3
- describe Gravtastic::Resource do
4
+ describe Gravtastic do
4
5
 
5
6
  before(:each) do
6
- @user = mock('User')
7
- @user.class.send(:include, Gravtastic::Resource)
8
- @klass = @user.class
9
- end
10
-
11
- describe ".gravatar_source" do
12
-
13
- it "is nil if unset" do
14
- @klass.gravatar_source.should be_nil
15
- end
16
-
17
- it "returns the value of @gravatar_source" do
18
- @klass.instance_variable_set('@gravatar_source', :foo)
19
- @klass.gravatar_source.should == :foo
20
- end
21
-
22
- end
23
-
24
- describe ".gravatar_defaults" do
25
-
26
- it "it nil if unset" do
27
- @klass.gravatar_defaults.should be_nil
28
- end
29
-
30
- it "returns the value of @gravatar_defaults" do
31
- @klass.instance_variable_set('@gravatar_defaults', :foo)
32
- @klass.gravatar_source.should == :foo
7
+ @g = Class.new do |c|
8
+ c.send(:include, Gravtastic)
9
+ c.is_gravtastic
33
10
  end
34
-
35
11
  end
36
-
12
+
37
13
  describe ".is_gravtastic" do
38
-
39
- it "sets .gravatar_source to :email by default" do
40
- @klass.is_gravtastic
41
- @klass.gravatar_source.should == :email
42
- end
43
-
44
- it "sets .gravatar_defaults to { :rating => 'PG', :secure => false } by default" do
45
- @klass.is_gravtastic
46
- @klass.gravatar_defaults.should == { :rating => 'PG', :secure => false }
47
- end
48
-
49
- it "sets .gravatar_source to :email by default, even when defaults are supplied" do
50
- @klass.is_gravtastic :secure => true
51
- @klass.gravatar_source.should == :email
52
- end
53
-
54
- it "keeps either :rating or :secure if only the other is passed as a default" do
55
- @klass.is_gravtastic :secure => true
56
- @klass.gravatar_defaults.should == { :rating => 'PG', :secure => true }
57
- end
58
-
59
- it "changes .gravatar_source" do
60
- lambda {
61
- @klass.is_gravtastic :with => :other_method
62
- }.should change(@klass, :gravatar_source)
63
- end
64
-
65
- it "changes .gravatar_defaults" do
66
- lambda {
67
- @klass.is_gravtastic :rating => 'R18'
68
- }.should change(@klass, :gravatar_defaults)
69
- end
70
-
71
- it "sets .gravatar_source to the value of :on" do
72
- @klass.is_gravtastic :with => :other_method
73
- @klass.gravatar_source.should == :other_method
74
- end
75
-
76
- it "sets .gravatar_defaults to the value of :defaults" do
77
- @klass.is_gravtastic :rating => 'R18'
78
- @klass.gravatar_defaults.should == { :rating => 'R18', :secure => false }
14
+
15
+ it "includes the methods" do
16
+ @g.included_modules.should include(Gravtastic::InstanceMethods)
79
17
  end
80
-
18
+
81
19
  end
82
20
 
83
- describe ".has_gravatar?" do
84
-
85
- it "is true when .gravatar_source is not nil" do
86
- @user.class.stub!(:gravatar_source).and_return(:email)
87
- @user.class.should have_gravatar
21
+ describe 'default' do
22
+
23
+ it "options are {:rating => 'PG', :secure => false, :filetype => :png}" do
24
+ @g.gravatar_defaults.should == {:rating => 'PG', :secure => false, :filetype => :png}
88
25
  end
89
-
90
- it "is false when .gravatar_soruce is not is nil" do
91
- @user.class.stub!(:gravatar_source).and_return(nil)
92
- @user.class.should_not have_gravatar
26
+
27
+ it "source is :email" do
28
+ @g.gravatar_source.should == :email
93
29
  end
94
-
30
+
95
31
  end
96
32
 
97
33
  describe "#gravatar_id" do
98
34
 
99
- before(:each) do
100
- @user.stub!(:email).and_return('joe@example.com')
101
- @user.stub!(:name).and_return('Joe Bloggs')
102
- @user.class.stub!(:gravatar_source).and_return(:email)
103
- end
104
-
105
- it "is not nil when .gravatar_source is not nil" do
106
- @user.gravatar_id.should_not be_nil
107
- end
108
-
109
- it "is nil when .gravatar_source is nil" do
110
- @user.class.stub!(:gravatar_source).and_return(nil)
111
- @user.gravatar_id.should be_nil
35
+ it "downcases email" do
36
+ a = @g.new
37
+ stub(a).email{ 'USER@EXAMPLE.COM' }
38
+ b = @g.new
39
+ stub(b).email{ 'user@example.com' }
40
+ a.gravatar_id.should == b.gravatar_id
112
41
  end
113
42
 
114
- it "changes when .gravatar_source is changed" do
115
- lambda {
116
- @user.class.stub!(:gravatar_source).and_return(:name)
117
- }.should change(@user, :gravatar_id)
118
- end
119
-
120
- it "is a MD5 hash" do
121
- @user.gravatar_id.should == 'f5b8fb60c6116331da07c65b96a8a1d1'
122
- end
123
-
124
- it "downcases any imput" do
125
- @user.stub!(:email).and_return('JOE@EXAMPLE.COM')
126
- @user.gravatar_id.should == 'f5b8fb60c6116331da07c65b96a8a1d1'
127
- end
128
-
129
- it "is nil when email is not a string" do
130
- @user.stub!(:email).and_return(nil)
131
- @user.gravatar_id.should == nil
132
- end
133
-
134
43
  end
135
-
44
+
136
45
  describe "#gravatar_url" do
137
-
46
+
138
47
  before(:each) do
139
- @user.stub!(:email).and_return('joe@example.com')
140
- @user.stub!(:name).and_return('Joe Bloggs')
141
- @user.class.stub!(:gravatar_source).and_return(:email)
142
- @user.class.stub!(:gravatar_defaults).and_return({:rating => 'PG'})
143
- end
144
-
145
- it "is not nil when .gravatar_source is not nil" do
146
- @user.gravatar_url.should_not be_nil
147
- end
148
-
149
- it "returns a default Gravatar url when .gravatar_source is nil" do
150
- @user.class.stub!(:gravatar_source).and_return(nil)
151
- @user.gravatar_url.should =~ /http:\/\/gravatar.com\/avatar/
152
- end
153
-
154
- it "always specifies a png resource type" do
155
- @user.gravatar_url.should match(/.png/)
156
- end
157
-
158
- it "returns a valid gravatar URL" do
159
- @user.gravatar_url.should == valid_gravatar_url + '?r=PG'
160
- end
161
-
162
- it "returns a valid SSL gravatar URL" do
163
- @user.gravatar_url(:secure => true).should == 'https://secure.gravatar.com/avatar/f5b8fb60c6116331da07c65b96a8a1d1.png?r=PG'
164
- end
165
-
166
- it "returns a url without the 'www'" do
167
- @user.gravatar_url.should_not match(/www/)
168
- end
169
-
170
- it "returns a valid gravatar URL even when invalid option is passed" do
171
- @user.gravatar_url(:foo => :bar).should == valid_gravatar_url + '?r=PG'
172
- end
173
-
174
- it "parses a size" do
175
- @user.gravatar_url(:size => 512).should == valid_gravatar_url + '?r=PG&s=512'
48
+ @user = @g.new
49
+ stub(@user).email{ 'user@example.com' }
176
50
  end
177
-
178
- it "parses a rating" do
179
- @user.gravatar_url(:rating => 'MA').should == valid_gravatar_url + '?r=MA'
180
- end
181
-
182
- it "returns a valid gravatar URL when the rating option is unescaped" do
183
- @user.gravatar_url(:rating => 'Unescaped String').should == valid_gravatar_url + '?r=Unescaped+String'
184
- end
185
-
186
- it "parses a default image type" do
187
- @user.gravatar_url(:default => :identicon).should == valid_gravatar_url + '?d=identicon&r=PG'
188
- end
189
-
190
- it "parses a default image URL" do
191
- @user.gravatar_url(:default => 'http://example.com/images/example.jpg').should == valid_gravatar_url + '?d=http%3A%2F%2Fexample.com%2Fimages%2Fexample.jpg&r=PG'
192
- end
193
-
194
- it "parses multiple options" do
195
- @user.gravatar_url(:size => 20, :rating => 'R18', :default => :monsterid).should == valid_gravatar_url + '?d=monsterid&r=R18&s=20'
51
+
52
+ it "makes a pretty URL" do
53
+ @user.gravatar_url.should == 'http://gravatar.com/avatar/b58996c504c5638798eb6b511e6f49af.png?r=PG'
196
54
  end
197
-
198
- it "defaults to a 'PG' rating" do
199
- @user.gravatar_url(:rating => 'PG').should == @user.gravatar_url
55
+
56
+ it "makes a secure URL" do
57
+ @user.gravatar_url(:secure => true).should == 'https://secure.gravatar.com/avatar/b58996c504c5638798eb6b511e6f49af.png?r=PG'
200
58
  end
201
-
202
- it "uses the defaults from .gravatar_defaults" do
203
- @user.class.stub!(:gravatar_defaults).and_return({ :size => 20, :rating => 'R18'})
204
- @user.gravatar_url.should == valid_gravatar_url + '?r=R18&s=20'
59
+
60
+ it "makes a jpeggy URL" do
61
+ @user.gravatar_url(:filetype => :jpg).should == 'http://gravatar.com/avatar/b58996c504c5638798eb6b511e6f49af.jpg?r=PG'
205
62
  end
206
-
207
- it "returns a default Gravatar url when #gravatar_id is nil" do
208
- @user.stub!(:email).and_return(nil)
209
- @user.gravatar_url.should =~ /http:\/\/gravatar.com\/avatar/
63
+
64
+ it "makes a saucy URL" do
65
+ @user.gravatar_url(:rating => 'R').should == 'http://gravatar.com/avatar/b58996c504c5638798eb6b511e6f49af.png?r=R'
210
66
  end
211
-
212
- def valid_gravatar_url # :nodoc:
213
- 'http://gravatar.com/avatar/f5b8fb60c6116331da07c65b96a8a1d1.png'
67
+
68
+ it "makes a URL from the defaults" do
69
+ stub(@user.class).gravatar_defaults{ {:size => 20, :rating => 'R18', :secure => true, :filetype => :png} }
70
+ @user.gravatar_url.should == 'https://secure.gravatar.com/avatar/b58996c504c5638798eb6b511e6f49af.png?r=R18&s=20'
214
71
  end
215
-
72
+
216
73
  end
217
-
74
+
218
75
  end
data/spec/spec_helper.rb CHANGED
@@ -6,4 +6,10 @@ def reload_gravtastic!
6
6
  require File.join(File.dirname(__FILE__),'../lib/gravtastic')
7
7
  end
8
8
 
9
- require 'gravtastic'
9
+ Spec::Runner.configure do |config|
10
+ config.mock_with :rr
11
+ end
12
+
13
+ class Class
14
+ def to_sym; name.to_sym end
15
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gravtastic
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Lloyd
@@ -33,6 +33,8 @@ files:
33
33
  - spec/spec_helper.rb
34
34
  has_rdoc: true
35
35
  homepage: http://github.com/chrislloyd/gravtastic
36
+ licenses: []
37
+
36
38
  post_install_message:
37
39
  rdoc_options: []
38
40
 
@@ -53,7 +55,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
53
55
  requirements: []
54
56
 
55
57
  rubyforge_project: gravtastic
56
- rubygems_version: 1.2.0
58
+ rubygems_version: 1.3.2
57
59
  signing_key:
58
60
  specification_version: 2
59
61
  summary: Easily add Gravatars to your Ruby objects.