bmabey-email_spec 0.3.0 → 0.3.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.
Files changed (26) hide show
  1. data/History.txt +12 -2
  2. data/Rakefile +16 -1
  3. data/examples/rails_root/app/controllers/{application.rb → application_controller.rb} +0 -0
  4. data/examples/rails_root/app/models/user_mailer.rb +1 -2
  5. data/examples/rails_root/config/boot.rb +1 -0
  6. data/examples/rails_root/config/environment.rb +2 -2
  7. data/examples/rails_root/config/environments/test.rb +6 -10
  8. data/examples/rails_root/features/errors.feature +31 -41
  9. data/examples/rails_root/features/example.feature +44 -41
  10. data/examples/rails_root/features/step_definitions/user_steps.rb +11 -8
  11. data/examples/rails_root/features/step_definitions/webrat_steps.rb +72 -39
  12. data/examples/rails_root/features/support/env.rb +15 -4
  13. data/examples/rails_root/features/support/paths.rb +21 -0
  14. data/examples/rails_root/script/cucumber +6 -4
  15. data/examples/rails_root/spec/models/user_mailer_spec.rb +3 -3
  16. data/examples/rails_root/spec/spec_helper.rb +1 -1
  17. data/lib/email_spec/deliveries.rb +0 -2
  18. data/lib/email_spec/helpers.rb +48 -31
  19. data/rails_generators/email_spec/templates/email_steps.rb +66 -30
  20. metadata +72 -83
  21. data/examples/rails_root/cucumber.yml +0 -1
  22. data/examples/rails_root/features/step_definitions/email_steps.rb +0 -86
  23. data/examples/rails_root/stories/all.rb +0 -4
  24. data/examples/rails_root/stories/helper.rb +0 -3
  25. data/examples/rails_root/vendor/plugins/email_spec/rails_generators/email_spec/email_spec_generator.rb +0 -17
  26. data/examples/rails_root/vendor/plugins/email_spec/rails_generators/email_spec/templates/email_steps.rb +0 -86
@@ -1,19 +1,30 @@
1
1
  # Sets up the Rails environment for Cucumber
2
- ENV["RAILS_ENV"] = "test"
2
+ ENV["RAILS_ENV"] ||= "test"
3
3
  require File.expand_path(File.dirname(__FILE__) + '/../../config/environment')
4
4
  require 'cucumber/rails/world'
5
+
6
+ # Comment out the next line if you don't want Cucumber Unicode support
7
+ require 'cucumber/formatter/unicode'
8
+
9
+ # Comment out the next line if you don't want transactions to
10
+ # open/roll back around each scenario
5
11
  Cucumber::Rails.use_transactional_fixtures
6
12
 
13
+ # Comment out the next line if you want Rails' own error handling
14
+ # (e.g. rescue_action_in_public / rescue_responses / rescue_from)
15
+ Cucumber::Rails.bypass_rescue
16
+
7
17
  require 'webrat'
8
- require 'cucumber/rails/rspec'
9
- require 'webrat/core/matchers'
18
+ require 'cucumber/webrat/table_locator' # Lets you do table.diff!(table_at('#my_table').to_a)
10
19
 
11
20
  Webrat.configure do |config|
12
21
  config.mode = :rails
13
22
  end
14
23
 
24
+ require 'cucumber/rails/rspec'
25
+ require 'webrat/core/matchers'
15
26
 
16
-
27
+ # email testing in cucumber
17
28
  require File.expand_path(File.dirname(__FILE__) + '../../../../../lib/email_spec')
18
29
  require 'email_spec/cucumber'
19
30
 
