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 | 159 | @task.name = self.name |
160 | 160 | @task.email = self.email |
161 | 161 | @task.target = self.environment |
162 | + @task.requestor = self.person | |
162 | 163 | @task.save |
163 | 164 | end |
164 | 165 | |
... | ... | @@ -301,6 +302,10 @@ class User < ActiveRecord::Base |
301 | 302 | end |
302 | 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 | 309 | def data_hash(gravatar_default = nil) |
305 | 310 | friends_list = {} |
306 | 311 | enterprises = person.enterprises.map { |e| { 'name' => e.short_name, 'identifier' => e.identifier } } | ... | ... |
lib/user_activation_job.rb
test/unit/user_activation_job_test.rb
... | ... | @@ -40,6 +40,18 @@ class UserActivationJobTest < ActiveSupport::TestCase |
40 | 40 | end |
41 | 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 | 55 | protected |
44 | 56 | def new_user(options = {}) |
45 | 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 | 302 | assert !user.email_activation_pending? |
303 | 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 | 316 | should 'be able to use [] operator to find users by login' do |
306 | 317 | user = fast_create(User) |
307 | 318 | assert_equal user, User[user.login] | ... | ... |