letter_opener 1.6.0 → 1.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2df464fe5809a855caf4522381a27fb4513aafbe1d25541d40e094af74d22b54
4
- data.tar.gz: 3d6f55250c61a5c6997635543330166fad5f01427cf769b9736c5aba196edc04
3
+ metadata.gz: 0ef387f446fe58d7fbe039333d493cc644dbb388323e098f2b4a0a48dfad93ac
4
+ data.tar.gz: 3d6da1bcc7fa1d575e00d361677e36a73dfd26ea331416cfbb31c14cdd8f87ac
5
5
  SHA512:
6
- metadata.gz: b95a304e86c9285ce73702cef85911a3664d4e51399b248ced6fa3db1e6e7ccaa214253e3970393aeeb327b55b690195774655a0797c3e900c6a4df53e71d639
7
- data.tar.gz: 4ab881435c6a00604afb16fb1aeeb6a8b3244049c094ab144576bbf2a2be2bf8c39d098f657a300d06153049416439cd284eb2a71ceaeaf69aed2b5dad22d4e1
6
+ metadata.gz: 62fc742943f4904086cfdddcd0908c7bb67fd602530e340852eb213644bce32e664e6da00058767fd80cfc8f13735e757e2d4fa32cb4459be74df8bdf7348030
7
+ data.tar.gz: 827cb033ed7805de3399f2c32427e69190a15420314d2f4ad6b4f3856a8209d6cbf0b0d5701ea6e47dd996fd919ef5e9185389df3b151ce24b3ad67a693492a6
@@ -1,3 +1,9 @@
1
+ ## master ##
2
+ * Use default configuration in `Message::rendered_messages` (thanks [Krystan HuffMenne
3
+ ](https://github.com/gitKrystan))
4
+ * Do not use `Rails.root` path if LetterOpener is used outside of Rails (thanks [centrevillage](https://github.com/centrevillage))
5
+ * Allow to set only `Mail#cc`/`Mail#bcc` without `Mail#to`.
6
+
1
7
  ## 1.6.0 ##
2
8
  * Do not depend on Mail gem to check delivery params.
3
9
  * Do not parse and escape url before passing it to Launchy.
@@ -12,6 +12,7 @@ First add the gem to your development environment and run the +bundle+ command t
12
12
  Then set the delivery method in <tt>config/environments/development.rb</tt>
13
13
 
14
14
  config.action_mailer.delivery_method = :letter_opener
15
+ config.action_mailer.perform_deliveries = true
15
16
 
16
17
  Now any email will pop up in your browser instead of being sent. The messages are stored in <tt>tmp/letter_opener</tt>.
17
18
  If you want to change application that will be used to open your emails you should override <tt>LAUNCHY_APPLICATION</tt> environment variable or set <tt>Launchy.application</tt> in the initializer.
@@ -4,7 +4,7 @@ module LetterOpener
4
4
  autoload :Configuration, "letter_opener/configuration"
5
5
 
6
6
  def self.configuration
7
- @configration ||= Configuration.new
7
+ @configuration ||= Configuration.new
8
8
  end
9
9
 
10
10
  def self.configure
@@ -3,7 +3,7 @@ module LetterOpener
3
3
  attr_accessor :location, :message_template
4
4
 
5
5
  def initialize
6
- @location = Rails.root.join('tmp', 'letter_opener') if defined?(Rails)
6
+ @location = Rails.root.join('tmp', 'letter_opener') if defined?(Rails) && Rails.respond_to?(:root)
7
7
  @message_template = 'default'
8
8
  end
9
9
  end
@@ -27,11 +27,11 @@ module LetterOpener
27
27
  private
28
28
 
29
29
  def validate_mail!(mail)
30
- if !mail.from || mail.from.empty?
30
+ if !mail.smtp_envelope_from || mail.smtp_envelope_from.empty?
31
31
  raise ArgumentError, "SMTP From address may not be blank"
32
32
  end
33
33
 
34
- if !mail.to || mail.to.empty?
34
+ if !mail.smtp_envelope_to || mail.smtp_envelope_to.empty?
35
35
  raise ArgumentError, "SMTP To address may not be blank"
36
36
  end
37
37
  end
@@ -16,12 +16,17 @@ module LetterOpener
16
16
  messages.sort
17
17
  end
18
18
 
19
+ ERROR_MSG = '%s or default configuration must be given'.freeze
20
+
19
21
  def initialize(mail, options = {})
20
22
  @mail = mail
21
- @location = options[:location]
23
+ @location = options[:location] || LetterOpener.configuration.location
22
24
  @part = options[:part]
23
- @template = options[:message_template]
25
+ @template = options[:message_template] || LetterOpener.configuration.message_template
24
26
  @attachments = []
27
+
28
+ raise ArgumentError, ERROR_MSG % 'options[:location]' unless @location
29
+ raise ArgumentError, ERROR_MSG % 'options[:message_template]' unless @template
25
30
  end
26
31
 
27
32
  def render
@@ -114,7 +119,7 @@ module LetterOpener
114
119
  end
115
120
 
116
121
  def attachment_filename(attachment)
117
- attachment.filename.gsub(/[^\w\-_.]/, '_')
122
+ attachment.filename.gsub(/[^\w\-.]/, '_')
118
123
  end
119
124
 
120
125
  def <=>(other)
@@ -316,7 +316,7 @@ describe LetterOpener::DeliveryMethod do
316
316
  end
317
317
 
318
318
  context 'delivery params' do
319
- it 'raises an exception if delivery params are not valid' do
319
+ it 'raises an exception if there is no SMTP Envelope To value' do
320
320
  expect(Launchy).not_to receive(:open)
321
321
 
322
322
  expect {
@@ -327,6 +327,19 @@ describe LetterOpener::DeliveryMethod do
327
327
  end
328
328
  }.to raise_exception(ArgumentError)
329
329
  end
330
+
331
+ it 'does not raise an exception if there is at least one SMTP Envelope To value' do
332
+ expect(Launchy).to receive(:open)
333
+
334
+ expect {
335
+ Mail.deliver do
336
+ from 'Foo foo@example.com'
337
+ cc 'Bar bar@example.com'
338
+ reply_to 'No Reply no-reply@example.com'
339
+ body 'World! http://example.com'
340
+ end
341
+ }.not_to raise_exception
342
+ end
330
343
  end
331
344
 
332
345
  context 'light template' do
@@ -201,4 +201,22 @@ describe LetterOpener::Message do
201
201
  expect(message.body.encoding.name).to eq('UTF-8')
202
202
  end
203
203
  end
204
+
205
+ describe '.rendered_messages' do
206
+ it 'uses configured default template if options not given' do
207
+ allow(LetterOpener.configuration).to receive(:location) { location }
208
+ messages = described_class.rendered_messages(mail)
209
+ expect(messages.first.template).not_to be_nil
210
+ end
211
+
212
+ it 'fails if necessary defaults are not provided' do
213
+ allow(LetterOpener.configuration).to receive(:location) { nil }
214
+ expect { described_class.rendered_messages(mail) }.to raise_error(ArgumentError)
215
+ end
216
+
217
+ it 'fails if necessary defaults are not provided' do
218
+ allow(LetterOpener.configuration).to receive(:message_template) { nil }
219
+ expect { described_class.rendered_messages(mail) }.to raise_error(ArgumentError)
220
+ end
221
+ end
204
222
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: letter_opener
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.0
4
+ version: 1.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Bates
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-10 00:00:00.000000000 Z
11
+ date: 2018-12-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: launchy
@@ -94,7 +94,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
94
94
  version: 1.3.4
95
95
  requirements: []
96
96
  rubyforge_project: letter_opener
97
- rubygems_version: 2.6.14
97
+ rubygems_version: 2.7.8
98
98
  signing_key:
99
99
  specification_version: 4
100
100
  summary: Preview mail in browser instead of sending.