@@ -0,0 +1,21 @@
1
+ module NavigationHelpers
2
+ # Maps a name to a path. Used by the
3
+ #
4
+ # When /^I go to (.+)$/ do |page_name|
5
+ #
6
+ # step definition in webrat_steps.rb
7
+ #
8
+ def path_to(page_name)
9
+ case page_name
10
+
11
+ when /the homepage/
12
+ '/'
13
+
14
+ else
15
+ raise "Can't find mapping from \"#{page_name}\" to a path.\n" +
16
+ "Now, go and add a mapping in #{__FILE__}"
17
+ end
18
+ end
19
+ end
20
+
21
+ World(NavigationHelpers)
@@ -1,7 +1,9 @@
1
1
  #!/usr/bin/env ruby
2
2
  begin
3
3
  load File.expand_path(File.dirname(__FILE__) + "/../vendor/plugins/cucumber/bin/cucumber")
4
- rescue LoadError
5
- require "rubygems"
6
- load File.join(Gem.bindir, "cucumber")
7
- end
4
+ rescue LoadError => e
5
+ raise unless e.to_s =~ /cucumber/
6
+ require 'rubygems'
7
+ require 'cucumber'
8
+ load Cucumber::BINARY
9
+ end
@@ -3,12 +3,12 @@ require File.dirname(__FILE__) + '/../spec_helper'
3
3
  # These two example groups are specifying the exact same behavior. However, the documentation style is different
4
4
  # and the value that each one provides is different with various trade-offs. Run these examples with the specdoc
5
5
  # formatter to get an idea of how they differ.
6
-
7
6
  # Example of documenting the behaviour explicitly and expressing the intent in the example's sentence.
8
7
  describe "Signup Email" do
9
8
  include EmailSpec::Helpers
10
9
  include EmailSpec::Matchers
11
10
  include ActionController::UrlWriter
11
+ default_url_options = {:host => 'example.com'}
12
12
 
13
13
  before(:all) do
14
14
  @email = UserMailer.create_signup("jojo@yahoo.com", "Jojo Binks")
@@ -25,7 +25,7 @@ describe "Signup Email" do
25
25
  end
26
26
 
27
27
  it "should contain a link to the confirmation page" do
