Skip to content

Commit

Permalink
don't save default avatars to the database
Browse files Browse the repository at this point in the history
  • Loading branch information
SuperTux88 authored and denschub committed Jun 2, 2015
1 parent a7fa3ea commit 03dbb75
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 51 deletions.
41 changes: 14 additions & 27 deletions app/models/profile.rb
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ def diaspora_handle
(self.person) ? self.person.diaspora_handle : self[:diaspora_handle]
end

def image_url(size = :thumb_large)
def image_url(size=:thumb_large)
result = if size == :thumb_medium && self[:image_url_medium]
self[:image_url_medium]
elsif size == :thumb_small && self[:image_url_small]
Expand All @@ -77,14 +77,14 @@ def image_url(size = :thumb_large)
self[:image_url]
end

unless result
ActionController::Base.helpers.image_path('user/default.png')
else
if result
if AppConfig.privacy.camo.proxy_remote_pod_images?
Diaspora::Camo.image_url(result)
else
result
end
else
ActionController::Base.helpers.image_path("user/default.png")
end
end

Expand All @@ -100,31 +100,16 @@ def from_omniauth_hash(omniauth_user_hash)
self.attributes.merge(update_hash){|key, old, new| old.blank? ? new : old}
end

def image_url= url
return image_url if url == ''
if url.nil? || url.match(/^https?:\/\//)
super(url)
else
super(absolutify_local_url(url))
end
def image_url=(url)
super(build_image_url(url))
end

def image_url_small= url
return image_url if url == ''
if url.nil? || url.match(/^https?:\/\//)
super(url)
else
super(absolutify_local_url(url))
end
def image_url_small=(url)
super(build_image_url(url))
end

def image_url_medium= url
return image_url if url == ''
if url.nil? || url.match(/^https?:\/\//)
super(url)
else
super(absolutify_local_url(url))
end
def image_url_medium=(url)
super(build_image_url(url))
end

def date= params
Expand Down Expand Up @@ -201,7 +186,9 @@ def clearable_fields
self.attributes.keys - ["id", "created_at", "updated_at", "person_id"]
end

def absolutify_local_url url
"#{AppConfig.pod_uri.to_s.chomp("/")}#{url}"
def build_image_url(url)
return nil if url.blank? || url.match(/user\/default/)
return url if url.match(/^https?:\/\//)
"#{AppConfig.pod_uri.to_s.chomp('/')}#{url}"
end
end
63 changes: 39 additions & 24 deletions spec/models/profile_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@

it 'sets full name to first name' do
@from_omniauth = {'name' => 'bob jones', 'description' => 'this is my bio', 'location' => 'sf', 'image' => 'http://cats.com/gif.gif'}

profile = Profile.new
expect(profile.from_omniauth_hash(@from_omniauth)['first_name']).to eq('bob jones')
end
Expand Down Expand Up @@ -117,32 +117,47 @@
profile = FactoryGirl.build(:profile, :location => "a"*255)
expect(profile).to be_valid
end

it "cannot be 256 characters" do
profile = FactoryGirl.build(:profile, :location => "a"*256)
expect(profile).not_to be_valid
end
end

describe '#image_url=' do
before do
@profile = FactoryGirl.build(:profile)
@profile.image_url = "http://tom.joindiaspora.com/images/user/tom.jpg"
@pod_url = AppConfig.pod_uri.to_s.chomp("/")
end

it 'ignores an empty string' do
expect {@profile.image_url = ""}.not_to change(@profile, :image_url)
end

it 'makes relative urls absolute' do
@profile.image_url = "/relative/url"
expect(@profile.image_url).to eq("#{@pod_url}/relative/url")
end

it "doesn't change absolute urls" do
@profile.image_url = "http://not/a/relative/url"
expect(@profile.image_url).to eq("http://not/a/relative/url")
describe "image_url setters" do
%i(image_url image_url_small image_url_medium).each do |method|
describe "##{method}=" do
before do
@profile = FactoryGirl.build(:profile)
@profile.public_send("#{method}=", "http://tom.joindiaspora.com/images/user/tom.jpg")
@pod_url = AppConfig.pod_uri.to_s.chomp("/")
end

it "saves nil when setting nil" do
@profile.public_send("#{method}=", nil)
expect(@profile[method]).to be_nil
end

it "saves nil when setting an empty string" do
@profile.public_send("#{method}=", "")
expect(@profile[method]).to be_nil
end

it "makes relative urls absolute" do
@profile.public_send("#{method}=", "/relative/url")
expect(@profile.public_send(method)).to eq("#{@pod_url}/relative/url")
end

it "doesn't change absolute urls" do
@profile.public_send("#{method}=", "http://not/a/relative/url")
expect(@profile.public_send(method)).to eq("http://not/a/relative/url")
end

it "saves the default-url as nil" do
@profile.public_send("#{method}=", "/assets/user/default.png")
expect(@profile[method]).to be_nil
end
end
end
end

Expand All @@ -157,7 +172,7 @@
expect(new_profile.tag_string).to include('#rafi')
end
end

describe 'serialization' do
let(:person) {FactoryGirl.build(:person,:diaspora_handle => "foobar" )}

Expand All @@ -173,7 +188,7 @@
xml = person.profile.to_diaspora_xml
expect(xml).to include "#one"
end

it 'includes location' do
person.profile.location = 'Dark Side, Moon'
person.profile.save
Expand Down Expand Up @@ -339,7 +354,7 @@
describe "#clearable_fields" do
it 'returns the current profile fields' do
profile = FactoryGirl.build :profile
expect(profile.send(:clearable_fields).sort).to eq(
expect(profile.send(:clearable_fields).sort).to eq(
["diaspora_handle",
"first_name",
"last_name",
Expand Down

0 comments on commit 03dbb75

Please sign in to comment.