class TestERBTemplate
Constants
- ERBHandler
Public Instance Methods
new_template(body = "<%= hello %>", details = { format: :html })
click to toggle source
# File actionview/test/template/template_test.rb, line 57 def new_template(body = "<%= hello %>", details = { format: :html }) ActionView::Template.new(body.dup, "hello template", details.fetch(:handler) { ERBHandler }, { virtual_path: "hello" }.merge!(details)) end
render(locals = {})
click to toggle source
# File actionview/test/template/template_test.rb, line 61 def render(locals = {}) @template.render(@context, locals) end
setup()
click to toggle source
# File actionview/test/template/template_test.rb, line 65 def setup @context = Context.new end
test_basic_template()
click to toggle source
# File actionview/test/template/template_test.rb, line 69 def test_basic_template @template = new_template assert_equal "Hello", render end
test_basic_template_does_html_escape()
click to toggle source
# File actionview/test/template/template_test.rb, line 74 def test_basic_template_does_html_escape @template = new_template("<%= apostrophe %>") assert_equal "l'apostrophe", render end
test_default_external_works()
click to toggle source
This test ensures that if the default_external is set to something other than UTF-8, we don't get any errors and get back a UTF-8 String
.
# File actionview/test/template/template_test.rb, line 157 def test_default_external_works with_external_encoding "ISO-8859-1" do @template = new_template("hello \xFCmlat") assert_equal Encoding::UTF_8, render.encoding assert_equal "hello \u{fc}mlat", render end end
test_encoding_can_be_specified_with_magic_comment()
click to toggle source
# File actionview/test/template/template_test.rb, line 165 def test_encoding_can_be_specified_with_magic_comment @template = new_template("# encoding: ISO-8859-1\nhello \xFCmlat") assert_equal Encoding::UTF_8, render.encoding assert_equal "\nhello \u{fc}mlat", render end
test_encoding_can_be_specified_with_magic_comment_in_erb()
click to toggle source
# File actionview/test/template/template_test.rb, line 181 def test_encoding_can_be_specified_with_magic_comment_in_erb with_external_encoding Encoding::UTF_8 do @template = new_template("<%# encoding: ISO-8859-1 %>hello \xFCmlat", virtual_path: nil) assert_equal Encoding::UTF_8, render.encoding assert_equal "hello \u{fc}mlat", render end end
test_error_when_template_isnt_valid_utf8()
click to toggle source
# File actionview/test/template/template_test.rb, line 189 def test_error_when_template_isnt_valid_utf8 e = assert_raises ActionView::Template::Error do @template = new_template("hello \xFCmlat", virtual_path: nil) render end # Hack: We write the regexp this way because the parser of RuboCop # errs with /\xFC/. assert_match(Regexp.new("\xFC"), e.message) end
test_locals()
click to toggle source
# File actionview/test/template/template_test.rb, line 101 def test_locals @template = new_template("<%= my_local %>") @template.locals = [:my_local] assert_equal "I am a local", render(my_local: "I am a local") end
test_lying_with_magic_comment()
click to toggle source
TODO: This is currently handled inside ERB
. The case of explicitly lying about encodings via the normal Quails
API should be handled inside Quails
.
# File actionview/test/template/template_test.rb, line 174 def test_lying_with_magic_comment assert_raises(ActionView::Template::Error) do @template = new_template("# encoding: UTF-8\nhello \xFCmlat", virtual_path: nil) render end end
test_no_magic_comment_word_with_utf_8()
click to toggle source
# File actionview/test/template/template_test.rb, line 148 def test_no_magic_comment_word_with_utf_8 @template = new_template("hello \u{fc}mlat") assert_equal Encoding::UTF_8, render.encoding assert_equal "hello \u{fc}mlat", render end
test_raw_template()
click to toggle source
# File actionview/test/template/template_test.rb, line 84 def test_raw_template @template = new_template("<%= hello %>", handler: ActionView::Template::Handlers::Raw.new) assert_equal "<%= hello %>", render end
test_refresh_raises_an_error_without_virtual_path()
click to toggle source
# File actionview/test/template/template_test.rb, line 136 def test_refresh_raises_an_error_without_virtual_path @template = new_template("Hello", virtual_path: nil) assert_raise RuntimeError do @template.refresh(@context) end end
test_refresh_with_partials()
click to toggle source
# File actionview/test/template/template_test.rb, line 128 def test_refresh_with_partials @template = new_template("Hello", virtual_path: "test/_foo") @template.locals = [:key] assert_called_with(@context.lookup_context, :find_template, ["foo", %w(test), true, [:key]], returns: "partial") do assert_equal "partial", @template.refresh(@context) end end
test_refresh_with_templates()
click to toggle source
# File actionview/test/template/template_test.rb, line 120 def test_refresh_with_templates @template = new_template("Hello", virtual_path: "test/foo/bar") @template.locals = [:key] assert_called_with(@context.lookup_context, :find_template, ["bar", %w(test/foo), false, [:key]], returns: "template") do assert_equal "template", @template.refresh(@context) end end
test_restores_buffer()
click to toggle source
# File actionview/test/template/template_test.rb, line 107 def test_restores_buffer @template = new_template assert_equal "Hello", render assert_equal "original", @context.my_buffer end
test_resulting_string_is_utf8()
click to toggle source
# File actionview/test/template/template_test.rb, line 143 def test_resulting_string_is_utf8 @template = new_template assert_equal Encoding::UTF_8, render.encoding end
test_template_does_not_lose_its_source_after_rendering_if_it_does_not_have_a_virtual_path()
click to toggle source
# File actionview/test/template/template_test.rb, line 95 def test_template_does_not_lose_its_source_after_rendering_if_it_does_not_have_a_virtual_path @template = new_template("Hello", virtual_path: nil) render assert_equal "Hello", @template.source end
test_template_loses_its_source_after_rendering()
click to toggle source
# File actionview/test/template/template_test.rb, line 89 def test_template_loses_its_source_after_rendering @template = new_template render assert_nil @template.source end
test_text_template_does_not_html_escape()
click to toggle source
# File actionview/test/template/template_test.rb, line 79 def test_text_template_does_not_html_escape @template = new_template("<%= apostrophe %> <%== apostrophe %>", format: :text) assert_equal "l'apostrophe l'apostrophe", render end
test_virtual_path()
click to toggle source
# File actionview/test/template/template_test.rb, line 113 def test_virtual_path @template = new_template("<%= @virtual_path %>" \ "<%= partial.render(self, {}) %>" \ "<%= @virtual_path %>") assert_equal "hellopartialhello", render end
with_external_encoding(encoding) { || ... }
click to toggle source
# File actionview/test/template/template_test.rb, line 199 def with_external_encoding(encoding) old = Encoding.default_external Encoding::Converter.new old, encoding if old != encoding silence_warnings { Encoding.default_external = encoding } yield ensure silence_warnings { Encoding.default_external = old } end