28
- @email.should have_body_text(/#{confirm_account_url}/)
28
+ @email.should have_body_text(/#{confirm_account_url(:host => 'example.com')}/)
29
29
  end
30
30
 
31
31
  it { should have_subject(/Account confirmation/) }
@@ -45,7 +45,7 @@ describe "Signup Email" do
45
45
 
46
46
  subject { @email }
47
47
 
48
- it { should have_body_text(/#{confirm_account_url}/) }
48
+ it { should have_body_text(/#{confirm_account_url(:host => 'example.com')}/) }
49
49
  it { should have_subject(/Account confirmation/) }
50
50
 
51
51
  describe "sent with email address of 'jojo@yahoo.com', and users name 'Jojo Binks'" do
@@ -6,7 +6,7 @@ require 'spec'
6
6
  require 'spec/rails'
7
7
 
8
8
  require File.expand_path(File.dirname(__FILE__) + "/model_factory.rb")
9
- require (Rails.root + '/../../lib/email_spec.rb')
9
+ require (RAILS_ROOT + '/../../lib/email_spec.rb')
10
10
 
11
11
  Spec::Runner.configure do |config|
12
12
  config.include(Fixjour)
@@ -13,7 +13,6 @@ module EmailSpec
13
13
  end
14
14
 
15
15
  def mailbox_for(address)
16
- address = AddressConverter.instance.convert(address)
17
16
  ActionMailer::Base.deliveries.select { |m| m.to.include?(address) || (m.bcc && m.bcc.include?(address)) || (m.cc && m.cc.include?(address)) }
18
17
  end
19
18
  end
@@ -36,7 +35,6 @@ module EmailSpec
36
35
  end
37
36
 
38
37
  def mailbox_for(address)
39
- address = AddressConverter.instance.convert(address)
40
38
  Email.all.select { |email| email.to.include?(address) || email.bcc.include?(address) || email.cc.include?(address) }.map{ |email| parse_to_tmail(email) }
41
39
  end
42
40
 
@@ -5,29 +5,28 @@ module EmailSpec
5
5
 
6
6
  module Helpers
7
7
  include Deliveries
8
-
8
+
9
9
  def visit_in_email(link_text)
10
10
  visit(parse_email_for_link(current_email, link_text))
11
11
  end
12
-
12
+
13
13
  def click_email_link_matching(regex, email = current_email)
14
14
  url = links_in_email(email).detect { |link| link =~ regex }
15
15
  raise "No link found matching #{regex.inspect} in #{email.body}" unless url
16
16
  request_uri = URI::parse(url).request_uri
17
17
  visit request_uri
18
18
  end
19
-
19
+
20
20
  def click_first_link_in_email(email = current_email)
21
21
  link = links_in_email(email).first
22
22
  request_uri = URI::parse(link).request_uri
23
23
  visit request_uri
24
24
  end
25
-
25
+
26
26
  def open_email(address, opts={})
27
- address = convert_address(address)
28
27
  set_current_email(find_email!(address, opts))
29
28
  end
30
-
29
+
31
30
  alias_method :open_email_for, :open_email
32
31
 
33
32
  def open_last_email
@@ -35,38 +34,35 @@ module EmailSpec
35
34
  end
36
35
 
37
36
  def open_last_email_for(address)
38
- address = convert_address(address)
39
37
  set_current_email(mailbox_for(address).last)
40
38
  end
41
-
39
+
42
40
  def current_email(address=nil)
43
41
  address = convert_address(address)
44
42
  email = address ? email_spec_hash[:current_emails][address] : email_spec_hash[:current_email]
45
- raise Spec::Expectations::ExpectationNotMetError, "Expected an open email but none was found. Did you forget to call open_email?" unless email
43
+ raise Spec::Expectations::ExpectationNotMetError, "Expected an open email but none was found. Did you forget to call open_email?" unless email
46
44
  email
47
45
  end
48
-
46
+
49
47
  def unread_emails_for(address)
50
- address = convert_address(address)
51
48
  mailbox_for(address) - read_emails_for(address)
52
49
  end
53
-
50
+
54
51
  def read_emails_for(address)
55
- address = convert_address(address)
56
- email_spec_hash[:read_emails][address] ||= []
52
+ email_spec_hash[:read_emails][convert_address(address)] ||= []
57
53
  end
58
-
54
+
59
55
  def find_email(address, opts={})
60
56
  address = convert_address(address)
61
- if opts[:with_subject]
62
- email = mailbox_for(address).find { |m| m.subject =~ Regexp.new(opts[:with_subject]) }
57
+ if opts[:with_subject]
58
+ mailbox_for(address).find { |m| m.subject =~ Regexp.new(opts[:with_subject]) }
63
59
  elsif opts[:with_text]
64
- email = mailbox_for(address).find { |m| m.body =~ Regexp.new(opts[:with_text]) }
60
+ mailbox_for(address).find { |m| m.body =~ Regexp.new(opts[:with_text]) }
65
61
  else
66
- email = mailbox_for(address).first
62
+ mailbox_for(address).first
67
63
  end
68
64
  end
69
-
65
+
70
66
  def links_in_email(email)
71
67
  URI.extract(email.body, ['http', 'https'])
72
68
  end
@@ -78,7 +74,6 @@ module EmailSpec
78
74
  end
79
75
 
80
76
  def find_email!(address, opts={})
81
- address = convert_address(address)
82
77
  email = find_email(address, opts)
83
78
  if email.nil?
84
79
  error = "#{opts.keys.first.to_s.humanize unless opts.empty?} #{('"' + opts.values.first.to_s.humanize + '"') unless opts.empty?}"
@@ -90,43 +85,65 @@ module EmailSpec
90
85
  def set_current_email(email)
91
86
  return unless email
92
87
  email.to.each do |to|
93
- read_emails_for(to) << email
88
+ read_emails_for(to) << email
94
89
  email_spec_hash[:current_emails][to] = email
95
90
  end
96
91
  email_spec_hash[:current_email] = email
97
92
  end
98
-
93
+
99
94
  def parse_email_for_link(email, text_or_regex)
100
95
  email.should have_body_text(text_or_regex)
101
-
102
- url = parse_email_for_explicit_link(email, text_or_regex)
96
+
97
+ url = parse_email_for_explicit_link(email, text_or_regex)
103
98
  url ||= parse_email_for_anchor_text_link(email, text_or_regex)
104
99
 
105
100
  raise "No link found matching #{text_or_regex.inspect} in #{email}" unless url
106
101
  url
107
102
  end
108
-
103
+
109
104
  # e.g. confirm in http://confirm
110
105
  def parse_email_for_explicit_link(email, regex)
111
106
  regex = /#{Regexp.escape(regex)}/ unless regex.is_a?(Regexp)
112
107
  url = links_in_email(email).detect { |link| link =~ regex }
113
108
  URI::parse(url).request_uri if url
114
109
  end
115
-
110
+
116
111
  # e.g. Click here in <a href="http://confirm">Click here</a>
117
112
  def parse_email_for_anchor_text_link(email, link_text)
118
113
  email.body =~ %r{<a[^>]*href=['"]?([^'"]*)['"]?[^>]*?>[^<]*?#{link_text}[^<]*?</a>}
119
114
  URI.split($~[1])[5..-1].compact!.join("?").gsub("&amp;", "&")
120
- # sub correct ampersand after rails switches it (http://dev.rubyonrails.org/ticket/4002)
115
+ # sub correct ampersand after rails switches it (http://dev.rubyonrails.org/ticket/4002)
121
116
  end
122
117
 
118
+ def parse_email_count(amount)
119
+ case amount
120
+ when "no"
121
+ 0
122
+ when "an"
123
+ 1
124
+ else
125
+ amount.to_i
126
+ end
127
+ end
123
128
 
124
129
  attr_reader :last_email_address
125
-
130
+
126
131
  def convert_address(address)
127
- @last_email_address = address
128
- AddressConverter.instance.convert(address)
132
+ @last_email_address = (address || current_email_address)
133
+ AddressConverter.instance.convert(@last_email_address)
134
+ end
135
+
136
+
137
+ def mailbox_for(address)
138
+ super(convert_address(address)) # super resides in Deliveries
129
139
  end
140
+
141
+ def email_spec_deprecate(text)
142
+ puts ""
143
+ puts "DEPRECATION: #{text.split.join(' ')}"
144
+ puts ""
145
+ end
146
+
130
147
  end
131
148
  end
132
149
 
@@ -1,9 +1,10 @@
1
- #Commonly used email steps
1
+ # Commonly used email steps
2
2
  #
3
3
  # To add your own steps make a custom_email_steps.rb
4
4
  # The provided methods are:
5
5
  #
6
- # reset_mailer
6
+ # last_email_address
7
+ # reset_mailer
7
8
  # open_last_email
8
9
  # visit_in_email
9
10
  # unread_emails_for
@@ -12,6 +13,16 @@
12
13
  # open_email
13
14
  # read_emails_for
14
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.
15
26
 
16
27
  module EmailHelpers
17
28
  def current_email_address
@@ -21,63 +32,88 @@ module EmailHelpers
21
32
  last_email_address || "example@example.com"
22
33
  end
23
34
  end
35
+
24
36
  World(EmailHelpers)
25
37
 
26
- # Use this step to reset the e-mail queue within a scenario.
38
+ #
39
+ # Reset the e-mail queue within a scenario.
27
40
  # This is done automatically before each scenario.
41
+ #
42
+
28
43
  Given /^(?:a clear email queue|no emails have been sent)$/ do
29
44
  reset_mailer
30
45
  end
31
46
 
32
- # Use this step to open the most recently sent e-mail.
33
- When /^(?:I|they) open the email$/ do
34
- open_email(current_email_address)
35
- end
47
+ #
48
+ # Check how many emails have been sent/received
49
+ #
36
50
 
37
- When %r{^(?:I|they) follow "([^"]*?)" in the email$} do |link|
38
- visit_in_email(link)
51
+ Then /^(?:I|they|"([^"]*?)") should receive (an|no|\d+) emails?$/ do |address, amount|
52
+ unread_emails_for(address).size.should == parse_email_count(amount)
39
53
  end
40
54
 
41
- Then /^(?:I|they) should receive (an|\d+) emails?$/ do |amount|
42
- amount = 1 if amount == "an"
43
- unread_emails_for(current_email_address).size.should == amount.to_i
55
+ Then /^(?:I|they|"([^"]*?)") should have (an|no|\d+) emails?$/ do |address, amount|
56
+ mailbox_for(address).size.should == parse_email_count(amount)
44
57
  end
45
58
 
46
- Then /^(?:I|they) should not receive any emails?$/ do
47
- unread_emails_for(current_email_address).size.should == 0
59
+ # DEPRECATED
60
+ # The following methods are left in for backwards compatibility and
61
+ # should be removed by version 0.3.5.
62
+ Then /^(?:I|they|"([^"]*?)") should not receive an email$/ do |address|
63
+ email_spec_deprecate "The step 'I/they/[email] should not receive an email' is no longer supported.
64
+ Please use 'I/they/[email] should receive no emails' instead."
65
+ unread_emails_for(address).size.should == 0
48
66
  end
49
67
 
50
- Then %r{^"([^"]*?)" should receive (an|\d+) emails?$} do |address, amount|
51
- amount = 1 if amount == "an"
52
- unread_emails_for(address).size.should == amount.to_i
68
+ #
69
+ # Accessing emails
70
+ #
71
+
72
+ # Opens the most recently received email
73
+ When /^(?:I|they|"([^"]*?)") opens? the email$/ do |address|
74
+ open_email(address)
53
75
  end
54
76
 
55
- Then %r{^"([^"]*?)" should have (\d+) emails?$} do |address, n|
56
- mailbox_for(address).size.should == n.to_i
77
+ When /^(?:I|they|"([^"]*?)") opens? the email with subject "([^"]*?)"$/ do |address, subject|
78
+ open_email(address, :with_subject => subject)
57
79
  end
58
80
 
59
- Then %r{^"([^"]*?)" should not receive an email$} do |address|
60
- find_email(address).should be_nil
81
+ When /^(?:I|they|"([^"]*?)") opens? the email with text "([^"]*?)"$/ do |address, text|
82
+ open_email(address, :with_text => text)
61
83
  end
62
84
 
63
- Then %r{^(?:I|they) should see "([^"]*?)" in the subject$} do |text|
85
+ #
86
+ # Inspect the Email Contents
87
+ #
88
+
89
+ Then /^(?:I|they) should see "([^"]*?)" in the email subject$/ do |text|
64
90
  current_email.should have_subject(Regexp.new(text))
