Plugins - Helper Me Test
Add to favoritesHelper Me Test
Providing quick and easy ways to create and write tests for your Rails helpers.
Features
Assertions / Test Helper Methods
- Tag Assertions:
assert_tag_inandassert_tag_not_inmirror theassert_tagmethod built into Rails. They work with the same option, only that they need a target string as the first parameter.
- Selector Assertion:
assert_select_inworks almost identically toassert_selectdoes in Rails. It allows for a CSS selector to be matched against a HTML string target. It also accepts an equality expression and can be nested likeassert_select.
- Hpricot Assertion:
assert_hpricot_in, andassert_hpricot_not_intest that a given CSS or XPath expression can be found in an HTML string. See Hpricot documentation for details.
Generators
- Helper Test Generator:
- Usage:
script/generate helper_tests [SampleHelper Admin::AnotherHelper ...]
- Creates helper tests for each helper you currently have, creating one test for each public method in the module. If you instead pass it a space separated set of helper module names you'll only generate tests for those.
- You can also pass it an option of
--skip-method-testsand it won't create tests for each of the helper methods.
- Usage:
- Helper Generator:
- Usage:
script/generate helper HelperName [methods ...]
- Creates a helper based on a camelcased or underscored name, and a test file for it. It will also accept a list of method names and create methods for each of them and a test for each of the methods.
- Usage:
Rake Tasks
I've also provided a rake task for running the generated helper tests, rake test:helpers
and changed the rake test task to run that test task in a addition to the other
test tasks.
Examples
Using Tag Assertions:
def test_some_html_string_with_assert_tag_in
html = "<div><ul id="list"><li>one</li><li>two</li></ul><p id="content">hello world</p></div>"
assert_tag_in html, :ul, :attributes => {:id => 'list'}, :child => {:tag => 'li'}
assert_tag_in html, :p
end
Using Selector Assertions:
def test_some_html_string_with_assert_select_in
html = "<div><ul id="list"><li>one</li><li>two</li></ul><p id="content">hello world</p></div>"
assert_select_in html 'ul#list' do
assert_select_in 'li'
end
assert_select_in html,'p#content', 'hello world'
end
Using Hpricot Methods
def test_some_html_string_with_assert_hpricot_in
html = "<div><ul id="list"><li>one</li><li>two</li></ul><p id="content">hello world</p></div>"
assert_hpricot_in html, 'ul[@id="list"][li="one"]'
assert_hpricot_in html, 'p[@id="content"]'
end
Additional Documentation
http://github.com/vigetlabs/helper_me_test/
git://github.com/vigetlabs/helper_me_test.git
Rails' (MIT)
Testing
