roadie-rails 1.0.1 → 1.0.2
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.
- checksums.yaml +4 -4
- data/Changelog.md +7 -2
- data/Upgrading.md +1 -1
- data/lib/roadie/rails/automatic.rb +1 -1
- data/lib/roadie/rails/document_builder.rb +1 -8
- data/lib/roadie/rails/mail_inliner.rb +4 -2
- data/lib/roadie/rails/version.rb +1 -1
- data/spec/integration_spec.rb +15 -0
- data/spec/lib/roadie/rails/automatic_spec.rb +14 -4
- data/spec/lib/roadie/rails/mail_inliner_spec.rb +15 -0
- data/spec/railsapps/rails_30/app/mailers/auto_mailer.rb +15 -5
- data/spec/railsapps/rails_31/app/mailers/auto_mailer.rb +15 -5
- data/spec/railsapps/rails_32/app/mailers/auto_mailer.rb +15 -5
- data/spec/railsapps/rails_40/app/mailers/auto_mailer.rb +15 -5
- data/spec/railsapps/rails_40_no_pipeline/app/mailers/auto_mailer.rb +15 -5
- data/spec/railsapps/rails_41/app/mailers/auto_mailer.rb +15 -5
- data/spec/support/have_no_styling_matcher.rb +25 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2a4b35fded61973ac9cbda12c4cbf1796becd78f
|
4
|
+
data.tar.gz: 6b0b437288261047b9b81693bbb0deed2807a2d4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4b8a7542c61077ac912f2bf2d94eb5a35896d318c7e1c6e016ccb866a9db0e6785b22a58ab2e983216c64d9c33306bb736feb2bbe5afd741faf547aff06c242c
|
7
|
+
data.tar.gz: da357a8a917fee88860c6583acd0dbc9000778953d1bd4b3824bcd78143cc799469fb21d3f6b401acdd761f5288d201464c11c2b3c61a437d8119edc90e6219d
|
data/Changelog.md
CHANGED
@@ -1,8 +1,13 @@
|
|
1
1
|
### development version
|
2
2
|
|
3
|
-
[full changelog](https://github.com/Mange/roadie/compare/v1.0.
|
3
|
+
[full changelog](https://github.com/Mange/roadie/compare/v1.0.2...master)
|
4
4
|
|
5
|
-
|
5
|
+
### 1.0.2
|
6
|
+
|
7
|
+
[full changelog](https://github.com/Mange/roadie/compare/v1.0.1...v1.0.2)
|
8
|
+
|
9
|
+
* Bug fixes
|
10
|
+
* Don't crash on `nil` `roadie_options`
|
6
11
|
|
7
12
|
### 1.0.1
|
8
13
|
|
data/Upgrading.md
CHANGED
@@ -1,14 +1,7 @@
|
|
1
1
|
module Roadie
|
2
2
|
module Rails
|
3
3
|
class DocumentBuilder
|
4
|
-
|
5
|
-
def build(html, options)
|
6
|
-
new.build(html, options)
|
7
|
-
end
|
8
|
-
private :new
|
9
|
-
end
|
10
|
-
|
11
|
-
def build(html, options)
|
4
|
+
def self.build(html, options)
|
12
5
|
document = Document.new(html)
|
13
6
|
options.apply_to document
|
14
7
|
document
|
@@ -9,8 +9,10 @@ module Roadie
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def execute
|
12
|
-
|
13
|
-
|
12
|
+
if options
|
13
|
+
improve_body if email.content_type =~ /^text\/html/
|
14
|
+
improve_html_part(email.html_part) if email.html_part
|
15
|
+
end
|
14
16
|
email
|
15
17
|
end
|
16
18
|
|
data/lib/roadie/rails/version.rb
CHANGED
data/spec/integration_spec.rb
CHANGED
@@ -75,6 +75,21 @@ describe "Integrations" do
|
|
75
75
|
email.deliver
|
76
76
|
end
|
77
77
|
|
78
|
+
it "inlines no styles when roadie_options are nil" do
|
79
|
+
email = app.read_delivered_email(:disabled_email)
|
80
|
+
|
81
|
+
expect(email.to).to eq(['example@example.org'])
|
82
|
+
expect(email.from).to eq(['john@example.com'])
|
83
|
+
expect(email).to have(2).parts
|
84
|
+
|
85
|
+
document = parse_html_in_email(email)
|
86
|
+
expect(document).to have_no_styling.at_selector('.image')
|
87
|
+
|
88
|
+
# If we deliver mails we can catch weird problems with headers being invalid
|
89
|
+
email.delivery_method :test
|
90
|
+
email.deliver
|
91
|
+
end
|
92
|
+
|
78
93
|
if app.using_asset_pipeline?
|
79
94
|
it "has a AssetPipelineProvider together with a FilesystemProvider" do
|
80
95
|
expect(app.read_providers).to eq(%w[Roadie::FilesystemProvider Roadie::Rails::AssetPipelineProvider])
|
@@ -27,16 +27,26 @@ module Roadie
|
|
27
27
|
|
28
28
|
describe "#mail" do
|
29
29
|
let(:email) { Mail.new(to: "foo@example.com", from: "me@example.com") }
|
30
|
-
let(:roadie_options) { Options.new(url_options: {host: "somehost.com"}) }
|
31
30
|
let(:instance) { some_mailer.new(email) }
|
32
31
|
|
33
|
-
before { allow(instance).to receive(:roadie_options).and_return roadie_options }
|
34
|
-
|
35
32
|
it "extends the email with InlineOnDelivery and assigns roadie options" do
|
33
|
+
options = Options.new(url_options: {host: "somehost.com"})
|
34
|
+
allow(instance).to receive(:roadie_options).and_return options
|
35
|
+
|
36
36
|
email = instance.mail
|
37
|
+
|
37
38
|
expect(email).to be_kind_of(InlineOnDelivery)
|
38
39
|
expect(email.roadie_options).not_to be_nil
|
39
|
-
expect(email.roadie_options.url_options).to eq
|
40
|
+
expect(email.roadie_options.url_options).to eq options.url_options
|
41
|
+
end
|
42
|
+
|
43
|
+
it "assigns nil roadie options if no options are present" do
|
44
|
+
allow(instance).to receive(:roadie_options).and_return nil
|
45
|
+
|
46
|
+
email = instance.mail
|
47
|
+
|
48
|
+
expect(email).to be_kind_of(InlineOnDelivery)
|
49
|
+
expect(email.roadie_options).to be_nil
|
40
50
|
end
|
41
51
|
end
|
42
52
|
end
|
@@ -27,6 +27,11 @@ module Roadie
|
|
27
27
|
expect(email.html_part).to be_nil
|
28
28
|
expect(email.body.decoded).to eq("Hello world")
|
29
29
|
end
|
30
|
+
|
31
|
+
it "does nothing when given nil options" do
|
32
|
+
inliner = MailInliner.new(email, nil)
|
33
|
+
expect { inliner.execute }.to_not raise_error
|
34
|
+
end
|
30
35
|
end
|
31
36
|
|
32
37
|
context "with an HTML email" do
|
@@ -47,6 +52,11 @@ module Roadie
|
|
47
52
|
|
48
53
|
expect(email.body.decoded).to eq("transformed HTML")
|
49
54
|
end
|
55
|
+
|
56
|
+
it "does nothing when given nil options" do
|
57
|
+
inliner = MailInliner.new(email, nil)
|
58
|
+
expect { inliner.execute }.to_not raise_error
|
59
|
+
end
|
50
60
|
end
|
51
61
|
|
52
62
|
context "with an multipart email" do
|
@@ -71,6 +81,11 @@ module Roadie
|
|
71
81
|
|
72
82
|
expect(email.html_part.body.decoded).to eq("transformed HTML")
|
73
83
|
end
|
84
|
+
|
85
|
+
it "does nothing when given nil options" do
|
86
|
+
inliner = MailInliner.new(email, nil)
|
87
|
+
expect { inliner.execute }.to_not raise_error
|
88
|
+
end
|
74
89
|
end
|
75
90
|
end
|
76
91
|
end
|
@@ -4,14 +4,24 @@ class AutoMailer < ActionMailer::Base
|
|
4
4
|
default from: 'john@example.com'
|
5
5
|
|
6
6
|
def normal_email
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
generate_email
|
8
|
+
end
|
9
|
+
|
10
|
+
def disabled_email
|
11
|
+
generate_email
|
11
12
|
end
|
12
13
|
|
13
14
|
private
|
14
15
|
def roadie_options
|
15
|
-
|
16
|
+
unless action_name =~ /disabled/
|
17
|
+
super.combine(url_options: {protocol: "https"})
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def generate_email
|
22
|
+
mail(to: 'example@example.org', subject: "Notification for you") do |format|
|
23
|
+
format.html { render :normal_email }
|
24
|
+
format.text { render :normal_email }
|
25
|
+
end
|
16
26
|
end
|
17
27
|
end
|
@@ -4,14 +4,24 @@ class AutoMailer < ActionMailer::Base
|
|
4
4
|
default from: 'john@example.com'
|
5
5
|
|
6
6
|
def normal_email
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
generate_email
|
8
|
+
end
|
9
|
+
|
10
|
+
def disabled_email
|
11
|
+
generate_email
|
11
12
|
end
|
12
13
|
|
13
14
|
private
|
14
15
|
def roadie_options
|
15
|
-
|
16
|
+
unless action_name =~ /disabled/
|
17
|
+
super.combine(url_options: {protocol: "https"})
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def generate_email
|
22
|
+
mail(to: 'example@example.org', subject: "Notification for you") do |format|
|
23
|
+
format.html { render :normal_email }
|
24
|
+
format.text { render :normal_email }
|
25
|
+
end
|
16
26
|
end
|
17
27
|
end
|
@@ -4,14 +4,24 @@ class AutoMailer < ActionMailer::Base
|
|
4
4
|
default from: 'john@example.com'
|
5
5
|
|
6
6
|
def normal_email
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
generate_email
|
8
|
+
end
|
9
|
+
|
10
|
+
def disabled_email
|
11
|
+
generate_email
|
11
12
|
end
|
12
13
|
|
13
14
|
private
|
14
15
|
def roadie_options
|
15
|
-
|
16
|
+
unless action_name =~ /disabled/
|
17
|
+
super.combine(url_options: {protocol: "https"})
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def generate_email
|
22
|
+
mail(to: 'example@example.org', subject: "Notification for you") do |format|
|
23
|
+
format.html { render :normal_email }
|
24
|
+
format.text { render :normal_email }
|
25
|
+
end
|
16
26
|
end
|
17
27
|
end
|
@@ -4,14 +4,24 @@ class AutoMailer < ActionMailer::Base
|
|
4
4
|
default from: 'john@example.com'
|
5
5
|
|
6
6
|
def normal_email
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
generate_email
|
8
|
+
end
|
9
|
+
|
10
|
+
def disabled_email
|
11
|
+
generate_email
|
11
12
|
end
|
12
13
|
|
13
14
|
private
|
14
15
|
def roadie_options
|
15
|
-
|
16
|
+
unless action_name =~ /disabled/
|
17
|
+
super.combine(url_options: {protocol: "https"})
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def generate_email
|
22
|
+
mail(to: 'example@example.org', subject: "Notification for you") do |format|
|
23
|
+
format.html { render :normal_email }
|
24
|
+
format.text { render :normal_email }
|
25
|
+
end
|
16
26
|
end
|
17
27
|
end
|
@@ -4,14 +4,24 @@ class AutoMailer < ActionMailer::Base
|
|
4
4
|
default from: 'john@example.com'
|
5
5
|
|
6
6
|
def normal_email
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
generate_email
|
8
|
+
end
|
9
|
+
|
10
|
+
def disabled_email
|
11
|
+
generate_email
|
11
12
|
end
|
12
13
|
|
13
14
|
private
|
14
15
|
def roadie_options
|
15
|
-
|
16
|
+
unless action_name =~ /disabled/
|
17
|
+
super.combine(url_options: {protocol: "https"})
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def generate_email
|
22
|
+
mail(to: 'example@example.org', subject: "Notification for you") do |format|
|
23
|
+
format.html { render :normal_email }
|
24
|
+
format.text { render :normal_email }
|
25
|
+
end
|
16
26
|
end
|
17
27
|
end
|
@@ -4,14 +4,24 @@ class AutoMailer < ActionMailer::Base
|
|
4
4
|
default from: 'john@example.com'
|
5
5
|
|
6
6
|
def normal_email
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
generate_email
|
8
|
+
end
|
9
|
+
|
10
|
+
def disabled_email
|
11
|
+
generate_email
|
11
12
|
end
|
12
13
|
|
13
14
|
private
|
14
15
|
def roadie_options
|
15
|
-
|
16
|
+
unless action_name =~ /disabled/
|
17
|
+
super.combine(url_options: {protocol: "https"})
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def generate_email
|
22
|
+
mail(to: 'example@example.org', subject: "Notification for you") do |format|
|
23
|
+
format.html { render :normal_email }
|
24
|
+
format.text { render :normal_email }
|
25
|
+
end
|
16
26
|
end
|
17
27
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
RSpec::Matchers.define :have_no_styling do
|
2
|
+
chain(:at_selector) { |selector| @selector = selector }
|
3
|
+
|
4
|
+
match { |document|
|
5
|
+
@selector ||= 'body > *:first'
|
6
|
+
styles_at_selector(document).empty?
|
7
|
+
}
|
8
|
+
|
9
|
+
description {
|
10
|
+
"have no styles at selector #{@selector.inspect}"
|
11
|
+
}
|
12
|
+
|
13
|
+
failure_message { |document|
|
14
|
+
"expected no styles at #{@selector.inspect} but had:\n#{styles_at_selector(document)}"
|
15
|
+
}
|
16
|
+
|
17
|
+
failure_message_when_negated {
|
18
|
+
"expected #{@selector.inspect} to have styles"
|
19
|
+
}
|
20
|
+
|
21
|
+
def styles_at_selector(document)
|
22
|
+
expect(document).to have_selector(@selector)
|
23
|
+
document.at_css(@selector)['style'] || ""
|
24
|
+
end
|
25
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: roadie-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Magnus Bergmark
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-07-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: roadie
|
@@ -271,6 +271,7 @@ files:
|
|
271
271
|
- spec/railsapps/rails_41/config/initializers/session_store.rb
|
272
272
|
- spec/railsapps/rails_41/config/routes.rb
|
273
273
|
- spec/spec_helper.rb
|
274
|
+
- spec/support/have_no_styling_matcher.rb
|
274
275
|
- spec/support/have_selector_matcher.rb
|
275
276
|
- spec/support/have_styling_matcher.rb
|
276
277
|
- spec/support/rails_app.rb
|
@@ -438,6 +439,7 @@ test_files:
|
|
438
439
|
- spec/railsapps/rails_41/config/initializers/session_store.rb
|
439
440
|
- spec/railsapps/rails_41/config/routes.rb
|
440
441
|
- spec/spec_helper.rb
|
442
|
+
- spec/support/have_no_styling_matcher.rb
|
441
443
|
- spec/support/have_selector_matcher.rb
|
442
444
|
- spec/support/have_styling_matcher.rb
|
443
445
|
- spec/support/rails_app.rb
|