postmark 1.18.0 → 1.19.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/postmark/api_client.rb +26 -1
- data/lib/postmark/version.rb +1 -1
- data/spec/integration/api_client_hashes_spec.rb +29 -35
- data/spec/integration/api_client_messages_spec.rb +16 -16
- data/spec/integration/api_client_resources_spec.rb +15 -31
- data/spec/spec_helper.rb +1 -7
- data/spec/support/custom_matchers.rb +6 -0
- data/spec/support/shared_examples.rb +16 -16
- data/spec/unit/postmark/account_api_client_spec.rb +1 -50
- data/spec/unit/postmark/api_client_spec.rb +51 -66
- data/spec/unit/postmark/bounce_spec.rb +37 -49
- data/spec/unit/postmark/client_spec.rb +0 -6
- data/spec/unit/postmark/error_spec.rb +44 -44
- data/spec/unit/postmark/handlers/mail_spec.rb +3 -3
- data/spec/unit/postmark/helpers/hash_helper_spec.rb +5 -6
- data/spec/unit/postmark/http_client_spec.rb +47 -49
- data/spec/unit/postmark/inbound_spec.rb +34 -34
- data/spec/unit/postmark/inflector_spec.rb +11 -13
- data/spec/unit/postmark/json_spec.rb +2 -2
- data/spec/unit/postmark/mail_message_converter_spec.rb +79 -82
- data/spec/unit/postmark_spec.rb +32 -32
- metadata +3 -3
@@ -7,81 +7,81 @@ describe Postmark::Inbound do
|
|
7
7
|
context "given a serialized inbound document" do
|
8
8
|
subject { Postmark::Inbound.to_ruby_hash(example_inbound) }
|
9
9
|
|
10
|
-
it {
|
11
|
-
it {
|
12
|
-
it {
|
13
|
-
it {
|
14
|
-
it {
|
15
|
-
it {
|
16
|
-
it {
|
17
|
-
it {
|
18
|
-
it {
|
19
|
-
it {
|
20
|
-
it {
|
21
|
-
it {
|
22
|
-
it {
|
23
|
-
it {
|
24
|
-
it {
|
25
|
-
it {
|
10
|
+
it { expect(subject).to have_key(:from) }
|
11
|
+
it { expect(subject).to have_key(:from_full) }
|
12
|
+
it { expect(subject).to have_key(:to) }
|
13
|
+
it { expect(subject).to have_key(:to_full) }
|
14
|
+
it { expect(subject).to have_key(:cc) }
|
15
|
+
it { expect(subject).to have_key(:cc_full) }
|
16
|
+
it { expect(subject).to have_key(:reply_to) }
|
17
|
+
it { expect(subject).to have_key(:subject) }
|
18
|
+
it { expect(subject).to have_key(:message_id) }
|
19
|
+
it { expect(subject).to have_key(:date) }
|
20
|
+
it { expect(subject).to have_key(:mailbox_hash) }
|
21
|
+
it { expect(subject).to have_key(:text_body) }
|
22
|
+
it { expect(subject).to have_key(:html_body) }
|
23
|
+
it { expect(subject).to have_key(:tag) }
|
24
|
+
it { expect(subject).to have_key(:headers) }
|
25
|
+
it { expect(subject).to have_key(:attachments) }
|
26
26
|
|
27
27
|
context "cc" do
|
28
28
|
it 'has 2 CCs' do
|
29
|
-
subject[:cc_full].count.
|
29
|
+
expect(subject[:cc_full].count).to eq 2
|
30
30
|
end
|
31
31
|
|
32
32
|
it 'stores CCs as an array of Ruby hashes' do
|
33
33
|
cc = subject[:cc_full].last
|
34
|
-
cc.
|
35
|
-
cc.
|
34
|
+
expect(cc).to have_key(:email)
|
35
|
+
expect(cc).to have_key(:name)
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
39
|
context "to" do
|
40
40
|
it 'has 1 recipients' do
|
41
|
-
subject[:to_full].count.
|
41
|
+
expect(subject[:to_full].count).to eq 1
|
42
42
|
end
|
43
43
|
|
44
44
|
it 'stores TOs as an array of Ruby hashes' do
|
45
45
|
cc = subject[:to_full].last
|
46
|
-
cc.
|
47
|
-
cc.
|
46
|
+
expect(cc).to have_key(:email)
|
47
|
+
expect(cc).to have_key(:name)
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
51
|
context "from" do
|
52
52
|
it 'is a hash' do
|
53
|
-
subject[:from_full].
|
53
|
+
expect(subject[:from_full]).to be_a Hash
|
54
54
|
end
|
55
55
|
|
56
|
-
it '
|
57
|
-
subject[:from_full].
|
58
|
-
subject[:from_full].
|
56
|
+
it 'has all required fields' do
|
57
|
+
expect(subject[:from_full]).to have_key(:email)
|
58
|
+
expect(subject[:from_full]).to have_key(:name)
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
62
62
|
context "headers" do
|
63
63
|
it 'has 8 headers' do
|
64
|
-
subject[:headers].count.
|
64
|
+
expect(subject[:headers].count).to eq 8
|
65
65
|
end
|
66
66
|
|
67
67
|
it 'stores headers as an array of Ruby hashes' do
|
68
68
|
header = subject[:headers].last
|
69
|
-
header.
|
70
|
-
header.
|
69
|
+
expect(header).to have_key(:name)
|
70
|
+
expect(header).to have_key(:value)
|
71
71
|
end
|
72
72
|
end
|
73
73
|
|
74
74
|
context "attachments" do
|
75
75
|
it 'has 2 attachments' do
|
76
|
-
subject[:attachments].count.
|
76
|
+
expect(subject[:attachments].count).to eq 2
|
77
77
|
end
|
78
78
|
|
79
79
|
it 'stores attachemnts as an array of Ruby hashes' do
|
80
80
|
attachment = subject[:attachments].last
|
81
|
-
attachment.
|
82
|
-
attachment.
|
83
|
-
attachment.
|
84
|
-
attachment.
|
81
|
+
expect(attachment).to have_key(:name)
|
82
|
+
expect(attachment).to have_key(:content)
|
83
|
+
expect(attachment).to have_key(:content_type)
|
84
|
+
expect(attachment).to have_key(:content_length)
|
85
85
|
end
|
86
86
|
end
|
87
87
|
end
|
@@ -1,35 +1,33 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Postmark::Inflector do
|
4
|
-
|
5
4
|
describe ".to_postmark" do
|
6
5
|
it 'converts rubyish underscored format to camel cased symbols accepted by the Postmark API' do
|
7
|
-
subject.to_postmark(:foo_bar).
|
8
|
-
subject.to_postmark(:_bar).
|
9
|
-
subject.to_postmark(:really_long_long_long_long_symbol).
|
10
|
-
subject.to_postmark(:foo_bar_1).
|
6
|
+
expect(subject.to_postmark(:foo_bar)).to eq 'FooBar'
|
7
|
+
expect(subject.to_postmark(:_bar)).to eq 'Bar'
|
8
|
+
expect(subject.to_postmark(:really_long_long_long_long_symbol)).to eq 'ReallyLongLongLongLongSymbol'
|
9
|
+
expect(subject.to_postmark(:foo_bar_1)).to eq 'FooBar1'
|
11
10
|
end
|
12
11
|
|
13
12
|
it 'accepts strings as well' do
|
14
|
-
subject.to_postmark('foo_bar').
|
13
|
+
expect(subject.to_postmark('foo_bar')).to eq 'FooBar'
|
15
14
|
end
|
16
15
|
|
17
16
|
it 'acts idempotentely' do
|
18
|
-
subject.to_postmark('FooBar').
|
17
|
+
expect(subject.to_postmark('FooBar')).to eq 'FooBar'
|
19
18
|
end
|
20
19
|
end
|
21
20
|
|
22
21
|
describe ".to_ruby" do
|
23
22
|
it 'converts camel cased symbols returned by the Postmark API to underscored Ruby symbols' do
|
24
|
-
subject.to_ruby('FooBar').
|
25
|
-
subject.to_ruby('LongTimeAgoInAFarFarGalaxy').
|
26
|
-
subject.to_ruby('MessageID').
|
23
|
+
expect(subject.to_ruby('FooBar')).to eq :foo_bar
|
24
|
+
expect(subject.to_ruby('LongTimeAgoInAFarFarGalaxy')).to eq :long_time_ago_in_a_far_far_galaxy
|
25
|
+
expect(subject.to_ruby('MessageID')).to eq :message_id
|
27
26
|
end
|
28
27
|
|
29
28
|
it 'acts idempotentely' do
|
30
|
-
subject.to_ruby(:foo_bar).
|
31
|
-
subject.to_ruby(:foo_bar_1).
|
29
|
+
expect(subject.to_ruby(:foo_bar)).to eq :foo_bar
|
30
|
+
expect(subject.to_ruby(:foo_bar_1)).to eq :foo_bar_1
|
32
31
|
end
|
33
32
|
end
|
34
|
-
|
35
33
|
end
|
@@ -6,8 +6,8 @@ describe Postmark::Json do
|
|
6
6
|
shared_examples "json parser" do
|
7
7
|
it 'encodes and decodes data correctly' do
|
8
8
|
hash = Postmark::Json.decode(Postmark::Json.encode(data))
|
9
|
-
hash.
|
10
|
-
hash.
|
9
|
+
expect(hash).to have_key("bar")
|
10
|
+
expect(hash).to have_key("foo")
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
@@ -2,23 +2,22 @@
|
|
2
2
|
require 'spec_helper'
|
3
3
|
|
4
4
|
describe Postmark::MailMessageConverter do
|
5
|
-
|
6
|
-
subject { Postmark::MailMessageConverter }
|
5
|
+
subject {Postmark::MailMessageConverter}
|
7
6
|
|
8
7
|
let(:mail_message) do
|
9
8
|
Mail.new do
|
10
|
-
from
|
11
|
-
to
|
9
|
+
from "sheldon@bigbangtheory.com"
|
10
|
+
to "lenard@bigbangtheory.com"
|
12
11
|
subject "Hello!"
|
13
|
-
body
|
12
|
+
body "Hello Sheldon!"
|
14
13
|
end
|
15
14
|
end
|
16
15
|
|
17
16
|
let(:mail_html_message) do
|
18
17
|
Mail.new do
|
19
|
-
from
|
20
|
-
to
|
21
|
-
subject
|
18
|
+
from "sheldon@bigbangtheory.com"
|
19
|
+
to "lenard@bigbangtheory.com"
|
20
|
+
subject "Hello!"
|
22
21
|
content_type 'text/html; charset=UTF-8'
|
23
22
|
body "<b>Hello Sheldon!</b>"
|
24
23
|
end
|
@@ -26,41 +25,41 @@ describe Postmark::MailMessageConverter do
|
|
26
25
|
|
27
26
|
let(:mail_message_with_open_tracking) do
|
28
27
|
Mail.new do
|
29
|
-
from
|
30
|
-
to
|
31
|
-
subject
|
32
|
-
content_type
|
33
|
-
body
|
34
|
-
track_opens
|
28
|
+
from "sheldon@bigbangtheory.com"
|
29
|
+
to "lenard@bigbangtheory.com"
|
30
|
+
subject "Hello!"
|
31
|
+
content_type 'text/html; charset=UTF-8'
|
32
|
+
body "<b>Hello Sheldon!</b>"
|
33
|
+
track_opens true
|
35
34
|
end
|
36
35
|
end
|
37
36
|
|
38
37
|
let(:mail_message_with_open_tracking_disabled) do
|
39
38
|
Mail.new do
|
40
|
-
from
|
41
|
-
to
|
42
|
-
subject
|
43
|
-
content_type
|
44
|
-
body
|
45
|
-
track_opens
|
39
|
+
from "sheldon@bigbangtheory.com"
|
40
|
+
to "lenard@bigbangtheory.com"
|
41
|
+
subject "Hello!"
|
42
|
+
content_type 'text/html; charset=UTF-8'
|
43
|
+
body "<b>Hello Sheldon!</b>"
|
44
|
+
track_opens false
|
46
45
|
end
|
47
46
|
end
|
48
47
|
|
49
48
|
let(:mail_message_with_open_tracking_set_variable) do
|
50
49
|
mail = mail_html_message
|
51
|
-
mail.track_opens=true
|
50
|
+
mail.track_opens = true
|
52
51
|
mail
|
53
52
|
end
|
54
53
|
|
55
54
|
let(:mail_message_with_open_tracking_disabled_set_variable) do
|
56
55
|
mail = mail_html_message
|
57
|
-
mail.track_opens=false
|
56
|
+
mail.track_opens = false
|
58
57
|
mail
|
59
58
|
end
|
60
59
|
|
61
60
|
let(:mail_message_with_link_tracking_all) do
|
62
61
|
mail = mail_html_message
|
63
|
-
mail.track_links
|
62
|
+
mail.track_links :html_and_text
|
64
63
|
mail
|
65
64
|
end
|
66
65
|
|
@@ -84,73 +83,73 @@ describe Postmark::MailMessageConverter do
|
|
84
83
|
|
85
84
|
let(:tagged_mail_message) do
|
86
85
|
Mail.new do
|
87
|
-
from
|
88
|
-
to
|
86
|
+
from "sheldon@bigbangtheory.com"
|
87
|
+
to "lenard@bigbangtheory.com"
|
89
88
|
subject "Hello!"
|
90
|
-
body
|
91
|
-
tag
|
89
|
+
body "Hello Sheldon!"
|
90
|
+
tag "sheldon"
|
92
91
|
end
|
93
92
|
end
|
94
93
|
|
95
94
|
let(:mail_message_without_body) do
|
96
95
|
Mail.new do
|
97
|
-
from
|
98
|
-
to
|
96
|
+
from "sheldon@bigbangtheory.com"
|
97
|
+
to "lenard@bigbangtheory.com"
|
99
98
|
subject "Hello!"
|
100
99
|
end
|
101
100
|
end
|
102
101
|
|
103
102
|
let(:mail_multipart_message) do
|
104
103
|
Mail.new do
|
105
|
-
from
|
106
|
-
to
|
107
|
-
subject
|
104
|
+
from "sheldon@bigbangtheory.com"
|
105
|
+
to "lenard@bigbangtheory.com"
|
106
|
+
subject "Hello!"
|
108
107
|
text_part do
|
109
|
-
body
|
108
|
+
body "Hello Sheldon!"
|
110
109
|
end
|
111
110
|
html_part do
|
112
|
-
body
|
111
|
+
body "<b>Hello Sheldon!</b>"
|
113
112
|
end
|
114
113
|
end
|
115
114
|
end
|
116
115
|
|
117
116
|
let(:mail_message_with_attachment) do
|
118
117
|
Mail.new do
|
119
|
-
from
|
120
|
-
to
|
118
|
+
from "sheldon@bigbangtheory.com"
|
119
|
+
to "lenard@bigbangtheory.com"
|
121
120
|
subject "Hello!"
|
122
|
-
body
|
121
|
+
body "Hello Sheldon!"
|
123
122
|
add_file empty_gif_path
|
124
123
|
end
|
125
124
|
end
|
126
125
|
|
127
126
|
let(:mail_message_with_named_addresses) do
|
128
127
|
Mail.new do
|
129
|
-
from
|
130
|
-
to
|
128
|
+
from "Sheldon <sheldon@bigbangtheory.com>"
|
129
|
+
to "\"Leonard Hofstadter\" <leonard@bigbangtheory.com>"
|
131
130
|
subject "Hello!"
|
132
|
-
body
|
131
|
+
body "Hello Sheldon!"
|
133
132
|
reply_to '"Penny The Neighbor" <penny@bigbangtheory.com>'
|
134
133
|
end
|
135
134
|
end
|
136
135
|
|
137
136
|
let(:mail_message_quoted_printable) do
|
138
137
|
Mail.new do
|
139
|
-
from
|
140
|
-
to
|
138
|
+
from "Sheldon <sheldon@bigbangtheory.com>"
|
139
|
+
to "\"Leonard Hofstadter\" <leonard@bigbangtheory.com>"
|
141
140
|
subject "Hello!"
|
142
141
|
content_type 'text/plain; charset=utf-8'
|
143
142
|
content_transfer_encoding 'quoted-printable'
|
144
|
-
body
|
143
|
+
body 'Он здесь бывал: еще не в галифе.'
|
145
144
|
reply_to '"Penny The Neighbor" <penny@bigbangtheory.com>'
|
146
145
|
end
|
147
146
|
end
|
148
147
|
|
149
148
|
let(:multipart_message_quoted_printable) do
|
150
149
|
Mail.new do
|
151
|
-
from
|
152
|
-
to
|
153
|
-
subject
|
150
|
+
from "sheldon@bigbangtheory.com"
|
151
|
+
to "lenard@bigbangtheory.com"
|
152
|
+
subject "Hello!"
|
154
153
|
text_part do
|
155
154
|
content_type 'text/plain; charset=utf-8'
|
156
155
|
content_transfer_encoding 'quoted-printable'
|
@@ -166,80 +165,80 @@ describe Postmark::MailMessageConverter do
|
|
166
165
|
|
167
166
|
let(:templated_message) do
|
168
167
|
Mail.new do
|
169
|
-
from
|
170
|
-
to
|
171
|
-
template_alias
|
172
|
-
template_model
|
168
|
+
from "sheldon@bigbangtheory.com"
|
169
|
+
to "lenard@bigbangtheory.com"
|
170
|
+
template_alias "hello"
|
171
|
+
template_model :name => "Sheldon"
|
173
172
|
end
|
174
173
|
end
|
175
174
|
|
176
175
|
it 'converts plain text messages correctly' do
|
177
|
-
subject.new(mail_message).run.
|
176
|
+
expect(subject.new(mail_message).run).to eq ({
|
178
177
|
"From" => "sheldon@bigbangtheory.com",
|
179
178
|
"Subject" => "Hello!",
|
180
179
|
"TextBody" => "Hello Sheldon!",
|
181
|
-
"To" => "lenard@bigbangtheory.com"}
|
180
|
+
"To" => "lenard@bigbangtheory.com"})
|
182
181
|
end
|
183
182
|
|
184
183
|
it 'converts tagged text messages correctly' do
|
185
|
-
subject.new(tagged_mail_message).run.
|
184
|
+
expect(subject.new(tagged_mail_message).run).to eq ({
|
186
185
|
"From" => "sheldon@bigbangtheory.com",
|
187
186
|
"Subject" => "Hello!",
|
188
187
|
"TextBody" => "Hello Sheldon!",
|
189
188
|
"Tag" => "sheldon",
|
190
|
-
"To"=>"lenard@bigbangtheory.com"}
|
189
|
+
"To" => "lenard@bigbangtheory.com"})
|
191
190
|
end
|
192
191
|
|
193
192
|
it 'converts plain text messages without body correctly' do
|
194
|
-
subject.new(mail_message_without_body).run.
|
193
|
+
expect(subject.new(mail_message_without_body).run).to eq ({
|
195
194
|
"From" => "sheldon@bigbangtheory.com",
|
196
195
|
"Subject" => "Hello!",
|
197
|
-
"To" => "lenard@bigbangtheory.com"}
|
196
|
+
"To" => "lenard@bigbangtheory.com"})
|
198
197
|
end
|
199
198
|
|
200
199
|
it 'converts html messages correctly' do
|
201
|
-
subject.new(mail_html_message).run.
|
200
|
+
expect(subject.new(mail_html_message).run).to eq ({
|
202
201
|
"From" => "sheldon@bigbangtheory.com",
|
203
202
|
"Subject" => "Hello!",
|
204
203
|
"HtmlBody" => "<b>Hello Sheldon!</b>",
|
205
|
-
"To" => "lenard@bigbangtheory.com"}
|
204
|
+
"To" => "lenard@bigbangtheory.com"})
|
206
205
|
end
|
207
206
|
|
208
207
|
it 'converts multipart messages correctly' do
|
209
|
-
subject.new(mail_multipart_message).run.
|
208
|
+
expect(subject.new(mail_multipart_message).run).to eq ({
|
210
209
|
"From" => "sheldon@bigbangtheory.com",
|
211
210
|
"Subject" => "Hello!",
|
212
211
|
"HtmlBody" => "<b>Hello Sheldon!</b>",
|
213
212
|
"TextBody" => "Hello Sheldon!",
|
214
|
-
"To" => "lenard@bigbangtheory.com"}
|
213
|
+
"To" => "lenard@bigbangtheory.com"})
|
215
214
|
end
|
216
215
|
|
217
216
|
it 'converts messages with attachments correctly' do
|
218
|
-
subject.new(mail_message_with_attachment).run.
|
217
|
+
expect(subject.new(mail_message_with_attachment).run).to eq ({
|
219
218
|
"From" => "sheldon@bigbangtheory.com",
|
220
219
|
"Subject" => "Hello!",
|
221
|
-
"Attachments" => [{"Name"=>"empty.gif",
|
222
|
-
"Content"=>encoded_empty_gif_data,
|
223
|
-
"ContentType"=>"image/gif"}],
|
224
|
-
"TextBody"=>"Hello Sheldon!",
|
225
|
-
"To"=>"lenard@bigbangtheory.com"}
|
220
|
+
"Attachments" => [{"Name" => "empty.gif",
|
221
|
+
"Content" => encoded_empty_gif_data,
|
222
|
+
"ContentType" => "image/gif"}],
|
223
|
+
"TextBody" => "Hello Sheldon!",
|
224
|
+
"To" => "lenard@bigbangtheory.com"})
|
226
225
|
end
|
227
226
|
|
228
227
|
it 'converts messages with named addresses correctly' do
|
229
|
-
subject.new(mail_message_with_named_addresses).run.
|
228
|
+
expect(subject.new(mail_message_with_named_addresses).run).to eq ({
|
230
229
|
"From" => "Sheldon <sheldon@bigbangtheory.com>",
|
231
230
|
"Subject" => "Hello!",
|
232
231
|
"TextBody" => "Hello Sheldon!",
|
233
232
|
"To" => "Leonard Hofstadter <leonard@bigbangtheory.com>",
|
234
|
-
"ReplyTo" => 'Penny The Neighbor <penny@bigbangtheory.com>'}
|
233
|
+
"ReplyTo" => 'Penny The Neighbor <penny@bigbangtheory.com>'})
|
235
234
|
end
|
236
235
|
|
237
236
|
it 'convertes templated messages correctly' do
|
238
|
-
expect(subject.new(templated_message).run).
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
237
|
+
expect(subject.new(templated_message).run).to eq({
|
238
|
+
"From" => "sheldon@bigbangtheory.com",
|
239
|
+
"TemplateAlias" => "hello",
|
240
|
+
"TemplateModel" => {:name => "Sheldon"},
|
241
|
+
"To" => "lenard@bigbangtheory.com"})
|
243
242
|
end
|
244
243
|
|
245
244
|
context 'open tracking' do
|
@@ -345,7 +344,7 @@ describe Postmark::MailMessageConverter do
|
|
345
344
|
|
346
345
|
it 'converts multiple metadata fields' do
|
347
346
|
metadata = {}
|
348
|
-
10.times {
|
347
|
+
10.times {|i| metadata["test#{i + 1}"] = "t" * 80}
|
349
348
|
msg = mail_html_message
|
350
349
|
msg.metadata = metadata
|
351
350
|
expect(subject.new(msg).run).to include('Metadata' => metadata)
|
@@ -353,28 +352,26 @@ describe Postmark::MailMessageConverter do
|
|
353
352
|
end
|
354
353
|
|
355
354
|
it 'correctly decodes unicode in messages transfered as quoted-printable' do
|
356
|
-
subject.new(mail_message_quoted_printable).run.
|
357
|
-
include('TextBody' => 'Он здесь бывал: еще не в галифе.')
|
355
|
+
expect(subject.new(mail_message_quoted_printable).run).to include('TextBody' => 'Он здесь бывал: еще не в галифе.')
|
358
356
|
end
|
359
357
|
|
360
358
|
it 'correctly decodes unicode in multipart quoted-printable messages' do
|
361
|
-
subject.new(multipart_message_quoted_printable).run.
|
362
|
-
|
363
|
-
|
359
|
+
expect(subject.new(multipart_message_quoted_printable).run).to include(
|
360
|
+
'TextBody' => 'Загадочное послание.',
|
361
|
+
'HtmlBody' => '<b>Загадочное послание.</b>')
|
364
362
|
end
|
365
363
|
|
366
364
|
context 'when bcc is empty' do
|
367
365
|
it 'excludes bcc from message' do
|
368
366
|
mail_message.bcc = nil
|
369
|
-
mail_message.to_postmark_hash.keys.
|
367
|
+
expect(mail_message.to_postmark_hash.keys).not_to include('Bcc')
|
370
368
|
end
|
371
369
|
end
|
372
370
|
|
373
371
|
context 'when cc is empty' do
|
374
372
|
it 'excludes cc from message' do
|
375
373
|
mail_message.cc = nil
|
376
|
-
mail_message.to_postmark_hash.keys.
|
374
|
+
expect(mail_message.to_postmark_hash.keys).not_to include('Cc')
|
377
375
|
end
|
378
376
|
end
|
379
|
-
|
380
377
|
end
|