65
91
  end
66
92
 
67
- Then %r{^(?:I|they) should see "([^"]*?)" in the email$} do |text|
93
+ Then /^(?:I|they) should see "([^"]*?)" in the email body$/ do |text|
68
94
  current_email.body.should =~ Regexp.new(text)
69
95
  end
70
96
 
71
- When %r{^"([^"]*?)" opens? the email$} do |address|
72
- open_email(address)
97
+ # DEPRECATED
98
+ # The following methods are left in for backwards compatibility and
99
+ # should be removed by version 0.3.5.
100
+ Then /^(?:I|they) should see "([^"]*?)" in the subject$/ do |text|
101
+ email_spec_deprecate "The step 'I/they should see [text] in the subject' is no longer supported.
102
+ Please use 'I/they should see [text] in the email subject' instead."
103
+ current_email.should have_subject(Regexp.new(text))
73
104
  end
74
-
75
- When %r{^"([^"]*?)" opens? the email with subject "([^"]*?)"$} do |address, subject|
76
- open_email(address, :with_subject => subject)
105
+ Then /^(?:I|they) should see "([^"]*?)" in the email$/ do |text|
106
+ email_spec_deprecate "The step 'I/they should see [text] in the email' is no longer supported.
107
+ Please use 'I/they should see [text] in the email body' instead."
108
+ current_email.body.should =~ Regexp.new(text)
77
109
  end
