Commit b29e7d7853f1835dbce26bb60747e5343bc5d609

Authored by Victor Costa
1 parent 37e45606

Add method to resend activation code

Showing 2 changed files with 28 additions and 0 deletions   Show diff stats
app/models/user.rb
... ... @@ -423,6 +423,12 @@ class User < ActiveRecord::Base
423 423 @is_password_required = false
424 424 end
425 425  
  426 + def resend_activation_code
  427 + return if self.activated?
  428 + self.make_activation_code
  429 + self.deliver_activation_code
  430 + end
  431 +
426 432 protected
427 433  
428 434 def normalize_email
... ...
test/unit/user_test.rb
... ... @@ -756,6 +756,28 @@ class UserTest < ActiveSupport::TestCase
756 756 assert_equal 'quire', user.person.name
757 757 end
758 758  
  759 + should 'deliver e-mail with activation code when resend was requested and user was not activated' do
  760 + user = new_user :email => 'pending@activation.com'
  761 + activation_code = user.activation_code
  762 + Delayed::Job.destroy_all
  763 + assert_difference 'ActionMailer::Base.deliveries.size', 1 do
  764 + user.resend_activation_code
  765 + process_delayed_job_queue
  766 + end
  767 + assert_not_equal activation_code, user.activation_code
  768 + assert_equal 'pending@activation.com', ActionMailer::Base.deliveries.last['to'].to_s
  769 + end
  770 +
  771 + should 'not deliver e-mail with activation code when resend was requested and user was activated' do
  772 + user = new_user :email => 'pending@activation.com'
  773 + user.activate
  774 + Delayed::Job.destroy_all
  775 + assert_no_difference 'ActionMailer::Base.deliveries.size' do
  776 + user.resend_activation_code
  777 + process_delayed_job_queue
  778 + end
  779 + end
  780 +
759 781 protected
760 782 def new_user(options = {})
761 783 user = User.new({ :login => 'quire', :email => 'quire@example.com', :password => 'quire', :password_confirmation => 'quire' }.merge(options))
... ...