From a289c353d2f36a5aed97c27434ff058c6c634960 Mon Sep 17 00:00:00 2001 From: Antonio Terceiro Date: Mon, 31 Aug 2009 16:28:08 -0300 Subject: [PATCH] ActionItem1219: deliver the e-mail after saving the model --- app/models/email_activation.rb | 1 + app/models/user.rb | 11 ----------- test/unit/email_activation_test.rb | 15 +++++++++++++++ 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/app/models/email_activation.rb b/app/models/email_activation.rb index e80ae87..f098717 100644 --- a/app/models/email_activation.rb +++ b/app/models/email_activation.rb @@ -17,6 +17,7 @@ class EmailActivation < Task def perform person.user.enable_email! + User::Mailer.deliver_activation_email_notify(person.user) end def sends_email? diff --git a/app/models/user.rb b/app/models/user.rb index fd39e39..6d75ba9 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -39,17 +39,6 @@ class User < ActiveRecord::Base @person_data || {} end - attr_accessor :had_email_disabled - before_update do |user| - user.had_email_disabled = !User.find(user.id).enable_email - true - end - after_update do |user| - if user.had_email_disabled && user.enable_email && !user.environment.nil? - User::Mailer.deliver_activation_email_notify(user) - end - end - def email_domain self.person.preferred_domain && self.person.preferred_domain.name || self.environment.default_hostname(true) end diff --git a/test/unit/email_activation_test.rb b/test/unit/email_activation_test.rb index c52a792..f8b7127 100644 --- a/test/unit/email_activation_test.rb +++ b/test/unit/email_activation_test.rb @@ -2,6 +2,12 @@ require File.dirname(__FILE__) + '/../test_helper' class EmailActivationTest < Test::Unit::TestCase + def setup + ActionMailer::Base.delivery_method = :test + ActionMailer::Base.perform_deliveries = true + ActionMailer::Base.deliveries = [] + end + should 'require a requestor' do task = EmailActivation.new task.valid? @@ -25,6 +31,15 @@ class EmailActivationTest < Test::Unit::TestCase assert ze.enable_email end + should 'deliver email after enabling mailbox' do + ze = create_user('zezinho', :environment_id => Environment.default.id, :email => 'ze@example.com') + assert !ze.enable_email + task = EmailActivation.create!(:requestor => ze.person, :target => Environment.default) + task.finish + + assert_equal ['zezinho@colivre.net'], ActionMailer::Base.deliveries.first.to + end + should 'create only once pending task by user' do ze = create_user('zezinho', :environment_id => Environment.default.id) task = EmailActivation.new(:requestor => ze.person, :target => Environment.default) -- libgit2 0.21.2