Module: Sanitize::Rails::TestHelpers
- Defined in:
- lib/sanitize/rails.rb
Overview
Test instrumentation
Class Method Summary collapse
- .invalid ⇒ Object
-
.setup(base, options = {}) ⇒ Object
Instruments the given base class with the
assert_sanitizeshelper, and memoizes the given options, accessible from the helper itself via thevalidandinvalidmethods. - .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
invalidstring first, invoking the callback and then checking that the string has been changed into thevalidone.
Class Method Details
.invalid ⇒ Object
158 |
# File 'lib/sanitize/rails.rb', line 158 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>'
)
152 153 154 155 |
# File 'lib/sanitize/rails.rb', line 152 def setup(base, = {}) base.instance_eval { include TestHelpers } @@options = end |
.valid ⇒ Object
157 |
# File 'lib/sanitize/rails.rb', line 157 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.
177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 |
# File 'lib/sanitize/rails.rb', line 177 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 |