Seatbelt

Build Status Code Climate

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 => '[email protected]', :subject => 'the subject'
  end

  def test_with_block
    assert_mail :to => '[email protected]', :subject => 'the subject' do
      assert_mail :to => '[email protected]', :subject => 'used as regular expression' do
        this_sends_two_emails
      end
    end
  end

  def test_the_mail_body
    assert_mail :to => '[email protected]', :body => ['part 1', 'part 2'] do
      this_sends_an_email
    end
  end

  def test_the_full_mail
    assert_mail :from     => '[email protected]',
                :to       => '[email protected]',
                :cc       => '[email protected]',
                :bcc      => '[email protected]',
                :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 => '[email protected]' do
      this_should_not_send_an_email
    end
  end

end

Changelog

Look at the CHANGELOG for details.

Authors

How to contribute

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Added some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request