Seatbelt
Seatbelt provides a number of custom, high-level assertions for Ruby and Ruby on Rails. The assertions work well with Ruby 2.2.3.
Installation
Add this line to your application's Gemfile:
gem 'seatbelt'
And then execute:
$ bundle
Or install it yourself as:
$ gem install seatbelt
Usage
assert_json
Test your JSON strings
class MyActionTest < ActionController::TestCase
include AssertJson
def test_my_action
get :my_action, :format => 'json'
# => @response.body= '{"key":[{"inner_key1":"value1"},{"inner_key2":"value2"}]}'
assert_json @response.body do
has 'key' do
has 'inner_key1', 'value1'
has 'inner_key2', /lue2/
end
has_not 'key_not_included'
end
end
end
assert_mail
Test your Rails ActionMailer deliveries.
class MyTest < Test::Unit::TestCase
def test_mail
this_sends_an_email
assert_mail :to => 'recipient@email.com', :subject => 'the subject'
end
def test_with_block
assert_mail :to => 'recipient@email.com', :subject => 'the subject' do
assert_mail :to => 'another@email.com', :subject => 'used as regular expression' do
this_sends_two_emails
end
end
end
def test_the_mail_body
assert_mail :to => 'recipient@email.com', :body => ['part 1', 'part 2'] do
this_sends_an_email
end
end
def test_the_full_mail
assert_mail :from => 'sender@email.com',
:to => 'recipient@email.com',
:cc => 'cc@email.com',
:bcc => 'bcc@email.com',
:subject => 'subject',
:body => ['part 1', 'part 2'] do
this_sends_an_email
end
end
def test_crosscheck
refute_mail do
this_should_not_send_an_email
end
end
def test_other_crosscheck
assert_no_mail :to => 'dontwantemails@email.com' do
this_should_not_send_an_email
end
end
end
Changelog
Look at the CHANGELOG for details.
Authors
How to contribute
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Added some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request