email_spec 2.1.1 → 2.2.1

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,226 +0,0 @@
1
- # Commonly used email steps
2
- #
3
- # To add your own steps make a custom_email_steps.rb
4
- # The provided methods are:
5
- #
6
- # last_email_address
7
- # reset_mailer
8
- # open_last_email
9
- # visit_in_email
10
- # unread_emails_for
11
- # mailbox_for
12
- # current_email
13
- # open_email
14
- # read_emails_for
15
- # find_email
16
- #
17
- # General form for email scenarios are:
18
- # - clear the email queue (done automatically by email_spec)
19
- # - execute steps that sends an email
20
- # - check the user received an/no/[0-9] emails
21
- # - open the email
22
- # - inspect the email contents
23
- # - interact with the email (e.g. click links)
24
- #
25
- # The Cucumber steps below are setup in this order.
26
-
27
- module EmailHelpers
28
- def current_email_address
29
- # Replace with your a way to find your current email. e.g @current_user.email
30
- # last_email_address will return the last email address used by email spec to find an email.
31
- # Note that last_email_address will be reset after each Scenario.
32
- last_email_address || "example@example.com"
33
- end
34
- end
35
-
36
- World(EmailHelpers)
37
-
38
- #
39
- # Reset the e-mail queue within a scenario.
40
- # This is done automatically before each scenario.
41
- #
42
-
43
- Given /^(?:a clear email queue|no emails have been sent)$/ do
44
- reset_mailer
45
- end
46
-
47
- #
48
- # Check how many emails have been sent/received
49
- #
50
-
51
- Then /^(?:I|they|"([^"]*?)") should receive (an|no|\d+) emails?$/ do |address, amount|
52
- expect(unread_emails_for(address).size).to eql parse_email_count(amount)
53
- end
54
-
55
- Then /^(?:I|they|"([^"]*?)") should have (an|no|\d+) emails?$/ do |address, amount|
56
- expect(mailbox_for(address).size).to eql parse_email_count(amount)
57
- end
58
-
59
- Then /^(?:I|they|"([^"]*?)") should receive (an|no|\d+) emails? with subject "([^"]*?)"$/ do |address, amount, subject|
60
- expect(unread_emails_for(address).select { |m| m.subject =~ Regexp.new(Regexp.escape(subject)) }.size).to eql parse_email_count(amount)
61
- end
62
-
63
- Then /^(?:I|they|"([^"]*?)") should receive (an|no|\d+) emails? with subject \/([^"]*?)\/$/ do |address, amount, subject|
64
- expect(unread_emails_for(address).select { |m| m.subject =~ Regexp.new(subject) }.size).to eql parse_email_count(amount)
65
- end
66
-
67
- Then /^(?:I|they|"([^"]*?)") should receive an email with the following body:$/ do |address, expected_body|
68
- open_email(address, :with_text => expected_body)
69
- end
70
-
71
- #
72
- # Accessing emails
73
- #
74
-
75
- # Opens the most recently received email
76
- When /^(?:I|they|"([^"]*?)") opens? the email$/ do |address|
77
- open_email(address)
78
- end
79
-
80
- When /^(?:I|they|"([^"]*?)") opens? the email with subject "([^"]*?)"$/ do |address, subject|
81
- open_email(address, :with_subject => subject)
82
- end
83
-
84
- When /^(?:I|they|"([^"]*?)") opens? the email with subject \/([^"]*?)\/$/ do |address, subject|
85
- open_email(address, :with_subject => Regexp.new(subject))
86
- end
87
-
88
- When /^(?:I|they|"([^"]*?)") opens? the email with text "([^"]*?)"$/ do |address, text|
89
- open_email(address, :with_text => text)
90
- end
91
-
92
- When /^(?:I|they|"([^"]*?)") opens? the email with text \/([^"]*?)\/$/ do |address, text|
93
- open_email(address, :with_text => Regexp.new(text))
94
- end
95
-
96
- #
97
- # Inspect the Email Contents
98
- #
99
-
100
- Then /^(?:I|they) should see "([^"]*?)" in the email subject$/ do |text|
101
- expect(current_email).to have_subject(text)
102
- end
103
-
104
- Then /^(?:I|they) should see \/([^"]*?)\/ in the email subject$/ do |text|
105
- expect(current_email).to have_subject(Regexp.new(text))
106
- end
107
-
108
- Then /^(?:I|they) should not see "([^"]*?)" in the email subject$/ do |text|
109
- expect(current_email).not_to have_subject(text)
110
- end
111
-
112
- Then /^(?:I|they) should not see \/([^"]*?)\/ in the email subject$/ do |text|
113
- expect(current_email).not_to have_subject(Regexp.new(text))
114
- end
115
-
116
- Then /^(?:I|they) should see "([^"]*?)" in the email body$/ do |text|
117
- expect(current_email.default_part_body.to_s).to include(text)
118
- end
119
-
120
- Then /^(?:I|they) should not see "([^"]*?)" in the email body$/ do |text|
121
- expect(current_email.default_part_body.to_s).not_to include(text)
122
- end
123
-
124
- Then /^(?:I|they) should see \/([^"]*?)\/ in the email body$/ do |text|
125
- expect(current_email.default_part_body.to_s).to match Regexp.new(text)
126
- end
127
-
128
- Then /^(?:I|they) should not see \/([^"]*?)\/ in the email body$/ do |text|
129
- expect(current_email.default_part_body.to_s).not_to match Regexp.new(text)
130
- end
131
-
132
- Then /^(?:I|they) should see the email delivered from "([^"]*?)"$/ do |text|
133
- expect(current_email).to be_delivered_from(text)
134
- end
135
-
136
- Then /^(?:I|they) should see the email reply to "([^"]*?)"$/ do |text|
137
- expect(current_email).to have_reply_to(text)
138
- end
139
-
140
- Then /^(?:I|they) should see "([^\"]*)" in the email "([^"]*?)" header$/ do |text, name|
141
- expect(current_email).to have_header(name, text)
142
- end
143
-
144
- Then /^(?:I|they) should see \/([^\"]*)\/ in the email "([^"]*?)" header$/ do |text, name|
145
- expect(current_email).to have_header(name, Regexp.new(text))
146
- end
147
-
148
- Then /^I should see it is a multi\-part email$/ do
149
- expect(current_email).to be_multipart
150
- end
151
-
152
- Then /^(?:I|they) should see "([^"]*?)" in the email html part body$/ do |text|
153
- expect(current_email.html_part.body.to_s).to include(text)
154
- end
155
-
156
- Then /^(?:I|they) should see "([^"]*?)" in the email text part body$/ do |text|
157
- expect(current_email.text_part.body.to_s).to include(text)
158
- end
159
-
160
- #
161
- # Inspect the Email Attachments
162
- #
163
-
164
- Then /^(?:I|they) should see (an|no|\d+) attachments? with the email$/ do |amount|
165
- expect(current_email_attachments.size).to eql parse_email_count(amount)
166
- end
167
-
168
- Then /^there should be (an|no|\d+) attachments? named "([^"]*?)"$/ do |amount, filename|
169
- expect(current_email_attachments.select { |a| a.filename == filename }.size).to eql parse_email_count(amount)
170
- end
171
-
172
- Then /^attachment (\d+) should be named "([^"]*?)"$/ do |index, filename|
173
- expect(current_email_attachments[(index.to_i - 1)].filename).to eql filename
174
- end
175
-
176
- Then /^there should be (an|no|\d+) attachments? of type "([^"]*?)"$/ do |amount, content_type|
177
- expect(current_email_attachments.select { |a| a.content_type.include?(content_type) }.size).to eql parse_email_count(amount)
178
- end
179
-
180
- Then /^attachment (\d+) should be of type "([^"]*?)"$/ do |index, content_type|
181
- expect(current_email_attachments[(index.to_i - 1)].content_type).to include(content_type)
182
- end
183
-
184
- Then /^all attachments should not be blank$/ do
185
- current_email_attachments.each do |attachment|
186
- expect(attachment.read.size).to_not eql 0
187
- end
188
- end
189
-
190
- Then /^show me a list of email attachments$/ do
191
- EmailSpec::EmailViewer::save_and_open_email_attachments_list(current_email)
192
- end
193
-
194
- #
195
- # Interact with Email Contents
196
- #
197
-
198
- When /^(?:I|they|"([^"]*?)") follows? "([^"]*?)" in the email$/ do |address, link|
199
- visit_in_email(link, address)
200
- end
201
-
202
- When /^(?:I|they) click the first link in the email$/ do
203
- click_first_link_in_email
204
- end
205
-
206
- #
207
- # Debugging
208
- # These only work with Rails and OSx ATM since EmailViewer uses RAILS_ROOT and OSx's 'open' command.
209
- # Patches accepted. ;)
210
- #
211
-
212
- Then /^save and open current email$/ do
213
- EmailSpec::EmailViewer::save_and_open_email(current_email)
214
- end
215
-
216
- Then /^save and open all text emails$/ do
217
- EmailSpec::EmailViewer::save_and_open_all_text_emails
218
- end
219
-
220
- Then /^save and open all html emails$/ do
221
- EmailSpec::EmailViewer::save_and_open_all_html_emails
222
- end
223
-
224
- Then /^save and open all raw emails$/ do
225
- EmailSpec::EmailViewer::save_and_open_all_raw_emails
226
- end
File without changes