postmark 1.18.0 → 1.19.0
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/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
|