Commit 9c9f424b347234ee8cb33db7256f29933aa1fc48
1 parent
15262820
Exists in
master
and in
29 other branches
ActionItem12: acceptance of terms of communities implemeted and unit tested
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@421 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
4 changed files
with
31 additions
and
0 deletions
Show diff stats
app/controllers/account_controller.rb
@@ -26,9 +26,17 @@ class AccountController < ApplicationController | @@ -26,9 +26,17 @@ class AccountController < ApplicationController | ||
26 | # action to register an user to the application | 26 | # action to register an user to the application |
27 | def signup | 27 | def signup |
28 | begin | 28 | begin |
29 | + @terms_of_use = virtual_community.terms_of_use | ||
30 | + terms_accepted = params[:user].delete(:terms_accepted) | ||
29 | @user = User.new(params[:user]) | 31 | @user = User.new(params[:user]) |
30 | return unless request.post? | 32 | return unless request.post? |
33 | + if @terms_of_use and !terms_accepted | ||
34 | + flash[:notice] = _("You have to accept the terms of service to signup") | ||
35 | + return | ||
36 | + end | ||
31 | @user.save! | 37 | @user.save! |
38 | + @user.person.virtual_community = virtual_community | ||
39 | + @user.person.save! | ||
32 | self.current_user = @user | 40 | self.current_user = @user |
33 | redirect_back_or_default(:controller => 'account', :action => 'index') | 41 | redirect_back_or_default(:controller => 'account', :action => 'index') |
34 | flash[:notice] = _("Thanks for signing up!") | 42 | flash[:notice] = _("Thanks for signing up!") |
app/models/virtual_community.rb
@@ -20,6 +20,7 @@ class VirtualCommunity < ActiveRecord::Base | @@ -20,6 +20,7 @@ class VirtualCommunity < ActiveRecord::Base | ||
20 | 20 | ||
21 | # One VirtualCommunity can be reached by many domains | 21 | # One VirtualCommunity can be reached by many domains |
22 | has_many :domains, :as => :owner | 22 | has_many :domains, :as => :owner |
23 | + has_many :profiles | ||
23 | 24 | ||
24 | # ################################################# | 25 | # ################################################# |
25 | # Attributes | 26 | # Attributes |
app/views/account/signup.rhtml
@@ -14,5 +14,11 @@ | @@ -14,5 +14,11 @@ | ||
14 | <p><label for="password_confirmation">Confirm Password</label><br/> | 14 | <p><label for="password_confirmation">Confirm Password</label><br/> |
15 | <%= f.password_field :password_confirmation %></p> | 15 | <%= f.password_field :password_confirmation %></p> |
16 | 16 | ||
17 | +<% if @terms_of_use %> | ||
18 | + <p> <%= @terms_of_use %> </p> | ||
19 | + <p> <%= check_box 'user', 'terms_accepted' %> | ||
20 | + <label for="terms_accepted">I accept the terms of use</label> </p> | ||
21 | +<% end %> | ||
22 | + | ||
17 | <p><%= submit_tag 'Sign up' %></p> | 23 | <p><%= submit_tag 'Sign up' %></p> |
18 | <% end -%> | 24 | <% end -%> |
test/functional/account_controller_test.rb
@@ -68,6 +68,22 @@ class AccountControllerTest < Test::Unit::TestCase | @@ -68,6 +68,22 @@ class AccountControllerTest < Test::Unit::TestCase | ||
68 | end | 68 | end |
69 | end | 69 | end |
70 | 70 | ||
71 | + def test_shoud_not_save_without_acceptance_of_terms_of_use_on_signup | ||
72 | + assert_no_difference User, :count do | ||
73 | + VirtualCommunity.default.update_attributes(:terms_of_use => 'some terms ...') | ||
74 | + create_user | ||
75 | + assert_response :success | ||
76 | + end | ||
77 | + end | ||
78 | + | ||
79 | + def test_shoud_save_with_acceptance_of_terms_of_use_on_signup | ||
80 | + assert_difference User, :count do | ||
81 | + VirtualCommunity.default.update_attributes(:terms_of_use => 'some terms ...') | ||
82 | + create_user(:terms_accepted => true) | ||
83 | + assert_response :redirect | ||
84 | + end | ||
85 | + end | ||
86 | + | ||
71 | def test_should_logout | 87 | def test_should_logout |
72 | login_as :johndoe | 88 | login_as :johndoe |
73 | get :logout | 89 | get :logout |