Commit b7a84368cc772ef3c4a11e44ff77f0a043dead67

Authored by AntonioTerceiro
1 parent bff0977b

ActionItem38: being able to remove friends


git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1529 3f533792-8f58-4932-b0fe-aaf55b0a4547
app/controllers/my_profile/friends_controller.rb
@@ -17,4 +17,12 @@ class FriendsController < MyProfileController @@ -17,4 +17,12 @@ class FriendsController < MyProfileController
17 end 17 end
18 end 18 end
19 19
  20 + def remove
  21 + @friend = profile.friends.find(params[:id])
  22 + if request.post? && params[:confirmation]
  23 + profile.remove_friend(@friend)
  24 + redirect_to :action => 'index'
  25 + end
  26 + end
  27 +
20 end 28 end
app/views/friends/index.rhtml
@@ -2,7 +2,11 @@ @@ -2,7 +2,11 @@
2 2
3 <ul class='profile-list'> 3 <ul class='profile-list'>
4 <% @friends.each do |friend| %> 4 <% @friends.each do |friend| %>
5 - <li><%= profile_image_link(friend)%></li> 5 + <li>
  6 + <%= profile_image_link(friend)%>
  7 + <br/>
  8 + <%= link_to '(remove)', :action => 'remove', :id => friend.id %>
  9 + </li>
6 <% end %> 10 <% end %>
7 </ul> 11 </ul>
8 12
app/views/friends/remove.rhtml 0 → 100644
@@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
  1 +<h1><%= _('Removing friend: %s') % @friend.name %></h1>
  2 +
  3 +<p>
  4 +<%= _('Are you sure you want to remove %s from your friends list?') % @friend.name %>
  5 +</p>
  6 +
  7 +<p>
  8 +<em>
  9 +<%= _('Note that %s will still have you as a friend, unless he/she also wants to remove you from his/her friend list.') % @friend.name %>
  10 +</em>
  11 +</p>
  12 +
  13 +<% form_tag do %>
  14 + <%= hidden_field_tag(:confirmation, 1) %>
  15 +
  16 + <%= submit_button(:ok, _("Yes, I want to remove %s from my friend list") % @friend.name) %>
  17 + <%= button(:cancel, _("No, I don't want"), :action => 'index') %>
  18 +<% end %>
test/functional/friends_controller_test.rb
@@ -42,4 +42,22 @@ class FriendsControllerTest &lt; Test::Unit::TestCase @@ -42,4 +42,22 @@ class FriendsControllerTest &lt; Test::Unit::TestCase
42 end 42 end
43 end 43 end
44 44
  45 + should 'confirm removal of friend' do
  46 + profile.add_friend(friend)
  47 +
  48 + get :remove, :id => friend.id
  49 + assert_response :success
  50 + assert_template 'remove'
  51 + ok("must load the friend being removed") { friend == assigns(:friend) }
  52 + end
  53 +
  54 + should 'actually remove friend' do
  55 + profile.add_friend(friend)
  56 +
  57 + assert_difference Friendship, :count, -1 do
  58 + post :remove, :id => friend.id, :confirmation => '1'
  59 + assert_redirected_to :action => 'index'
  60 + end
  61 + end
  62 +
45 end 63 end