Module: Sanitize::Rails::TestHelpers
- Defined in:
- lib/sanitize/rails/test_helpers.rb
Overview
Test instrumentation
Class Method Summary collapse
- .invalid ⇒ Object
-
.setup(base, options = {}) ⇒ Object
Instruments the given base class with the
assert_sanitizes
helper, and memoizes the given options, accessible from the helper itself via thevalid
andinvalid
methods. - .valid ⇒ Object
Instance Method Summary collapse
-
#assert_sanitizes(klass, *fields) ⇒ Object
Verifies that the given ‘klass` sanitizes the given `fields`, by checking both the presence of the sanitize callback and that it works as expected, by setting the
invalid
string first, invoking the callback and then checking that the string has been changed into thevalid
one.
Class Method Details
.invalid ⇒ Object
27 |
# File 'lib/sanitize/rails/test_helpers.rb', line 27 def invalid; @@options[:invalid] rescue nil end |
.setup(base, options = {}) ⇒ Object
Instruments the given base class with the assert_sanitizes
helper, and memoizes the given options, accessible from the helper itself via the valid
and invalid
methods.
Those methods contains two HTML strings, one assumed to be “invalid” and the other, well, “valid”.
In your ActiveSupport::Testcase:
Sanitize::Rails::TestHelpers.setup(self,
:invalid => 'some <a>string',
:valid => 'some <a>string</a>'
)
21 22 23 24 |
# File 'lib/sanitize/rails/test_helpers.rb', line 21 def setup(base, = {}) base.instance_eval { include TestHelpers } @@options = end |
.valid ⇒ Object
26 |
# File 'lib/sanitize/rails/test_helpers.rb', line 26 def valid; @@options[:valid] rescue nil end |
Instance Method Details
#assert_sanitizes(klass, *fields) ⇒ Object
Verifies that the given ‘klass` sanitizes the given `fields`, by checking both the presence of the sanitize callback and that it works as expected, by setting the invalid
string first, invoking the callback and then checking that the string has been changed into the valid
one.
If you pass an Hash as the last argument, it can contain ‘:valid`, `:invalid` and `:object` keys. The first two ones override the configured defaults, while the third executes assertions on the specified object. If no :object is given, a new object is instantiated by the given `klass` with no arguments.
If neither ‘:valid`/`:invalid` strings are configured nor are passed via the options, the two default strings in the method source are used.
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/sanitize/rails/test_helpers.rb', line 46 def assert_sanitizes(klass, *fields) = fields. sanitizer = Engine.method_for(fields) # Verify the callback works invalid = [:invalid] || TestHelpers.invalid || '<b>ntani<br>' valid = [:valid] || TestHelpers.valid || '<b>ntani<br /></b>' object = [:object] || klass.new fields.each {|field| object.send("#{field}=", invalid) } object.send sanitizer fields.each {|field| assert_equal(valid, object.send(field)) } end |