78
110
 
79
- When %r{^"([^"]*?)" opens? the email with text "([^"]*?)"$} do |address, text|
80
- open_email(address, :with_text => text)
111
+ #
112
+ # Interact with Email Contents
113
+ #
114
+
115
+ When /^(?:I|they) follow "([^"]*?)" in the email$/ do |link|
116
+ visit_in_email(link)
81
117
  end
82
118
 
83
119
  When /^(?:I|they) click the first link in the email$/ do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bmabey-email_spec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Mabey
@@ -11,7 +11,7 @@ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
13
 
14
- date: 2009-08-13 00:00:00 -07:00
14
+ date: 2009-08-19 00:00:00 -07:00
15
15
  default_executable:
16
16
  dependencies: []
17
17
 
@@ -29,78 +29,6 @@ files:
29
29
  - MIT-LICENSE.txt
30
30
  - README.rdoc
31
31
  - Rakefile
32
- - examples/rails_root/Rakefile
33
- - examples/rails_root/app/controllers/application.rb
34
- - examples/rails_root/app/controllers/welcome_controller.rb
35
- - examples/rails_root/app/helpers/application_helper.rb
36
- - examples/rails_root/app/helpers/welcome_helper.rb
37
- - examples/rails_root/app/models/user.rb
38
- - examples/rails_root/app/models/user_mailer.rb
39
- - examples/rails_root/app/views/user_mailer/signup.erb
40
- - examples/rails_root/app/views/welcome/confirm.html.erb
41
- - examples/rails_root/app/views/welcome/index.html.erb
42
- - examples/rails_root/app/views/welcome/signup.html.erb
43
- - examples/rails_root/config/boot.rb
44
- - examples/rails_root/config/database.yml
45
- - examples/rails_root/config/environment.rb
46
- - examples/rails_root/config/environments/development.rb
47
- - examples/rails_root/config/environments/production.rb
48
- - examples/rails_root/config/environments/test.rb
49
- - examples/rails_root/config/initializers/inflections.rb
50
- - examples/rails_root/config/initializers/mime_types.rb
51
- - examples/rails_root/config/initializers/new_rails_defaults.rb
52
- - examples/rails_root/config/routes.rb
53
- - examples/rails_root/cucumber.yml
54
- - examples/rails_root/db/migrate/20090125013728_create_users.rb
55
- - examples/rails_root/db/schema.rb
56
- - examples/rails_root/doc/README_FOR_APP
57
- - examples/rails_root/features/errors.feature
58
- - examples/rails_root/features/example.feature
59
- - examples/rails_root/features/step_definitions/email_steps.rb
60
- - examples/rails_root/features/step_definitions/user_steps.rb
61
- - examples/rails_root/features/step_definitions/webrat_steps.rb
62
- - examples/rails_root/features/support/env.rb
63
- - examples/rails_root/public/404.html
64
- - examples/rails_root/public/422.html
65
- - examples/rails_root/public/500.html
66
- - examples/rails_root/public/dispatch.rb
67
- - examples/rails_root/public/favicon.ico
68
- - examples/rails_root/public/images/rails.png
69
- - examples/rails_root/public/javascripts/application.js
70
- - examples/rails_root/public/javascripts/controls.js
71
- - examples/rails_root/public/javascripts/dragdrop.js
72
- - examples/rails_root/public/javascripts/effects.js
73
- - examples/rails_root/public/javascripts/prototype.js
74
- - examples/rails_root/public/robots.txt
75
- - examples/rails_root/script/about
76
- - examples/rails_root/script/autospec
77
- - examples/rails_root/script/console
78
- - examples/rails_root/script/cucumber
79
- - examples/rails_root/script/dbconsole
80
- - examples/rails_root/script/destroy
81
- - examples/rails_root/script/generate
82
- - examples/rails_root/script/performance/benchmarker
83
- - examples/rails_root/script/performance/profiler
84
- - examples/rails_root/script/performance/request
85
- - examples/rails_root/script/plugin
86
- - examples/rails_root/script/process/inspector
87
- - examples/rails_root/script/process/reaper
88
- - examples/rails_root/script/process/spawner
89
- - examples/rails_root/script/runner
90
- - examples/rails_root/script/server
91
- - examples/rails_root/script/spec
92
- - examples/rails_root/script/spec_server
93
- - examples/rails_root/spec/controllers/welcome_controller_spec.rb
94
- - examples/rails_root/spec/model_factory.rb
95
- - examples/rails_root/spec/models/user_mailer_spec.rb
96
- - examples/rails_root/spec/models/user_spec.rb
97
- - examples/rails_root/spec/rcov.opts
98
- - examples/rails_root/spec/spec.opts
99
- - examples/rails_root/spec/spec_helper.rb
100
- - examples/rails_root/stories/all.rb
101
- - examples/rails_root/stories/helper.rb
102
- - examples/rails_root/vendor/plugins/email_spec/rails_generators/email_spec/email_spec_generator.rb
103
- - examples/rails_root/vendor/plugins/email_spec/rails_generators/email_spec/templates/email_steps.rb
104
32
  - install.rb
