email_spec 2.1.1 → 2.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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