Here is an enahnced version of Scott Raymond’s assert_valid_markup
plugin that I use in my projects. Below are the directions for use;
HowTo Validate (X)HTML
1 . Calling the assertion with no parameters validates
2 . whatever is in @request . body , which is automatically
3 . set by the existing get / post / etc helpers . For example:
class FooControllerTest & lt ; Test :: Unit :: TestCase
def test \ _bar \ _markup
get :bar
assert \ _valid \ _markup
end
end
1 . Add a string parameter to the assertion to validate
2 . any random fragment . For example:
class FooControllerTest & lt ; Test :: Unit :: TestCase
def test \ _bar \ _markup
assert \ _valid \ _markup "
<div>
Hello, world.
</div>
"
end
end
1 . For the ultimate in convenience , use the class - level
2 . method to validate a number of actions in one line .
class FooControllerTest & lt ; Test :: Unit :: TestCase
assert \ _valid \ _markup :bar , :baz , :qux
end
HowTo Validate CSS
1 . Pass a string parameter to the assertion to validate
2 . a css fragment . For example:
class FooControllerTest & lt ; Test :: Unit :: TestCase
def test \ _bar \ _css
filename = “ \ #{RAILS\_ROOT}/public/stylesheets/bar.css”
assert \ _valid \ _css ( File . open ( filename , ‘ rb ’ ). read )
end
end
1 . For the ultimate in convenience , use the class - level
2 . method to validate a bunch of css files in one line .
3 . Assumes that the CSS files are relative to
4 . $RAILS \ _ROOT / public /stylesheets/ and end with ‘ . css ’ .
5 . The following example validates
6 . $RAILS \ _ROOT / public /stylesheets/ layout . css ,
7 . $RAILS \ _ROOT / public /stylesheets/s tandard . css and
8 . $RAILS \ _ROOT / public /stylesheets/ theme . css
class FooControllerTest & lt ; Test :: Unit :: TestCase
assert \ _valid \ _css \ _files ‘ layout ’ , ‘ standard ’ , ‘ theme ’
end
Most of the credit for this plugin goes to Scott for the initial idea! The modifications that I made include;
Validation of CSS files.
Caching of fragments occurs in $RAILS_ROOT/tmp
according to the name of the test class + test method. This avoids filling up the system temp folder with expired cache files.
Ability to turn off validation by setting the “NONET” environment variable to “true”.
Update 12th of May, 2010
The plugin is now available on GitHub. See the GitHub project page