Sha256: 6440dfaaae57bdd416157d38e2bf180a1dfd4eaf4e708c82a92ae8b334c3265c

Contents?: true

Size: 1.95 KB

Versions: 1

Compression:

Stored size: 1.95 KB

Contents

require File.expand_path("../../helper", __FILE__)

require 'active_support'
require 'active_support/json'
require 'action_view'
require 'action_view/helpers'

class JavascriptEscapeTest < Minitest::Test
  ActiveSupport.escape_html_entities_in_json = true

  module ActionViewHelper
    include ActionView::Helpers::JavaScriptHelper
    extend self
  end

  def test_returns_empty_string_if_nil_passed
    assert_compatible nil
  end

  def test_quotes_and_newlines
    assert_compatible %(This "thing" is really\n netos\r\n\n')
  end

  def test_backslashes
    assert_compatible %(backslash\\test)
  end

  def test_closed_html_tags
    assert_compatible %(keep <open>, but dont </close> tags)
  end

  def test_escape_javascript
    assert_compatible 123
    assert_compatible :en
    assert_compatible false
    assert_compatible true
    assert_compatible %(don't </close> tags)
    assert_compatible (+%(unicode \342\200\250 newline)).force_encoding(Encoding::UTF_8).encode!
    assert_compatible (+%(unicode \342\200\251 newline)).force_encoding(Encoding::UTF_8).encode!
    assert_compatible %(don't </close> tags)
  end

  def test_escape_backtick
    assert_compatible "`"
  end

  def test_escape_dollar_sign
    assert_compatible "$"
  end

  def test_input_must_be_utf8_or_ascii
    str = "dont </close> tags"

    str.force_encoding Encoding::ISO_8859_1
    assert_raises Encoding::CompatibilityError do
      EscapeUtils.escape_javascript(str)
    end

    str.force_encoding Encoding::UTF_8
    begin
      EscapeUtils.escape_javascript(str)
    rescue Encoding::CompatibilityError => e
      assert_nil e, "#{e.class.name} raised, expected not to"
    end
  end

  def test_return_value_is_tagged_as_utf8
    str = "dont </close> tags"
    assert_equal Encoding::UTF_8, EscapeUtils.escape_javascript(str).encoding
  end

  private

  def assert_compatible(src)
    assert_equal(
      ActionViewHelper.escape_javascript(src),
      EscapeUtils.escape_javascript(src),
    )
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
escape_utils-1.2.2 test/javascript/escape_test.rb