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
)