diff --git a/app/decorators/helpers/avatar_helper.rb b/app/decorators/helpers/avatar_helper.rb index 950c1d7..25cab44 100644 --- a/app/decorators/helpers/avatar_helper.rb +++ b/app/decorators/helpers/avatar_helper.rb @@ -1,16 +1,22 @@ module AvatarHelper def avatar_image_tag - h.image_tag avatar_url, alt: (model.username || model.temporary_username), class: 'avatar' + h.image_tag avatar_url(model), alt: (model.username || model.temporary_username), class: 'avatar' end - private + module GravatarURL + def avatar_url(model) + username = model.username || model.temporary_username + email = model.email || "#{username}+#{model.id}@asciinema.org" + hash = Digest::MD5.hexdigest(email.downcase) + "//gravatar.com/avatar/#{hash}?s=128&d=retro" + end + end - def avatar_url - username = model.username || model.temporary_username - email = model.email || "#{username}+#{model.id}@asciinema.org" - hash = Digest::MD5.hexdigest(email.downcase) - "//gravatar.com/avatar/#{hash}?s=128&d=retro" + module TestAvatarURL + def avatar_url(model) + h.image_path 'favicon.png' + end end end diff --git a/config/environments/development.rb b/config/environments/development.rb index ddf0e90..21566e4 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -35,3 +35,5 @@ Rails.application.configure do # Raises error for missing translations # config.action_view.raise_on_missing_translations = true end + +AvatarHelper.include(AvatarHelper::GravatarURL) diff --git a/config/environments/production.rb b/config/environments/production.rb index 8d3f99a..beebb6b 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -76,3 +76,5 @@ Rails.application.configure do # Do not dump schema after migrations. config.active_record.dump_schema_after_migration = false end + +AvatarHelper.include(AvatarHelper::GravatarURL) diff --git a/config/environments/test.rb b/config/environments/test.rb index 6bbe9c4..2e2cc0e 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -37,3 +37,5 @@ Rails.application.configure do # Raises error for missing translations # config.action_view.raise_on_missing_translations = true end + +AvatarHelper.include(AvatarHelper::TestAvatarURL) diff --git a/spec/decorators/helpers/avatar_helper_spec.rb b/spec/decorators/helpers/avatar_helper_spec.rb index f4fab1a..1ee31a5 100644 --- a/spec/decorators/helpers/avatar_helper_spec.rb +++ b/spec/decorators/helpers/avatar_helper_spec.rb @@ -1,30 +1,23 @@ require 'rails_helper' -describe AvatarHelper do +describe AvatarHelper::GravatarURL do - def expected_img(src) - %(satyr) - end - - let(:decorator) { double('decorator', h: h, model: model). - extend(described_class) } + let(:decorator) { double('decorator').extend(described_class) } let(:model) { double('model', id: 1, username: 'satyr', email: email) } - describe '#avatar_image_tag' do - subject { decorator.avatar_image_tag } + describe '#avatar_url' do + subject { decorator.avatar_url(model) } context "when user has an email" do let(:email) { 'foo@email.com' } - it { should eq(expected_img( - '//gravatar.com/avatar/9dcfeb70fe212ea12562dddd22b0fc92?s=128&d=retro')) } + it { should eq('//gravatar.com/avatar/9dcfeb70fe212ea12562dddd22b0fc92?s=128&d=retro') } end context "when user has no email" do let(:email) { nil } - it { should eq(expected_img( - '//gravatar.com/avatar/40affe80f7becd02ac38d316f7fe7057?s=128&d=retro')) } + it { should eq('//gravatar.com/avatar/40affe80f7becd02ac38d316f7fe7057?s=128&d=retro') } end end