iron_mailer 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  require 'iron_cache'
2
2
  class IronMailer::SendEmail
3
- attr_reader :iron_mq_client, :iron_cache_client, :queue, :cache, :debug
3
+ attr_reader :iron_mq_client, :iron_cache_client, :queue, :cache, :debug, :delivery_method, :delivery_method_settings
4
4
 
5
5
  def initialize(options={})
6
6
  @iron_mq_client = IronMQ::Client.new(options['iron_mq'])
@@ -9,14 +9,33 @@ class IronMailer::SendEmail
9
9
 
10
10
  @cache = @iron_cache_client.cache(options['iron_cache']['cache_name'])
11
11
  @debug = options['debug']
12
- Mail.defaults do
12
+
13
13
  if options['delivery_method'].is_a?(Hash)
14
14
  delivery_method_hash = options['delivery_method']
15
- delivery_method delivery_method_hash.keys.first.to_sym, delivery_method_hash.values.first
15
+ params = delivery_method_hash.values.first.clone
16
+ params.keys.each do |key|
17
+ params[(key.to_sym rescue key) || key] = params.delete(key)
18
+ end
19
+
20
+ @delivery_method=delivery_method_hash.keys.first.to_sym
21
+ @delivery_method_settings = params
16
22
  else
17
- delivery_method options['delivery_method'].to_sym
23
+ @delivery_method=options['delivery_method'].to_sym
24
+ @delivery_method_settings={}
18
25
  end
19
- end
26
+
27
+ # Mail.defaults do
28
+ # if options['delivery_method'].is_a?(Hash)
29
+ # delivery_method_hash = options['delivery_method']
30
+ # params = delivery_method_hash.values.first.clone
31
+ # params.keys.each do |key|
32
+ # params[(key.to_sym rescue key) || key] = params.delete(key)
33
+ # end
34
+ # delivery_method delivery_method_hash.keys.first.to_sym, params
35
+ # else
36
+ # delivery_method options['delivery_method'].to_sym
37
+ # end
38
+ # end
20
39
  end
21
40
 
22
41
  def split_email(source_email)
@@ -32,7 +51,7 @@ class IronMailer::SendEmail
32
51
  cc source_email.cc
33
52
  end
34
53
  reply_to source_email.reply_to
35
-
54
+ date source_email.date
36
55
  html_part do
37
56
  content_type 'text/html; charset=UTF-8'
38
57
  body source_email.html_part.body.to_s
@@ -65,8 +84,8 @@ class IronMailer::SendEmail
65
84
  mails = self.split_email(source_email)
66
85
 
67
86
  mails.each do |mail|
87
+ mail.delivery_method self.delivery_method, self.delivery_method_settings
68
88
  mail.deliver
69
-
70
89
  self.cache.put(mail.message_id, self.extract_cache_info(mail).to_json)
71
90
  end
72
91
  message.delete
@@ -1,3 +1,3 @@
1
1
  module IronMailer
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
data/payload.json ADDED
@@ -0,0 +1,23 @@
1
+ {
2
+ "debug": "true",
3
+ "delivery_method": {
4
+ "smtp": {
5
+ "address": "smtp.sendgrid.net",
6
+ "authentication": "plain",
7
+ "domain": "teamdriveaway.com",
8
+ "password": "trucking2006",
9
+ "port": 587,
10
+ "user_name": "teamdriveaway"
11
+ }
12
+ },
13
+ "iron_cache": {
14
+ "cache_name": "development_email_cache",
15
+ "project_id": "50a79df0a6498073e700560c",
16
+ "token": "6P0Hr8umXZruKzS3SbKF1vuu1E8"
17
+ },
18
+ "iron_mq": {
19
+ "project_id": "511fb1f0d429792c50001158",
20
+ "queue_name": "development_mail_queue",
21
+ "token": "xv0iMDhbPB2xN5EaDH8CK4jAdQs"
22
+ }
23
+ }
@@ -25,7 +25,8 @@ describe IronMailer::SendEmail do
25
25
 
26
26
  it "should allow setting of a test delivery_method" do
27
27
  IronMailer::SendEmail.new(@options.merge('delivery_method'=>'test'))
28
- Mail.delivery_method.class.should == Mail::TestMailer
28
+ @send_email.delivery_method.should == :smtp
29
+ @send_email.delivery_method_settings.class.should == Hash
29
30
  end
30
31
 
31
32
  describe "iron_mq_client" do
@@ -56,34 +57,38 @@ describe IronMailer::SendEmail do
56
57
  @send_email.cache.name.should == @options['iron_cache']['cache_name']
57
58
  end
58
59
  end
