mischa-email_spec 0.0.2 → 0.0.3

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.
data/Rakefile CHANGED
@@ -41,7 +41,15 @@ task :install_gem => [:clean, :package] do
41
41
  end
42
42
 
43
43
  # Testing
44
- task :features do
44
+
45
+ desc "Run the generator on the tests"
46
+ task :generate do
47
+ system "mkdir -p spec/rails_root/vendor/plugins/email_spec"
48
+ system "cp -R generators spec/rails_root/vendor/plugins/email_spec"
49
+ system "cd spec/rails_root; ./script/generate email_spec"
50
+ end
51
+
52
+ task :features => [:generate] do
45
53
  system("cd spec/rails_root; rake features; cd ../..")
46
54
  end
47
55
 
@@ -1,7 +1,5 @@
1
1
  # This generator adds email steps to the step definitions directory
2
2
  class EmailSpecGenerator < Rails::Generator::Base
3
- #DEFAULT_SHEBANG = File.join(Config::CONFIG['bindir'],
4
- # Config::CONFIG['ruby_install_name'])
5
3
  def manifest
6
4
  record do |m|
7
5
  m.directory 'features/step_definitions'
@@ -1,29 +1,26 @@
1
+ #Commonly used email steps
2
+
3
+ # Use this step to reset the e-mail queue within a scenario.
4
+ # This is done automatically before each scenario.
1
5
  Given /^(?:a clear email queue|no emails have been sent)$/ do
2
6
  reset_mailer
3
7
  end
4
8
 
5
- # Action
6
- #
9
+ # Use this step to open the most recently sent e-mail.
7
10
  When /^I open the email$/ do
8
- open_last_email.should_not be_nil
11
+ open_last_email
9
12
  end
10
13
 
11
- When /^I follow "(.*)" in the email$/ do |link_text|
12
- current_email.should_not be_nil
13
- link = parse_email_for_link(current_email, link_text)
14
- visit(link)
14
+ When /^I follow "(.*)" in the email$/ do |link|
15
+ visit_in_email(link)
15
16
  end
16
17
 
17
- When /^I click "(.*)" in the email$/ do |link_text|
18
- current_email.should_not be_nil
19
- link = parse_email_for_link(current_email, link_text)
20
- visit(link)
18
+ Then /^"([^']*?)" should receive (\d+) emails?$/ do |email, n|
19
+ unread_emails_for(email).size.should == n.to_i
21
20
  end
22
21
 
23
-
24
- # Verification
25
- Then /^"([^']*?)" should receive (\d+) emails?$/ do |email, n|
26
- unread_emails_for(email).size.should == n.to_i
22
+ Then /^I should receive (\d+) emails?$/ do |n|
23
+ unread_emails_for(current_email).size.should == n.to_i
27
24
  end
28
25
 
29
26
  Then /^"([^']*?)" should have (\d+) emails?$/ do |email, n|
@@ -35,13 +32,13 @@ Then /^"([^']*?)" should not receive an email$/ do |email|
35
32
  end
36
33
 
37
34
  Then /^I should see "(.*)" in the subject$/ do |text|
38
- raise ArgumentError, "To check the subject, you must first open an e-mail" if current_email.nil?
39
- current_email.should_not be_nil
35
+ # raise ArgumentError, "To check the subject, you must first open an e-mail" if current_email.nil?
36
+ # current_email.should_not be_nil
40
37
  current_email.subject.should =~ Regexp.new(text)
41
38
  end
42
39
 
43
40
  Then /^I should see "(.*)" in the email$/ do |text|
44
- current_email.should_not be_nil
41
+ # current_email.should_not be_nil
45
42
  current_email.body.should =~ Regexp.new(text)
46
43
  end
47
44
 
@@ -17,6 +17,10 @@ module EmailSpec
17
17
  def reset_mailer
18
18
  ActionMailer::Base.deliveries.clear
19
19
  end
20
+
21
+ def visit_in_email(link_text)
22
+ visit(parse_email_for_link(current_email, link_text))
23
+ end
20
24
 
21
25
  def open_email(email_address, opts={})
22
26
  if opts[:with_subject]
@@ -34,6 +38,7 @@ module EmailSpec
34
38
 
35
39
  def open_last_email
36
40
  email = ActionMailer::Base.deliveries.last
41
+ raise "Last email was nil" unless email #TODO: fix
37
42
  read_emails_for(email.to) << email if email
38
43
  @email_spec_hash[:current_emails][email.to] = email
39
44
  @email_spec_hash[:current_email] = email
@@ -62,7 +67,9 @@ module EmailSpec
62
67
  link_text
63
68
  elsif mail.body =~ %r{<a[^>]*href=['"]?([^'"]*)['"]?[^>]*?>[^<]*?#{link_text}[^<]*?</a>}
64
69
  # if it's an anchor tag
65
- URI.split($~[1])[5..-1].compact!.join("?")
70
+ URI.split($~[1])[5..-1].compact!.join("?").gsub("&amp;", "&")
71
+ # sub correct ampersand after rails switches it (http://dev.rubyonrails.org/ticket/4002)
72
+ # TODO: outsource this kind of parsing to webrat or someone else
66
73
  end
67
74
  end
68
75
  end
data/lib/email_spec.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module EmailSpec
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mischa-email_spec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Mabrey