Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
= Email Spec
A collection of RSpec matchers and Cucumber steps to make testing emails go smoothly.
== Setup
script/plugin install git://github.com/bmabey/email-spec.git
=== Gem Setup
gem install bmabey-email_spec
config.gem 'bmabey-email_spec', :lib => 'email_spec'
=== Cucumber
To use the steps in features put the following in your env.rb:
require 'email_spec/cucumber'
This will load all the helpers that the steps rely on. It will also add a Before hook for Cucumber so that emails are cleared at the start of each scenario.
Then:
script/generate email_spec
This will give you a bunch of steps to get started with in step_definitions/email_steps.rb
=== RSpec
First you need to require the helpers and matchers in your spec_helper.rb like so:
require "email_spec/helpers" require "email_spec/matchers"
You will then need to include EmailSpec::Helpers and EmailSpec::Matchers in your example groups. If you want to have access to the helpers and matchers in all of your examples you can do the following in your spec_helper.rb:
Spec::Runner.configure do |config| config.include(EmailSpec::Helpers) config.include(EmailSpec::Matchers) end
Otherwise, you will need to include them in the example groups you wish to use them:
describe "Signup Email" do include EmailSpec::Helpers include EmailSpec::Matchers ... end
== Usage
=== Cucumber
Scenario: A new person signs up Given I am at "/" When I fill in "Email" with "quentin@example.com" And I press "Sign up" And I should receive an email When I open the email Then I should see "confirm" in the email When I follow "confirm" in the email Then I should see "Confirm your new account"
For more examples, check out examples/rails_root in the source for a small example app that implements these steps.
=== RSpec
==== Testing In Isolation ==== It is often useful to test your mailers in isolation. You can accomplish this by using mocks to verify that the mailer is being called in the correct place and then write focued examples for the actual mailer. This is a simple example from the sample app found in the gem:
Verify that the mailer is used correctly in the controller (this would apply to a model as well):
describe "POST /signup (#signup)" do
it "should deliver the signup email" do
# expect
UserMailer.should_receive(:deliver_signup).with("email@example.com", "Jimmy Bean")
# when
post :signup, "Email" => "email@example.com", "Name" => "Jimmy Bean"
end
end
Examples for the #signup method in UserMailer:
describe "Signup Email" do
include EmailSpec::Helpers
include EmailSpec::Matchers
include ActionController::UrlWriter
before(:all) do
@email = UserMailer.create_signup("jojo@yahoo.com", "Jojo Binks")
end
it "should be set to be delivered to the email passed in" do
@email.should deliver_to("jojo@yahoo.com")
end
it "should contain the user's message in the mail body" do
@email.should have_text(/Jojo Binks/)
end
it "should contain a link to the confirmation link" do
@email.should have_text(/#{confirm_account_url}/)
end
it "should have the correct subject" do
@email.should have_subject(/Account confirmation/)
end
end
==== Using the helpers when not testing in isolation ====
Don't. :) Seriously, if you do just take a look at the helpers and use them as you wish.
== Original Authors
Ben Mabey, Aaron Gibralter, Mischa Fierer
Please see History.txt for upcoming changsets and other contributors.
FAQs
Unknown package
We found that rainchen-email_spec demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.