105
33
  - lib/email-spec.rb
106
34
  - lib/email_spec.rb
@@ -112,9 +40,6 @@ files:
112
40
  - lib/email_spec/matchers.rb
113
41
  - rails_generators/email_spec/email_spec_generator.rb
114
42
  - rails_generators/email_spec/templates/email_steps.rb
115
- - spec/email_spec/matchers_spec.rb
116
- - spec/spec.opts
117
- - spec/spec_helper.rb
118
43
  has_rdoc: false
119
44
  homepage: http://github.com/bmabey/email-spec/
120
45
  licenses:
@@ -143,36 +68,100 @@ signing_key:
143
68
  specification_version: 3
144
69
  summary: Easily test email in rspec and cucumber
145
70
  test_files:
71
+ - spec/email_spec
146
72
  - spec/email_spec/matchers_spec.rb
73
+ - spec/spec.opts
147
74
  - spec/spec_helper.rb
148
- - examples/rails_root/app/controllers/application.rb
75
+ - examples/rails_root
76
+ - examples/rails_root/app
77
+ - examples/rails_root/app/controllers
78
+ - examples/rails_root/app/controllers/application_controller.rb
149
79
  - examples/rails_root/app/controllers/welcome_controller.rb
80
+ - examples/rails_root/app/helpers
150
81
  - examples/rails_root/app/helpers/application_helper.rb
