lindo
Enables rendering of the body of an HTTP response from inside controller and integration tests. This makes it easy to diagnose problems when building assert_select statements or just sanity check the output of the test.
Installation
Install the gem standalone:
sudo gem install lindo
Or install the gem in your Rails project:
config.gem 'lindo' # add this line to environment.rb
rake gems:install
You may have to require and extend the Lindo module from your test or spec helper if you use sessions in your integration tests:
require 'lindo'
session.extend Lindo
Usage
Insert the vr method in your functional test immediately after an HTTP request has been sent:
def test_new
post :new
vr
assert_select "div[id=header]"
end
vr attempts to open the response body in the default web browser. If you want to open the raw HTML in the default text editor instead, simply pass the :html symbol to the method:
def test_new
post :new
vr(:html)
...
end
By default, vr looks for an instance variable named @response and calls the #body method on it. If your page body is stored in a different variable (such as when testing a mailer) you can pass the raw HTML directly to vr and it will do the right thing:
def test_mailer
mail = Mailer.create_notification
vr(mail.body)
...
end
Compatibility
Lindo works with test/spec, test/unit, RSpec, and Cucumber. When testing with RSpec, ensure your controllers are using integrate_views otherwise nothing will show up when the browser opens. To use Lindo with Cucumber, a custom step can be written. It could look something like this:
Then /^render the current page$/ do
extend Lindo
vr
end
Running Unit Tests
Use the rake command to run the unit tests for the plugin. The tests require that the Mocha gem be installed locally:
sudo gem install mocha
Resources
Repository: github.com/adeptware/lindo/ Blog: adeptware.com/blog Author: Adeptware, Inc.