diff options
Diffstat (limited to 'spec/helpers/avatars_helper_spec.rb')
-rw-r--r-- | spec/helpers/avatars_helper_spec.rb | 192 |
1 files changed, 96 insertions, 96 deletions
diff --git a/spec/helpers/avatars_helper_spec.rb b/spec/helpers/avatars_helper_spec.rb index aa0442ab847..122ee9dc476 100644 --- a/spec/helpers/avatars_helper_spec.rb +++ b/spec/helpers/avatars_helper_spec.rb @@ -1,87 +1,87 @@ -require 'rails_helper' +require "rails_helper" describe AvatarsHelper do include UploadHelpers let(:user) { create(:user) } - describe '#project_icon & #group_icon' do - shared_examples 'resource with a default avatar' do |source_type| - it 'returns a default avatar div' do + describe "#project_icon & #group_icon" do + shared_examples "resource with a default avatar" do |source_type| + it "returns a default avatar div" do expect(public_send("#{source_type}_icon", *helper_args)) .to match(%r{<div class="identicon bg\d+">F</div>}) end end - shared_examples 'resource with a custom avatar' do |source_type| - it 'returns a custom avatar image' do + shared_examples "resource with a custom avatar" do |source_type| + it "returns a custom avatar image" do expect(public_send("#{source_type}_icon", *helper_args)) .to eq "<img src=\"#{resource.avatar.url}\" alt=\"Banana sample\" />" end end - context 'when providing a project' do - it_behaves_like 'resource with a default avatar', 'project' do - let(:resource) { create(:project, name: 'foo') } + context "when providing a project" do + it_behaves_like "resource with a default avatar", "project" do + let(:resource) { create(:project, name: "foo") } let(:helper_args) { [resource] } end - it_behaves_like 'resource with a custom avatar', 'project' do + it_behaves_like "resource with a custom avatar", "project" do let(:resource) { create(:project, :public, avatar: File.open(uploaded_image_temp_path)) } let(:helper_args) { [resource] } end end - context 'when providing a group' do - it_behaves_like 'resource with a default avatar', 'group' do - let(:resource) { create(:group, name: 'foo') } + context "when providing a group" do + it_behaves_like "resource with a default avatar", "group" do + let(:resource) { create(:group, name: "foo") } let(:helper_args) { [resource] } end - it_behaves_like 'resource with a custom avatar', 'group' do + it_behaves_like "resource with a custom avatar", "group" do let(:resource) { create(:group, avatar: File.open(uploaded_image_temp_path)) } let(:helper_args) { [resource] } end end end - describe '#avatar_icon_for' do - let!(:user) { create(:user, avatar: File.open(uploaded_image_temp_path), email: 'bar@example.com') } - let(:email) { 'foo@example.com' } + describe "#avatar_icon_for" do + let!(:user) { create(:user, avatar: File.open(uploaded_image_temp_path), email: "bar@example.com") } + let(:email) { "foo@example.com" } let!(:another_user) { create(:user, avatar: File.open(uploaded_image_temp_path), email: email) } - it 'prefers the user to retrieve the avatar_url' do + it "prefers the user to retrieve the avatar_url" do expect(helper.avatar_icon_for(user, email).to_s) .to eq(user.avatar.url) end - it 'falls back to email lookup if no user given' do + it "falls back to email lookup if no user given" do expect(helper.avatar_icon_for(nil, email).to_s) .to eq(another_user.avatar.url) end end - describe '#avatar_icon_for_email' do + describe "#avatar_icon_for_email" do let(:user) { create(:user, avatar: File.open(uploaded_image_temp_path)) } - context 'using an email' do - context 'when there is a matching user' do - it 'returns a relative URL for the avatar' do + context "using an email" do + context "when there is a matching user" do + it "returns a relative URL for the avatar" do expect(helper.avatar_icon_for_email(user.email).to_s) .to eq(user.avatar.url) end end - context 'when no user exists for the email' do - it 'calls gravatar_icon' do - expect(helper).to receive(:gravatar_icon).with('foo@example.com', 20, 2) + context "when no user exists for the email" do + it "calls gravatar_icon" do + expect(helper).to receive(:gravatar_icon).with("foo@example.com", 20, 2) - helper.avatar_icon_for_email('foo@example.com', 20, 2) + helper.avatar_icon_for_email("foo@example.com", 20, 2) end end - context 'without an email passed' do - it 'calls gravatar_icon' do + context "without an email passed" do + it "calls gravatar_icon" do expect(helper).to receive(:gravatar_icon).with(nil, 20, 2) helper.avatar_icon_for_email(nil, 20, 2) @@ -90,18 +90,18 @@ describe AvatarsHelper do end end - describe '#avatar_icon_for_user' do + describe "#avatar_icon_for_user" do let(:user) { create(:user, avatar: File.open(uploaded_image_temp_path)) } - context 'with a user object passed' do - it 'returns a relative URL for the avatar' do + context "with a user object passed" do + it "returns a relative URL for the avatar" do expect(helper.avatar_icon_for_user(user).to_s) .to eq(user.avatar.url) end end - context 'without a user object passed' do - it 'calls gravatar_icon' do + context "without a user object passed" do + it "calls gravatar_icon" do expect(helper).to receive(:gravatar_icon).with(nil, 20, 2) helper.avatar_icon_for_user(nil, 20, 2) @@ -109,71 +109,71 @@ describe AvatarsHelper do end end - describe '#gravatar_icon' do - let(:user_email) { 'user@email.com' } + describe "#gravatar_icon" do + let(:user_email) { "user@email.com" } - context 'with Gravatar disabled' do + context "with Gravatar disabled" do before do stub_application_setting(gravatar_enabled?: false) end - it 'returns a generic avatar' do - expect(helper.gravatar_icon(user_email)).to match_asset_path('no_avatar.png') + it "returns a generic avatar" do + expect(helper.gravatar_icon(user_email)).to match_asset_path("no_avatar.png") end end - context 'with Gravatar enabled' do + context "with Gravatar enabled" do before do stub_application_setting(gravatar_enabled?: true) end - it 'returns a generic avatar when email is blank' do - expect(helper.gravatar_icon('')).to match_asset_path('no_avatar.png') + it "returns a generic avatar when email is blank" do + expect(helper.gravatar_icon("")).to match_asset_path("no_avatar.png") end - it 'returns a valid Gravatar URL' do + it "returns a valid Gravatar URL" do stub_config_setting(https: false) expect(helper.gravatar_icon(user_email)) - .to match('https://www.gravatar.com/avatar/b58c6f14d292556214bd64909bcdb118') + .to match("https://www.gravatar.com/avatar/b58c6f14d292556214bd64909bcdb118") end - it 'uses HTTPs when configured' do + it "uses HTTPs when configured" do stub_config_setting(https: true) expect(helper.gravatar_icon(user_email)) - .to match('https://secure.gravatar.com') + .to match("https://secure.gravatar.com") end - it 'returns custom gravatar path when gravatar_url is set' do - stub_gravatar_setting(plain_url: 'http://example.local/?s=%{size}&hash=%{hash}') + it "returns custom gravatar path when gravatar_url is set" do + stub_gravatar_setting(plain_url: "http://example.local/?s=%{size}&hash=%{hash}") expect(gravatar_icon(user_email, 20)) - .to eq('http://example.local/?s=40&hash=b58c6f14d292556214bd64909bcdb118') + .to eq("http://example.local/?s=40&hash=b58c6f14d292556214bd64909bcdb118") end - it 'accepts a custom size argument' do - expect(helper.gravatar_icon(user_email, 64)).to include '?s=128' + it "accepts a custom size argument" do + expect(helper.gravatar_icon(user_email, 64)).to include "?s=128" end - it 'defaults size to 40@2x when given an invalid size' do - expect(helper.gravatar_icon(user_email, nil)).to include '?s=80' + it "defaults size to 40@2x when given an invalid size" do + expect(helper.gravatar_icon(user_email, nil)).to include "?s=80" end - it 'accepts a scaling factor' do - expect(helper.gravatar_icon(user_email, 40, 3)).to include '?s=120' + it "accepts a scaling factor" do + expect(helper.gravatar_icon(user_email, 40, 3)).to include "?s=120" end - it 'ignores case and surrounding whitespace' do - normal = helper.gravatar_icon('foo@example.com') - upcase = helper.gravatar_icon(' FOO@EXAMPLE.COM ') + it "ignores case and surrounding whitespace" do + normal = helper.gravatar_icon("foo@example.com") + upcase = helper.gravatar_icon(" FOO@EXAMPLE.COM ") expect(normal).to eq upcase end end end - describe '#user_avatar' do + describe "#user_avatar" do subject { helper.user_avatar(user: user) } it "links to the user's profile" do @@ -189,101 +189,101 @@ describe AvatarsHelper do end end - describe '#user_avatar_without_link' do - let(:options) { { user: user } } + describe "#user_avatar_without_link" do + let(:options) { {user: user} } subject { helper.user_avatar_without_link(options) } - it 'displays user avatar' do + it "displays user avatar" do is_expected.to eq tag( :img, alt: "#{user.name}'s avatar", src: avatar_icon_for_user(user, 16), - data: { container: 'body' }, - class: 'avatar s16 has-tooltip', + data: {container: "body"}, + class: "avatar s16 has-tooltip", title: user.name ) end - context 'with css_class parameter' do - let(:options) { { user: user, css_class: '.cat-pics' } } + context "with css_class parameter" do + let(:options) { {user: user, css_class: ".cat-pics"} } - it 'uses provided css_class' do + it "uses provided css_class" do is_expected.to eq tag( :img, alt: "#{user.name}'s avatar", src: avatar_icon_for_user(user, 16), - data: { container: 'body' }, + data: {container: "body"}, class: "avatar s16 #{options[:css_class]} has-tooltip", title: user.name ) end end - context 'with size parameter' do - let(:options) { { user: user, size: 99 } } + context "with size parameter" do + let(:options) { {user: user, size: 99} } - it 'uses provided size' do + it "uses provided size" do is_expected.to eq tag( :img, alt: "#{user.name}'s avatar", src: avatar_icon_for_user(user, options[:size]), - data: { container: 'body' }, + data: {container: "body"}, class: "avatar s#{options[:size]} has-tooltip", title: user.name ) end end - context 'with url parameter' do - let(:options) { { user: user, url: '/over/the/rainbow.png' } } + context "with url parameter" do + let(:options) { {user: user, url: "/over/the/rainbow.png"} } - it 'uses provided url' do + it "uses provided url" do is_expected.to eq tag( :img, alt: "#{user.name}'s avatar", src: options[:url], - data: { container: 'body' }, + data: {container: "body"}, class: "avatar s16 has-tooltip", title: user.name ) end end - context 'with lazy parameter' do - let(:options) { { user: user, lazy: true } } + context "with lazy parameter" do + let(:options) { {user: user, lazy: true} } - it 'adds `lazy` class to class list, sets `data-src` with avatar URL and `src` with placeholder image' do + it "adds `lazy` class to class list, sets `data-src` with avatar URL and `src` with placeholder image" do is_expected.to eq tag( :img, alt: "#{user.name}'s avatar", src: LazyImageTagHelper.placeholder_image, - data: { container: 'body', src: avatar_icon_for_user(user, 16) }, + data: {container: "body", src: avatar_icon_for_user(user, 16)}, class: "avatar s16 has-tooltip lazy", title: user.name ) end end - context 'with has_tooltip parameter' do - context 'with has_tooltip set to true' do - let(:options) { { user: user, has_tooltip: true } } + context "with has_tooltip parameter" do + context "with has_tooltip set to true" do + let(:options) { {user: user, has_tooltip: true} } - it 'adds has-tooltip' do + it "adds has-tooltip" do is_expected.to eq tag( :img, alt: "#{user.name}'s avatar", src: avatar_icon_for_user(user, 16), - data: { container: 'body' }, + data: {container: "body"}, class: "avatar s16 has-tooltip", title: user.name ) end end - context 'with has_tooltip set to false' do - let(:options) { { user: user, has_tooltip: false } } + context "with has_tooltip set to false" do + let(:options) { {user: user, has_tooltip: false} } - it 'does not add has-tooltip or data container' do + it "does not add has-tooltip or data container" do is_expected.to eq tag( :img, alt: "#{user.name}'s avatar", @@ -295,30 +295,30 @@ describe AvatarsHelper do end end - context 'with user_name parameter' do - let(:options) { { user_name: 'Tinky Winky', user_email: 'no@f.un' } } + context "with user_name parameter" do + let(:options) { {user_name: "Tinky Winky", user_email: "no@f.un"} } - context 'with user parameter' do - let(:options) { { user: user, user_name: 'Tinky Winky' } } + context "with user parameter" do + let(:options) { {user: user, user_name: "Tinky Winky"} } - it 'prefers user parameter' do + it "prefers user parameter" do is_expected.to eq tag( :img, alt: "#{user.name}'s avatar", src: avatar_icon_for_user(user, 16), - data: { container: 'body' }, + data: {container: "body"}, class: "avatar s16 has-tooltip", title: user.name ) end end - it 'uses user_name and user_email parameter if user is not present' do + it "uses user_name and user_email parameter if user is not present" do is_expected.to eq tag( :img, alt: "#{options[:user_name]}'s avatar", src: avatar_icon_for_email(options[:user_email], 16), - data: { container: 'body' }, + data: {container: "body"}, class: "avatar s16 has-tooltip", title: options[:user_name] ) |