151
82
  - examples/rails_root/app/helpers/welcome_helper.rb
83
+ - examples/rails_root/app/models
152
84
  - examples/rails_root/app/models/user.rb
153
85
  - examples/rails_root/app/models/user_mailer.rb
86
+ - examples/rails_root/app/views
87
+ - examples/rails_root/app/views/user_mailer
88
+ - examples/rails_root/app/views/user_mailer/signup.erb
89
+ - examples/rails_root/app/views/welcome
90
+ - examples/rails_root/app/views/welcome/confirm.html.erb
91
+ - examples/rails_root/app/views/welcome/index.html.erb
92
+ - examples/rails_root/app/views/welcome/signup.html.erb
93
+ - examples/rails_root/config
154
94
  - examples/rails_root/config/boot.rb
95
+ - examples/rails_root/config/database.yml
155
96
  - examples/rails_root/config/environment.rb
97
+ - examples/rails_root/config/environments
156
98
  - examples/rails_root/config/environments/development.rb
157
99
  - examples/rails_root/config/environments/production.rb
158
100
  - examples/rails_root/config/environments/test.rb
101
+ - examples/rails_root/config/initializers
159
102
  - examples/rails_root/config/initializers/inflections.rb
160
103
  - examples/rails_root/config/initializers/mime_types.rb
