Commit b08608b261f8c9c552d8957b6231c7725b9529ac
1 parent
e411f3ba
Exists in
master
and in
4 other branches
Issue 5716 - Allow removal of avatar
Add class and style Add spinach tests Add entry to CHANGELOG Add entry to CHANGELOG
Showing
8 changed files
with
66 additions
and
4 deletions
Show diff stats
CHANGELOG
@@ -6,6 +6,7 @@ v 6.4.0 | @@ -6,6 +6,7 @@ v 6.4.0 | ||
6 | - Minimal password length increased to 8 symbols | 6 | - Minimal password length increased to 8 symbols |
7 | - Side-by-side diff view (Steven Thonus) | 7 | - Side-by-side diff view (Steven Thonus) |
8 | - Internal projects (Jason Hollingsworth) | 8 | - Internal projects (Jason Hollingsworth) |
9 | + - Allow removal of avatar (Drew Blessing) | ||
9 | 10 | ||
10 | v 6.3.0 | 11 | v 6.3.0 |
11 | - API for adding gitlab-ci service | 12 | - API for adding gitlab-ci service |
app/assets/stylesheets/sections/profile.scss
app/views/profiles/show.html.haml
@@ -59,9 +59,14 @@ | @@ -59,9 +59,14 @@ | ||
59 | .clearfix | 59 | .clearfix |
60 | .profile-avatar-form-option | 60 | .profile-avatar-form-option |
61 | %p.light | 61 | %p.light |
62 | - You can upload an avatar here | ||
63 | - %br | ||
64 | - or change it at #{link_to "gravatar.com", "http://gravatar.com"} | 62 | + - if @user.avatar? |
63 | + You can change your avatar here | ||
64 | + %br | ||
65 | + or remove the current avatar to revert to #{link_to "gravatar.com", "http://gravatar.com"} | ||
66 | + - else | ||
67 | + You can upload an avatar here | ||
68 | + %br | ||
69 | + or change it at #{link_to "gravatar.com", "http://gravatar.com"} | ||
65 | %hr | 70 | %hr |
66 | %a.choose-btn.btn.btn-small.js-choose-user-avatar-button | 71 | %a.choose-btn.btn.btn-small.js-choose-user-avatar-button |
67 | %i.icon-paper-clip | 72 | %i.icon-paper-clip |
@@ -70,6 +75,8 @@ | @@ -70,6 +75,8 @@ | ||
70 | %span.file_name.js-avatar-filename File name... | 75 | %span.file_name.js-avatar-filename File name... |
71 | = f.file_field :avatar, class: "js-user-avatar-input hide" | 76 | = f.file_field :avatar, class: "js-user-avatar-input hide" |
72 | %span.help-block The maximum file size allowed is 100KB. | 77 | %span.help-block The maximum file size allowed is 100KB. |
78 | + - if @user.avatar? | ||
79 | + = link_to 'Remove avatar', profile_avatar_path, confirm: "Avatar will be removed. Are you sure?", method: :delete, class: "btn btn-remove remove_avatar" | ||
73 | 80 | ||
74 | .form-actions | 81 | .form-actions |
75 | - = f.submit 'Save changes', class: "btn btn-save" | 82 | - = f.submit 'Save changes', class: "btn btn-save" |
83 | + = f.submit 'Save changes', class: "btn btn-save" | ||
76 | \ No newline at end of file | 84 | \ No newline at end of file |
config/routes.rb
features/profile/profile.feature
@@ -26,6 +26,14 @@ Feature: Profile | @@ -26,6 +26,14 @@ Feature: Profile | ||
26 | Given I visit profile page | 26 | Given I visit profile page |
27 | Then I change my avatar | 27 | Then I change my avatar |
28 | And I should see new avatar | 28 | And I should see new avatar |
29 | + And I should see the "Remove avatar" button | ||
30 | + | ||
31 | + Scenario: I remove my avatar | ||
32 | + Given I visit profile page | ||
33 | + And I have an avatar | ||
34 | + When I remove my avatar | ||
35 | + Then I should see my gravatar | ||
36 | + And I should not see the "Remove avatar" button | ||
29 | 37 | ||
30 | Scenario: My password is expired | 38 | Scenario: My password is expired |
31 | Given my password is expired | 39 | Given my password is expired |
features/steps/profile/profile.rb
@@ -31,6 +31,29 @@ class Profile < Spinach::FeatureSteps | @@ -31,6 +31,29 @@ class Profile < Spinach::FeatureSteps | ||
31 | @user.avatar.url.should == "/uploads/user/avatar/#{ @user.id }/gitlab_logo.png" | 31 | @user.avatar.url.should == "/uploads/user/avatar/#{ @user.id }/gitlab_logo.png" |
32 | end | 32 | end |
33 | 33 | ||
34 | + step 'I should see the "Remove avatar" button' do | ||
35 | + page.should have_link("Remove avatar") | ||
36 | + end | ||
37 | + | ||
38 | + step 'I have an avatar' do | ||
39 | + attach_file(:user_avatar, File.join(Rails.root, 'public', 'gitlab_logo.png')) | ||
40 | + click_button "Save changes" | ||
41 | + @user.reload | ||
42 | + end | ||
43 | + | ||
44 | + step 'I remove my avatar' do | ||
45 | + click_link "Remove avatar" | ||
46 | + @user.reload | ||
47 | + end | ||
48 | + | ||
49 | + step 'I should see my gravatar' do | ||
50 | + @user.avatar?.should be_false | ||
51 | + end | ||
52 | + | ||
53 | + step 'I should not see the "Remove avatar" button' do | ||
54 | + page.should_not have_link("Remove avatar") | ||
55 | + end | ||
56 | + | ||
34 | step 'I try change my password w/o old one' do | 57 | step 'I try change my password w/o old one' do |
35 | within '.update-password' do | 58 | within '.update-password' do |
36 | fill_in "user_password", with: "22233344" | 59 | fill_in "user_password", with: "22233344" |
spec/routing/routing_spec.rb
@@ -185,6 +185,13 @@ describe Profiles::KeysController, "routing" do | @@ -185,6 +185,13 @@ describe Profiles::KeysController, "routing" do | ||
185 | end | 185 | end |
186 | end | 186 | end |
187 | 187 | ||
188 | +# profile_avatar DELETE /profile/avatar(.:format) profiles/avatars#destroy | ||
189 | +describe Profiles::AvatarsController, "routing" do | ||
190 | + it "to #destroy" do | ||
191 | + delete("/profile/avatar").should route_to('profiles/avatars#destroy') | ||
192 | + end | ||
193 | +end | ||
194 | + | ||
188 | # dashboard GET /dashboard(.:format) dashboard#show | 195 | # dashboard GET /dashboard(.:format) dashboard#show |
189 | # dashboard_issues GET /dashboard/issues(.:format) dashboard#issues | 196 | # dashboard_issues GET /dashboard/issues(.:format) dashboard#issues |
190 | # dashboard_merge_requests GET /dashboard/merge_requests(.:format) dashboard#merge_requests | 197 | # dashboard_merge_requests GET /dashboard/merge_requests(.:format) dashboard#merge_requests |