1 require 'abstract_unit'
2 require 'controller/fake_models'
4 uses_mocha
'TestTemplateRecompilation' do
5 class CompiledTemplatesTest
< Test
::Unit::TestCase
7 @compiled_templates = ActionView
::Base::CompiledTemplates
8 @compiled_templates.instance_methods
.each
do |m
|
9 @compiled_templates.send(:remove_method, m
) if m
=~
/^_run_/
13 def test_template_gets_compiled
14 assert_equal
0, @compiled_templates.instance_methods
.size
16 assert_equal
"Hello world!", render("test
/hello_world
.erb
")
18 assert_equal 1, @compiled_templates.instance_methods.size
21 def test_template_gets_recompiled_when_using_different_keys_in_local_assigns
22 assert_equal 0, @compiled_templates.instance_methods.size
24 assert_equal "Hello world!
", render("test
/hello_world
.erb
")
25 assert_equal "Hello world!
", render("test
/hello_world
.erb
", {:foo => "bar
"})
27 assert_equal 2, @compiled_templates.instance_methods.size
30 def test_compiled_template_will_not_be_recompiled_when_rendered_with_identical_local_assigns
31 assert_equal 0, @compiled_templates.instance_methods.size
33 assert_equal "Hello world!
", render("test
/hello_world
.erb
")
34 ActionView::Template.any_instance.expects(:compile!).never
35 assert_equal
"Hello world!", render("test
/hello_world
.erb
")
39 def test_compiled_template_will_always_be_recompiled_when_eager_loaded_templates_is_off
40 ActionView::PathSet::Path.expects(:eager_load_templates?).times(4).returns(false)
41 assert_equal 0, @compiled_templates.instance_methods.size
44 assert_equal "Hello world!
", render("#{FIXTURE_LOAD_PATH}/test/hello_world
.erb
")
47 ActionView::Template.any_instance.expects(:compile!).times(3)
49 3.times
{ assert_equal
"Hello world!", render("#{FIXTURE_LOAD_PATH}/test/hello_world
.erb
") }
51 assert_equal 1, @compiled_templates.instance_methods.size
56 ActionView::Base.new(ActionController::Base.view_paths, {}).render(*args)