161
104
  - examples/rails_root/config/initializers/new_rails_defaults.rb
162
105
  - examples/rails_root/config/routes.rb
106
+ - examples/rails_root/db
107
+ - examples/rails_root/db/migrate
163
108
  - examples/rails_root/db/migrate/20090125013728_create_users.rb
164
109
  - examples/rails_root/db/schema.rb
165
- - examples/rails_root/features/step_definitions/email_steps.rb
110
+ - examples/rails_root/doc
111
+ - examples/rails_root/doc/README_FOR_APP
112
+ - examples/rails_root/features
113
+ - examples/rails_root/features/errors.feature
114
+ - examples/rails_root/features/example.feature
115
+ - examples/rails_root/features/step_definitions
166
116
  - examples/rails_root/features/step_definitions/user_steps.rb
167
117
  - examples/rails_root/features/step_definitions/webrat_steps.rb
118
+ - examples/rails_root/features/support
168
119
  - examples/rails_root/features/support/env.rb
120
+ - examples/rails_root/features/support/paths.rb
121
+ - examples/rails_root/public
122
+ - examples/rails_root/public/404.html
123
+ - examples/rails_root/public/422.html
124
+ - examples/rails_root/public/500.html
169
125
  - examples/rails_root/public/dispatch.rb
126
+ - examples/rails_root/public/favicon.ico
127
+ - examples/rails_root/public/images
128
+ - examples/rails_root/public/images/rails.png
129
+ - examples/rails_root/public/javascripts
130
+ - examples/rails_root/public/javascripts/application.js
131
+ - examples/rails_root/public/javascripts/controls.js
132
+ - examples/rails_root/public/javascripts/dragdrop.js
133
+ - examples/rails_root/public/javascripts/effects.js
134
+ - examples/rails_root/public/javascripts/prototype.js
135
+ - examples/rails_root/public/robots.txt
136
+ - examples/rails_root/Rakefile
137
+ - examples/rails_root/script
138
+ - examples/rails_root/script/about
139
+ - examples/rails_root/script/autospec
140
+ - examples/rails_root/script/console
141
+ - examples/rails_root/script/cucumber
142
+ - examples/rails_root/script/dbconsole
143
+ - examples/rails_root/script/destroy
144
+ - examples/rails_root/script/generate
145
+ - examples/rails_root/script/performance
146
+ - examples/rails_root/script/performance/benchmarker
147
+ - examples/rails_root/script/performance/profiler
148
+ - examples/rails_root/script/performance/request
149
+ - examples/rails_root/script/plugin
150
+ - examples/rails_root/script/process
151
+ - examples/rails_root/script/process/inspector
152
+ - examples/rails_root/script/process/reaper
153
+ - examples/rails_root/script/process/spawner
154
+ - examples/rails_root/script/runner
155
+ - examples/rails_root/script/server
156
+ - examples/rails_root/script/spec
157
+ - examples/rails_root/script/spec_server
158
+ - examples/rails_root/spec
159
+ - examples/rails_root/spec/controllers
170
160
  - examples/rails_root/spec/controllers/welcome_controller_spec.rb
171
161
  - examples/rails_root/spec/model_factory.rb
162
+ - examples/rails_root/spec/models
172
163
  - examples/rails_root/spec/models/user_mailer_spec.rb
173
164
  - examples/rails_root/spec/models/user_spec.rb
165
+ - examples/rails_root/spec/rcov.opts
166
+ - examples/rails_root/spec/spec.opts
174
167
  - examples/rails_root/spec/spec_helper.rb
175
- - examples/rails_root/stories/all.rb
176
- - examples/rails_root/stories/helper.rb
177
- - examples/rails_root/vendor/plugins/email_spec/rails_generators/email_spec/email_spec_generator.rb
178
- - examples/rails_root/vendor/plugins/email_spec/rails_generators/email_spec/templates/email_steps.rb