Commit f4edf6a1336efe73788b7beb0538df22ce496bb1
1 parent
32fdbb23
Exists in
master
and in
29 other branches
ActionItem42: implementing controller to manage membership of the profile in other profiles
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1381 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
5 changed files
with
90 additions
and
0 deletions
Show diff stats
@@ -0,0 +1,15 @@ | @@ -0,0 +1,15 @@ | ||
1 | +class MembershipsController < MyProfileController | ||
2 | + | ||
3 | + def index | ||
4 | + @memberships = profile.memberships | ||
5 | + end | ||
6 | + | ||
7 | + def join | ||
8 | + @to_join = Profile.find(params[:id]) | ||
9 | + if request.post? && params[:confirmation] | ||
10 | + @to_join.add_member(profile) | ||
11 | + redirect_to @to_join.url | ||
12 | + end | ||
13 | + end | ||
14 | + | ||
15 | +end |
@@ -0,0 +1,19 @@ | @@ -0,0 +1,19 @@ | ||
1 | +<h1><%= _("%s's groups") % profile.name %></h1> | ||
2 | + | ||
3 | +<p> | ||
4 | +<%= _('%s is a member of the following groups:') % profile.name %> | ||
5 | +</p> | ||
6 | + | ||
7 | + | ||
8 | +<table> | ||
9 | + <tr> | ||
10 | + <th><%= _('Name') %></th> | ||
11 | + <th><%= _('Type') %></th> | ||
12 | + </tr> | ||
13 | +<% for membership in @memberships %> | ||
14 | + <tr> | ||
15 | + <td><%= link_to membership.name, membership.url %></td> | ||
16 | + <td><%= _(membership.class.name) %></td> | ||
17 | + </tr> | ||
18 | +<% end %> | ||
19 | +</table> |
@@ -0,0 +1,11 @@ | @@ -0,0 +1,11 @@ | ||
1 | +<h1><%= _('Joining %s') % @to_join.name %></h1> | ||
2 | + | ||
3 | +<p> | ||
4 | +<%= _('Are you sure you want to join %s?') % @to_join.name %> | ||
5 | +</p> | ||
6 | + | ||
7 | +<% form_tag do %> | ||
8 | + <%= hidden_field_tag(:confirmation, 1) %> | ||
9 | + <%= submit_button(:ok, _("Yes, I want to join.") % @to_join.name) %> | ||
10 | + <%= button(:cancel, _("No, I don't want."), :action => 'index') %> | ||
11 | +<% end %> |
@@ -0,0 +1,43 @@ | @@ -0,0 +1,43 @@ | ||
1 | +require File.dirname(__FILE__) + '/../test_helper' | ||
2 | +require 'memberships_controller' | ||
3 | + | ||
4 | +# Re-raise errors caught by the controller. | ||
5 | +class MembershipsController; def rescue_action(e) raise e end; end | ||
6 | + | ||
7 | +class MembershipsControllerTest < Test::Unit::TestCase | ||
8 | + def setup | ||
9 | + @controller = MembershipsController.new | ||
10 | + @request = ActionController::TestRequest.new | ||
11 | + @response = ActionController::TestResponse.new | ||
12 | + | ||
13 | + @profile = create_user('testuser').person | ||
14 | + end | ||
15 | + attr_reader :profile | ||
16 | + | ||
17 | + should 'list current memberships' do | ||
18 | + get :index, :profile => profile.identifier | ||
19 | + | ||
20 | + assert_kind_of Array, assigns(:memberships) | ||
21 | + end | ||
22 | + | ||
23 | + should 'present confirmation before joining a profile' do | ||
24 | + community = Community.create!(:name => 'my test community') | ||
25 | + get :join, :profile => profile.identifier, :id => community.id | ||
26 | + | ||
27 | + assert_response :success | ||
28 | + assert_template 'join' | ||
29 | + end | ||
30 | + | ||
31 | + should 'actually join profile' do | ||
32 | + community = Community.create!(:name => 'my test community') | ||
33 | + post :join, :profile => profile.identifier, :id => community.id, :confirmation => '1' | ||
34 | + | ||
35 | + assert_response :redirect | ||
36 | + assert_redirected_to community.url | ||
37 | + | ||
38 | + profile.reload | ||
39 | + assert profile.memberships.include?(community), 'profile should be actually added to the community' | ||
40 | + end | ||
41 | + | ||
42 | + | ||
43 | +end |