Module: EmailSpec::Helpers
- Includes:
- Deliveries
- Defined in:
- lib/email_spec/helpers.rb
Instance Method Summary
collapse
#all_emails, #last_email_sent, #mailbox_for, #reset_mailer
#all_emails, #last_email_sent, #mailbox_for, #parse_to_tmail, #reset_mailer
Instance Method Details
#click_email_link_matching(regex, email = current_email) ⇒ Object
13
14
15
16
17
18
|
# File 'lib/email_spec/helpers.rb', line 13
def click_email_link_matching(regex, email = current_email)
url = links_in_email(email).detect { |link| link =~ regex }
raise "No link found matching #{regex.inspect} in #{email.body}" unless url
request_uri = URI::parse(url).request_uri
visit request_uri
end
|
#click_first_link_in_email(email = current_email) ⇒ Object
20
21
22
23
24
|
# File 'lib/email_spec/helpers.rb', line 20
def click_first_link_in_email(email = current_email)
link = links_in_email(email).first
request_uri = URI::parse(link).request_uri
visit request_uri
end
|
#current_email(address = nil) ⇒ Object
42
43
44
45
46
47
|
# File 'lib/email_spec/helpers.rb', line 42
def current_email(address=nil)
address = convert_address(address)
email = address ? email_spec_hash[:current_emails][address] : email_spec_hash[:current_email]
raise Spec::Expectations::ExpectationNotMetError, "Expected an open email but none was found. Did you forget to call open_email?" unless email
email
end
|
#find_email(address, opts = {}) ⇒ Object
59
60
61
62
63
64
65
66
67
68
|
# File 'lib/email_spec/helpers.rb', line 59
def find_email(address, opts={})
address = convert_address(address)
if opts[:with_subject]
email = mailbox_for(address).find { |m| m.subject =~ Regexp.new(opts[:with_subject]) }
elsif opts[:with_text]
email = mailbox_for(address).find { |m| m.body =~ Regexp.new(opts[:with_text]) }
else
email = mailbox_for(address).first
end
end
|
#links_in_email(email) ⇒ Object
70
71
72
|
# File 'lib/email_spec/helpers.rb', line 70
def links_in_email(email)
URI.(email.body, ['http', 'https'])
end
|
#open_email(address, opts = {}) ⇒ Object
Also known as:
open_email_for
26
27
28
29
|
# File 'lib/email_spec/helpers.rb', line 26
def open_email(address, opts={})
address = convert_address(address)
set_current_email(find_email!(address, opts))
end
|
#open_last_email ⇒ Object
33
34
35
|
# File 'lib/email_spec/helpers.rb', line 33
def open_last_email
set_current_email(last_email_sent)
end
|
#open_last_email_for(address) ⇒ Object
37
38
39
40
|
# File 'lib/email_spec/helpers.rb', line 37
def open_last_email_for(address)
address = convert_address(address)
set_current_email(mailbox_for(address).last)
end
|
#read_emails_for(address) ⇒ Object
54
55
56
57
|
# File 'lib/email_spec/helpers.rb', line 54
def read_emails_for(address)
address = convert_address(address)
email_spec_hash[:read_emails][address] ||= []
end
|
#unread_emails_for(address) ⇒ Object
49
50
51
52
|
# File 'lib/email_spec/helpers.rb', line 49
def unread_emails_for(address)
address = convert_address(address)
mailbox_for(address) - read_emails_for(address)
end
|
#visit_in_email(link_text) ⇒ Object
9
10
11
|
# File 'lib/email_spec/helpers.rb', line 9
def visit_in_email(link_text)
visit(parse_email_for_link(current_email, link_text))
end
|