robincurry-dl-fughley 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 0
3
3
  :minor: 1
4
- :patch: 1
4
+ :patch: 2
data/lib/dl_fughley.rb CHANGED
@@ -44,9 +44,9 @@ module DL
44
44
  options = {
45
45
  :allow => [],
46
46
  :email_field => :email,
47
- :reply_to => :sender
47
+ :reply_to => :sender
48
48
  }.merge!(people.extract_options!)
49
-
49
+
50
50
  people.flatten!
51
51
 
52
52
  if (options[:allow].nil? || options[:allow].empty?) ||
@@ -58,7 +58,7 @@ module DL
58
58
  email.reply_to = email.from if options[:reply_to] == :sender
59
59
  email.reply_to = to if options[:reply_to] == :list
60
60
  email.from = options[:from] if options[:from]
61
-
61
+
62
62
  case options[:subject_prefix]
63
63
  when :list_name
64
64
  email.subject = "[#{list.downcase}] #{email.subject}" unless email.subject =~ /\[#{list}\]/i
@@ -67,15 +67,18 @@ module DL
67
67
  else
68
68
  email.subject = "[#{options[:subject_prefix]}] #{email.subject}" unless email.subject =~ /\[#{options[:subject_prefix]}\]/i
69
69
  end
70
-
71
70
 
72
- ActionMailer::Base.deliver(email)
71
+ # yield to block if given, otherwise, go ahead and send the email using ActionMailer.
72
+ if block_given?
73
+ yield person, email
74
+ else
75
+ ActionMailer::Base.deliver(email)
76
+ end
73
77
  end
74
78
  end
75
79
  end
76
80
  end
77
- end
78
-
81
+ end
79
82
  end
80
83
 
81
84
  ActiveRecord::Base.send(:include, DL::Fughley)
@@ -446,6 +446,48 @@ class DlFughleyTest < ActiveSupport::TestCase
446
446
  end
447
447
  end
448
448
 
449
+ context "distribute" do
450
+ setup do
451
+ Factory(:person)
452
+ Person.is_dl(:all)
453
+
454
+ # Reset deliveries during setup. Otherwise they will accumulate after each test.
455
+ ActionMailer::Base.deliveries = []
456
+
457
+ @email = to_email(
458
+ :from => 'user@example.com',
459
+ :to => 'all@example.com',
460
+ :subject => 're: [all-my-peeps] test to the whole group',
461
+ :body => 'Hello everybody!')
462
+ end
463
+
464
+ context "default" do
465
+ setup do
466
+ Person.distribute(@email)
467
+ end
468
+
469
+ should "send email via ActionMailer to each member of dl" do
470
+ assert_deliveries Person.count
471
+ end
472
+ end
473
+
474
+ context "with block" do
475
+ setup do
476
+ @count = 0
477
+ Person.distribute(@email) {|person, email| @count = @count+1 }
478
+ end
479
+
480
+ should "yield each person and email to the block" do
481
+ assert @count == Person.count
482
+ end
483
+
484
+ should "not send via ActionMailer (unless called by block)" do
485
+ assert_deliveries 0
486
+ end
487
+ end
488
+ end
489
+
490
+
449
491
 
450
492
  private
451
493
  def to_email(values)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: robincurry-dl-fughley
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - robincurry
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-04-21 00:00:00 -07:00
12
+ date: 2009-04-24 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15