Commit 997ef39a8aa53747eb5c3d297948a3de12ac05fa
Exists in
master
and in
27 other branches
Merge branch 'not_destroy_user_with_moderate_task' into 'master'
Not destroy an user that has a pending ModerateUserRegistration task See merge request !506
Showing
4 changed files
with
29 additions
and
1 deletions
Show diff stats
app/models/user.rb
@@ -159,6 +159,7 @@ class User < ActiveRecord::Base | @@ -159,6 +159,7 @@ class User < ActiveRecord::Base | ||
159 | @task.name = self.name | 159 | @task.name = self.name |
160 | @task.email = self.email | 160 | @task.email = self.email |
161 | @task.target = self.environment | 161 | @task.target = self.environment |
162 | + @task.requestor = self.person | ||
162 | @task.save | 163 | @task.save |
163 | end | 164 | end |
164 | 165 | ||
@@ -301,6 +302,10 @@ class User < ActiveRecord::Base | @@ -301,6 +302,10 @@ class User < ActiveRecord::Base | ||
301 | end | 302 | end |
302 | end | 303 | end |
303 | 304 | ||
305 | + def moderate_registration_pending? | ||
306 | + return ModerateUserRegistration.exists?(:requestor_id => self.person.id, :target_id => self.environment.id, :status => Task::Status::ACTIVE) | ||
307 | + end | ||
308 | + | ||
304 | def data_hash(gravatar_default = nil) | 309 | def data_hash(gravatar_default = nil) |
305 | friends_list = {} | 310 | friends_list = {} |
306 | enterprises = person.enterprises.map { |e| { 'name' => e.short_name, 'identifier' => e.identifier } } | 311 | enterprises = person.enterprises.map { |e| { 'name' => e.short_name, 'identifier' => e.identifier } } |
lib/user_activation_job.rb
1 | class UserActivationJob < Struct.new(:user_id) | 1 | class UserActivationJob < Struct.new(:user_id) |
2 | def perform | 2 | def perform |
3 | user = User.find(user_id) | 3 | user = User.find(user_id) |
4 | - user.destroy unless user.activated? || user.person.is_template? | 4 | + user.destroy unless user.activated? || user.person.is_template? || user.moderate_registration_pending? |
5 | end | 5 | end |
6 | end | 6 | end |
test/unit/user_activation_job_test.rb
@@ -40,6 +40,18 @@ class UserActivationJobTest < ActiveSupport::TestCase | @@ -40,6 +40,18 @@ class UserActivationJobTest < ActiveSupport::TestCase | ||
40 | end | 40 | end |
41 | end | 41 | end |
42 | 42 | ||
43 | + should 'not destroy user if a moderate user registration task exists' do | ||
44 | + env = Environment.default | ||
45 | + env.enable('skip_new_user_email_confirmation') | ||
46 | + env.enable('admin_must_approve_new_users') | ||
47 | + user = new_user :login => 'test3' | ||
48 | + job = UserActivationJob.new(user.id) | ||
49 | + assert_no_difference 'User.count' do | ||
50 | + job.perform | ||
51 | + process_delayed_job_queue | ||
52 | + end | ||
53 | + end | ||
54 | + | ||
43 | protected | 55 | protected |
44 | def new_user(options = {}) | 56 | def new_user(options = {}) |
45 | user = User.new({ :login => 'quire', :email => 'quire@example.com', :password => 'quire', :password_confirmation => 'quire' }.merge(options)) | 57 | user = User.new({ :login => 'quire', :email => 'quire@example.com', :password => 'quire', :password_confirmation => 'quire' }.merge(options)) |
test/unit/user_test.rb
@@ -302,6 +302,17 @@ class UserTest < ActiveSupport::TestCase | @@ -302,6 +302,17 @@ class UserTest < ActiveSupport::TestCase | ||
302 | assert !user.email_activation_pending? | 302 | assert !user.email_activation_pending? |
303 | end | 303 | end |
304 | 304 | ||
305 | + should 'has moderate registration pending' do | ||
306 | + user = create_user('cooler') | ||
307 | + ModerateUserRegistration.create!(:requestor => user.person, :target => Environment.default) | ||
308 | + assert user.moderate_registration_pending? | ||
309 | + end | ||
310 | + | ||
311 | + should 'not has moderate registration pending if not have a pending task' do | ||
312 | + user = create_user('cooler') | ||
313 | + assert !user.moderate_registration_pending? | ||
314 | + end | ||
315 | + | ||
305 | should 'be able to use [] operator to find users by login' do | 316 | should 'be able to use [] operator to find users by login' do |
306 | user = fast_create(User) | 317 | user = fast_create(User) |
307 | assert_equal user, User[user.login] | 318 | assert_equal user, User[user.login] |