59
-
60
+
61
+ it "should set delivery_method" do
62
+ @send_email.delivery_method.should == @options['delivery_method'].keys.first.to_sym
63
+ end
64
+
60
65
  describe "smtp_config" do
61
66
  it "should assign the address" do
62
- Mail.delivery_method.settings['address'].should == @options['delivery_method']['smtp']['address']
67
+ @send_email.delivery_method_settings[:address].should == @options['delivery_method']['smtp']['address']
63
68
  end
64
69
 
65
70
  it "should assign the port" do
66
- Mail.delivery_method.settings['port'] == @options['delivery_method']['smtp']['port']
71
+ @send_email.delivery_method_settings[:port] == @options['delivery_method']['smtp']['port']
67
72
  end
68
73
 
69
74
  it "should assign the domain" do
70
- Mail.delivery_method.settings['domain'] == @options['delivery_method']['smtp']['domain']
75
+ @send_email.delivery_method_settings[:domain] == @options['delivery_method']['smtp']['domain']
71
76
  end
72
77
 
73
78
  it "should assign the user_name" do
74
- Mail.delivery_method.settings['user_name'] == @options['delivery_method']['smtp']['user_name']
79
+ @send_email.delivery_method_settings[:user_name] == @options['delivery_method']['smtp']['user_name']
75
80
  end
76
81
 
77
82
  it "should assign the password" do
78
- Mail.delivery_method.settings['password'] == @options['delivery_method']['smtp']['password']
83
+ @send_email.delivery_method_settings[:password] == @options['delivery_method']['smtp']['password']
79
84
  end
80
85
 
81
86
  it "should assign the authentication" do
82
- Mail.delivery_method.settings['authentication'] == @options['delivery_method']['smtp']['authentication']
87
+ @send_email.delivery_method_settings[:authentication] == @options['delivery_method']['smtp']['authentication']
83
88
  end
84
89
 
85
90
  it "should assign enable_starttls_auto" do
86
- Mail.delivery_method.settings['enable_starttls_auto'] == @options['delivery_method']['smtp']['enable_starttls_auto']
91
+ @send_email.delivery_method_settings[:enable_starttls_auto] == @options['delivery_method']['smtp']['enable_starttls_auto']
87
92
  end
88
93
  end
89
94
 
@@ -92,7 +97,7 @@ describe IronMailer::SendEmail do
92
97
  def test_config
93
98
  @iron_mq_config = JSON.parse(File.read('spec/config/iron_mq.json'))
94
99
  @iron_cache_config = JSON.parse(File.read('spec/config/iron_cache.json'))
95
- {'iron_mq'=>@iron_mq_config, 'iron_cache'=>@iron_cache_config.merge('cache_name'=>"test_email_cache"), 'delivery_method'=>'test', 'debug'=>true}
100
+ {'iron_mq'=>@iron_mq_config, 'iron_cache'=>@iron_cache_config.merge('cache_name'=>"test_email_cache"), 'delivery_method'=>'test', 'debug'=>false}
96
101
  end
97
102
 
98
103
  def test_email(other_tos=[])
@@ -147,13 +152,14 @@ describe IronMailer::SendEmail do
147
152
 
148
153
  it "should call deliver with on the results of split_email" do
149
154
  @test_email=test_email
155
+ @test_email.stub(:message_id).and_return(Time.now.to_f.to_s)
150
156
  @send_email.stub(:split_email).and_return([@test_email])
151
157
  @test_email.should_receive(:deliver)
152
158
  @execute.call
153
159
  end
154
160
 
155
161
  it "should add the message back to the queue if there's an error " do
156
- @send_email.queue.clear
162
+ @send_email.queue.clear if @send_email.cache.size > 0
157
163
  email = test_email
158
164
  email.to.clear
159
165
  class ErrorMailer
@@ -211,7 +217,7 @@ describe IronMailer::SendEmail do
211
217
  @send_email.extract_cache_info(@test_email)['content'].should == @test_email.text_part.body.to_s
212
218
  end
213
219
  end
214
-
220
+
215
221
  describe "split_email" do
216
222
  before(:each) do
217
223
  @send_email = IronMailer::SendEmail.new(test_config)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iron_mailer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-08-06 00:00:00.000000000 Z
12
+ date: 2013-08-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -141,6 +141,7 @@ files:
141
141
  - lib/iron_mailer/mq_mailer.rb
142
142
  - lib/iron_mailer/send_email.rb
143
143
  - lib/iron_mailer/version.rb
144
+ - payload.json
144
145
  - spec/iron_mailer/mq_mailer_spec.rb
145
146
  - spec/iron_mailer/send_email_spec.rb
146
147
  homepage: ''