diff options
author | Drew Blessing <drew.blessing@buckle.com> | 2013-12-02 12:03:07 -0600 |
---|---|---|
committer | Drew Blessing <drew.blessing@buckle.com> | 2013-12-02 16:20:34 -0600 |
commit | b08608b261f8c9c552d8957b6231c7725b9529ac (patch) | |
tree | 566e2ba56ae1ed23305ea5e897f859e8e782a29b | |
parent | e411f3bab2c20ba22b838bb025fa33e980470d20 (diff) | |
download | gitlab-ce-b08608b261f8c9c552d8957b6231c7725b9529ac.tar.gz |
Issue 5716 - Allow removal of avatar
Add class and style
Add spinach tests
Add entry to CHANGELOG
Add entry to CHANGELOG
-rw-r--r-- | CHANGELOG | 1 | ||||
-rw-r--r-- | app/assets/stylesheets/sections/profile.scss | 4 | ||||
-rw-r--r-- | app/controllers/profiles/avatars_controller.rb | 11 | ||||
-rw-r--r-- | app/views/profiles/show.html.haml | 15 | ||||
-rw-r--r-- | config/routes.rb | 1 | ||||
-rw-r--r-- | features/profile/profile.feature | 8 | ||||
-rw-r--r-- | features/steps/profile/profile.rb | 23 | ||||
-rw-r--r-- | spec/routing/routing_spec.rb | 7 |
8 files changed, 66 insertions, 4 deletions
diff --git a/CHANGELOG b/CHANGELOG index 08a36e308bb..884bb253284 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -6,6 +6,7 @@ v 6.4.0 - Minimal password length increased to 8 symbols - Side-by-side diff view (Steven Thonus) - Internal projects (Jason Hollingsworth) + - Allow removal of avatar (Drew Blessing) v 6.3.0 - API for adding gitlab-ci service diff --git a/app/assets/stylesheets/sections/profile.scss b/app/assets/stylesheets/sections/profile.scss index 21f4ed0577d..068e8994cb1 100644 --- a/app/assets/stylesheets/sections/profile.scss +++ b/app/assets/stylesheets/sections/profile.scss @@ -42,3 +42,7 @@ margin-right: 12px; } +.remove_avatar { + margin-top: 10px; +} + diff --git a/app/controllers/profiles/avatars_controller.rb b/app/controllers/profiles/avatars_controller.rb new file mode 100644 index 00000000000..e90eaafd440 --- /dev/null +++ b/app/controllers/profiles/avatars_controller.rb @@ -0,0 +1,11 @@ +class Profiles::AvatarsController < ApplicationController + layout "profile" + + def destroy + @user = current_user + @user.remove_avatar! + + @user.save + redirect_to profile_path + end +end diff --git a/app/views/profiles/show.html.haml b/app/views/profiles/show.html.haml index c22e00d3d77..69fc7b62c5d 100644 --- a/app/views/profiles/show.html.haml +++ b/app/views/profiles/show.html.haml @@ -59,9 +59,14 @@ .clearfix .profile-avatar-form-option %p.light - You can upload an avatar here - %br - or change it at #{link_to "gravatar.com", "http://gravatar.com"} + - if @user.avatar? + You can change your avatar here + %br + or remove the current avatar to revert to #{link_to "gravatar.com", "http://gravatar.com"} + - else + You can upload an avatar here + %br + or change it at #{link_to "gravatar.com", "http://gravatar.com"} %hr %a.choose-btn.btn.btn-small.js-choose-user-avatar-button %i.icon-paper-clip @@ -70,6 +75,8 @@ %span.file_name.js-avatar-filename File name... = f.file_field :avatar, class: "js-user-avatar-input hide" %span.help-block The maximum file size allowed is 100KB. + - if @user.avatar? + = link_to 'Remove avatar', profile_avatar_path, confirm: "Avatar will be removed. Are you sure?", method: :delete, class: "btn btn-remove remove_avatar" .form-actions - = f.submit 'Save changes', class: "btn btn-save" + = f.submit 'Save changes', class: "btn btn-save"
\ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index d89fc20c6c9..35143a4268c 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -127,6 +127,7 @@ Gitlab::Application.routes.draw do delete :leave end end + resource :avatar, only: [:destroy] end end diff --git a/features/profile/profile.feature b/features/profile/profile.feature index 6198fd2b306..6b0421a20b3 100644 --- a/features/profile/profile.feature +++ b/features/profile/profile.feature @@ -26,6 +26,14 @@ Feature: Profile Given I visit profile page Then I change my avatar And I should see new avatar + And I should see the "Remove avatar" button + + Scenario: I remove my avatar + Given I visit profile page + And I have an avatar + When I remove my avatar + Then I should see my gravatar + And I should not see the "Remove avatar" button Scenario: My password is expired Given my password is expired diff --git a/features/steps/profile/profile.rb b/features/steps/profile/profile.rb index 9d091e93aa2..3e4a105ec55 100644 --- a/features/steps/profile/profile.rb +++ b/features/steps/profile/profile.rb @@ -31,6 +31,29 @@ class Profile < Spinach::FeatureSteps @user.avatar.url.should == "/uploads/user/avatar/#{ @user.id }/gitlab_logo.png" end + step 'I should see the "Remove avatar" button' do + page.should have_link("Remove avatar") + end + + step 'I have an avatar' do + attach_file(:user_avatar, File.join(Rails.root, 'public', 'gitlab_logo.png')) + click_button "Save changes" + @user.reload + end + + step 'I remove my avatar' do + click_link "Remove avatar" + @user.reload + end + + step 'I should see my gravatar' do + @user.avatar?.should be_false + end + + step 'I should not see the "Remove avatar" button' do + page.should_not have_link("Remove avatar") + end + step 'I try change my password w/o old one' do within '.update-password' do fill_in "user_password", with: "22233344" diff --git a/spec/routing/routing_spec.rb b/spec/routing/routing_spec.rb index 1b1d19d26b1..1af052d8739 100644 --- a/spec/routing/routing_spec.rb +++ b/spec/routing/routing_spec.rb @@ -185,6 +185,13 @@ describe Profiles::KeysController, "routing" do end end +# profile_avatar DELETE /profile/avatar(.:format) profiles/avatars#destroy +describe Profiles::AvatarsController, "routing" do + it "to #destroy" do + delete("/profile/avatar").should route_to('profiles/avatars#destroy') + end +end + # dashboard GET /dashboard(.:format) dashboard#show # dashboard_issues GET /dashboard/issues(.:format) dashboard#issues # dashboard_merge_requests GET /dashboard/merge_requests(.:format) dashboard#merge_requests |