noosfero | 2 new commits pushed to repository

Leandro Nunes gitlab at gitlab.com
Tue Mar 17 23:20:26 BRT 2015


Leandro Nunes pushed to refs/heads/master at <a href="https://gitlab.com/noosfero/noosfero">Noosfero / noosfero</a>

Commits:
<a href="https://gitlab.com/noosfero/noosfero/commit/e8e5c33a860c54923249127da4c1899e9c5de5d4">e8e5c33a</a> by Victor Costa
Do not destroy an user that has a pending ModerateUserRegistration task

- - - - -
<a href="https://gitlab.com/noosfero/noosfero/commit/997ef39a8aa53747eb5c3d297948a3de12ac05fa">997ef39a</a> by Leandro Nunes
Merge branch 'not_destroy_user_with_moderate_task' into 'master'

 Not destroy an user that has a pending ModerateUserRegistration task

See merge request !506

- - - - -


Changes:

=====================================
app/models/user.rb
=====================================
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -159,6 +159,7 @@ class User < ActiveRecord::Base
     @task.name = self.name
     @task.email = self.email
     @task.target = self.environment
+    @task.requestor = self.person
     @task.save
   end
 
@@ -301,6 +302,10 @@ class User < ActiveRecord::Base
     end
   end
 
+  def moderate_registration_pending?
+    return ModerateUserRegistration.exists?(:requestor_id => self.person.id, :target_id => self.environment.id, :status => Task::Status::ACTIVE)
+  end
+
   def data_hash(gravatar_default = nil)
     friends_list = {}
     enterprises = person.enterprises.map { |e| { 'name' => e.short_name, 'identifier' => e.identifier } }

=====================================
lib/user_activation_job.rb
=====================================
--- a/lib/user_activation_job.rb
+++ b/lib/user_activation_job.rb
@@ -1,6 +1,6 @@
 class UserActivationJob < Struct.new(:user_id)
   def perform
     user = User.find(user_id)
-    user.destroy unless user.activated? || user.person.is_template?
+    user.destroy unless user.activated? || user.person.is_template? || user.moderate_registration_pending?
   end
 end

=====================================
test/unit/user_activation_job_test.rb
=====================================
--- a/test/unit/user_activation_job_test.rb
+++ b/test/unit/user_activation_job_test.rb
@@ -40,6 +40,18 @@ class UserActivationJobTest < ActiveSupport::TestCase
     end
   end
 
+  should 'not destroy user if a moderate user registration task exists' do
+    env = Environment.default
+    env.enable('skip_new_user_email_confirmation')
+    env.enable('admin_must_approve_new_users')
+    user = new_user :login => 'test3'
+    job = UserActivationJob.new(user.id)
+    assert_no_difference 'User.count' do
+      job.perform
+      process_delayed_job_queue
+    end
+  end
+
   protected
     def new_user(options = {})
       user = User.new({ :login => 'quire', :email => 'quire at example.com', :password => 'quire', :password_confirmation => 'quire' }.merge(options))

=====================================
test/unit/user_test.rb
=====================================
--- a/test/unit/user_test.rb
+++ b/test/unit/user_test.rb
@@ -302,6 +302,17 @@ class UserTest < ActiveSupport::TestCase
     assert !user.email_activation_pending?
   end
 
+  should 'has moderate registration pending' do
+    user = create_user('cooler')
+    ModerateUserRegistration.create!(:requestor => user.person, :target => Environment.default)
+    assert user.moderate_registration_pending?
+  end
+
+  should 'not has moderate registration pending if not have a pending task' do
+    user = create_user('cooler')
+    assert !user.moderate_registration_pending?
+  end
+
   should 'be able to use [] operator to find users by login' do
     user = fast_create(User)
     assert_equal user, User[user.login]

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listas.softwarelivre.org/pipermail/noosfero-dev/attachments/20150318/2749936b/attachment.html>


More information about the Noosfero-dev mailing list