diff --git a/actionpack/test/abstract_unit.rb b/actionpack/test/abstract_unit.rb index bc7c80f1ce..2733ed95da 100644 --- a/actionpack/test/abstract_unit.rb +++ b/actionpack/test/abstract_unit.rb @@ -18,8 +18,10 @@ ActionController::Routing::Routes.reload rescue nil # Wrap tests that use Mocha and skip if unavailable. def uses_mocha(test_name) - require 'mocha' - require 'stubba' + unless Object.const_defined?(:Mocha) + require 'mocha' + require 'stubba' + end yield rescue LoadError $stderr.puts "Skipping #{test_name} tests. `gem install mocha` and try again." diff --git a/actionpack/test/template/base_test.rb b/actionpack/test/template/base_test.rb new file mode 100644 index 0000000000..754c38f393 --- /dev/null +++ b/actionpack/test/template/base_test.rb @@ -0,0 +1,38 @@ +require "#{File.dirname(__FILE__)}/../abstract_unit" +require "#{File.dirname(__FILE__)}/../testing_sandbox" + +class ActionViewTemplateTest < Test::Unit::TestCase + include TestingSandbox + + uses_mocha "Action View Templates" do + def setup + @template = ActionView::Base.new + end + + def test_should_find_delegated_extension + @template.expects(:delegate_template_exists?).with('foo').returns(['foo']) + assert_equal :foo, @template.send(:find_template_extension_for, 'foo') + end + + def test_should_find_erb_extension + @template.expects(:delegate_template_exists?).with('foo').returns(nil) + @template.expects(:erb_template_exists?).with('foo').returns(:erb) + assert_equal :erb, @template.send(:find_template_extension_for, 'foo') + end + + def test_should_find_builder_extension + @template.expects(:delegate_template_exists?).with('foo').returns(nil) + @template.expects(:erb_template_exists?).with('foo').returns(nil) + @template.expects(:builder_template_exists?).with('foo').returns(:builder) + assert_equal :builder, @template.send(:find_template_extension_for, 'foo') + end + + def test_should_find_javascript_extension + @template.expects(:delegate_template_exists?).with('foo').returns(nil) + @template.expects(:erb_template_exists?).with('foo').returns(nil) + @template.expects(:builder_template_exists?).with('foo').returns(nil) + @template.expects(:javascript_template_exists?).with('foo').returns(true) + assert_equal :rjs, @template.send(:find_template_extension_for, 'foo') + end + end +end \ No newline at end of file