Commit ee4b142a2dc4f2a5bbe90101a0e1f126bf898987

Authored by André Guedes
Committed by Tallys Martins
1 parent 8af1ea81

AI3036 Code Refactoring

Modified conditional to be more logical on User model.
Renamed moderation task to a more intuitive name.
Added unit test for moderate_user_registration task.

Signed-off-by: André Bernardes <andrebsguedes@gmail.com>
Signed-off-by: Tallys Martins <tallysmartins@gmail.com>
app/models/create_user.rb
@@ -1,59 +0,0 @@ @@ -1,59 +0,0 @@
1 -class CreateUser < Task  
2 -  
3 - settings_items :user_id, :type => String  
4 - settings_items :name, :type => String  
5 - settings_items :author_name, :type => String  
6 - settings_items :email, :type => String  
7 -  
8 - after_create :schedule_spam_checking  
9 -  
10 - alias :environment :target  
11 - alias :environment= :target=  
12 -  
13 - def schedule_spam_checking  
14 - self.delay.check_for_spam  
15 - end  
16 -  
17 - include Noosfero::Plugin::HotSpot  
18 -  
19 - def sender  
20 - "#{name} (#{email})"  
21 - end  
22 -  
23 - def perform  
24 - user=environment.users.find_by_id(user_id)  
25 - user.activate  
26 - end  
27 -  
28 - def title  
29 - _("New user")  
30 - end  
31 -  
32 - def subject  
33 - name  
34 - end  
35 -  
36 - def information  
37 - { :message => _('%{sender} wants to register.'),  
38 - :variables => {:sender => sender} }  
39 - end  
40 -  
41 - def icon  
42 - result = {:type => :defined_image, :src => '/images/icons-app/person-minor.png', :name => name}  
43 - end  
44 -  
45 - def target_notification_description  
46 - _('%{sender} tried to register.') %  
47 - {:sender => sender}  
48 - end  
49 -  
50 - def target_notification_message  
51 - target_notification_description + "\n\n" +  
52 - _('You need to login on %{system} in order to approve or reject this user.') % { :environment => self.environment }  
53 - end  
54 -  
55 - def target_notification_message  
56 - _("User \"%{user}\" just requested to register. You have to approve or reject it through the \"Pending Validations\" section in your control panel.\n") % { :user => self.name }  
57 - end  
58 -  
59 -end  
60 \ No newline at end of file 0 \ No newline at end of file
app/models/moderate_user_registration.rb 0 → 100644
@@ -0,0 +1,59 @@ @@ -0,0 +1,59 @@
  1 +class ModerateUserRegistration < Task
  2 +
  3 + settings_items :user_id, :type => String
  4 + settings_items :name, :type => String
  5 + settings_items :author_name, :type => String
  6 + settings_items :email, :type => String
  7 +
  8 + after_create :schedule_spam_checking
  9 +
  10 + alias :environment :target
  11 + alias :environment= :target=
  12 +
  13 + def schedule_spam_checking
  14 + self.delay.check_for_spam
  15 + end
  16 +
  17 + include Noosfero::Plugin::HotSpot
  18 +
  19 + def sender
  20 + "#{name} (#{email})"
  21 + end
  22 +
  23 + def perform
  24 + user=environment.users.find_by_id(user_id)
  25 + user.activate
  26 + end
  27 +
  28 + def title
  29 + _("New user")
  30 + end
  31 +
  32 + def subject
  33 + name
  34 + end
  35 +
  36 + def information
  37 + { :message => _('%{sender} wants to register.'),
  38 + :variables => {:sender => sender} }
  39 + end
  40 +
  41 + def icon
  42 + result = {:type => :defined_image, :src => '/images/icons-app/person-minor.png', :name => name}
  43 + end
  44 +
  45 + def target_notification_description
  46 + _('%{sender} tried to register.') %
  47 + {:sender => sender}
  48 + end
  49 +
  50 + def target_notification_message
  51 + target_notification_description + "\n\n" +
  52 + _('You need to login on %{system} in order to approve or reject this user.') % { :environment => self.environment }
  53 + end
  54 +
  55 + def target_notification_message
  56 + _("User \"%{user}\" just requested to register. You have to approve or reject it through the \"Pending Validations\" section in your control panel.\n") % { :user => self.name }
  57 + end
  58 +
  59 +end
0 \ No newline at end of file 60 \ No newline at end of file
app/models/user.rb
@@ -48,10 +48,10 @@ class User &lt; ActiveRecord::Base @@ -48,10 +48,10 @@ class User &lt; ActiveRecord::Base
48 user.person = p 48 user.person = p
49 end 49 end
50 if user.environment.enabled?('skip_new_user_email_confirmation') 50 if user.environment.enabled?('skip_new_user_email_confirmation')
51 - unless user.environment.enabled?('admin_must_approve_new_users')  
52 - user.activate  
53 - else 51 + if user.environment.enabled?('admin_must_approve_new_users')
54 create_moderate_task 52 create_moderate_task
  53 + else
  54 + user.activate
55 end 55 end
56 end 56 end
57 end 57 end
@@ -142,7 +142,7 @@ class User &lt; ActiveRecord::Base @@ -142,7 +142,7 @@ class User &lt; ActiveRecord::Base
142 end 142 end
143 143
144 def create_moderate_task 144 def create_moderate_task
145 - @task = CreateUser.new 145 + @task = ModerateUserRegistration.new
146 @task.user_id = self.id 146 @task.user_id = self.id
147 @task.name = self.name 147 @task.name = self.name
148 @task.email = self.email 148 @task.email = self.email
test/unit/moderate_user_registration_test.rb 0 → 100644
@@ -0,0 +1,22 @@ @@ -0,0 +1,22 @@
  1 +# encoding: UTF-8
  2 +require File.dirname(__FILE__) + '/../test_helper'
  3 +
  4 +class ModerateUserRegistrationTest < ActiveSupport::TestCase
  5 + fixtures :users, :environments
  6 +
  7 + def test_should_on_perform_activate_user
  8 + user = User.new(:login => 'lalala', :email => 'lalala@example.com', :password => 'test', :password_confirmation => 'test')
  9 + user.save!
  10 + environment = Environment.default
  11 + t= ModerateUserRegistration.new
  12 + t.user_id = user.id
  13 + t.name = user.name
  14 + t.author_name = user.name
  15 + t.email = user.email
  16 + t.target= environment
  17 + t.save!
  18 + assert !user.activated?
  19 + t.perform
  20 + assert environment.users.find_by_id(user.id).activated?
  21 + end
  22 +end