Froze rails gems
[depot.git] / vendor / rails / actionpack / test / template / benchmark_helper_test.rb
diff --git a/vendor/rails/actionpack/test/template/benchmark_helper_test.rb b/vendor/rails/actionpack/test/template/benchmark_helper_test.rb
new file mode 100644 (file)
index 0000000..08d453c
--- /dev/null
@@ -0,0 +1,60 @@
+require 'abstract_unit'
+require 'action_view/helpers/benchmark_helper'
+
+class BenchmarkHelperTest < ActionView::TestCase
+  tests ActionView::Helpers::BenchmarkHelper
+
+  class MockLogger
+    attr_reader :logged
+
+    def initialize
+      @logged = []
+    end
+
+    def method_missing(method, *args)
+      @logged << [method, args]
+    end
+  end
+
+  def controller
+    @controller ||= Struct.new(:logger).new(MockLogger.new)
+  end
+
+  def test_without_block
+    assert_raise(LocalJumpError) { benchmark }
+    assert controller.logger.logged.empty?
+  end
+
+  def test_defaults
+    i_was_run = false
+    benchmark { i_was_run = true }
+    assert i_was_run
+    assert 1, controller.logger.logged.size
+    assert_last_logged
+  end
+
+  def test_with_message
+    i_was_run = false
+    benchmark('test_run') { i_was_run = true }
+    assert i_was_run
+    assert 1, controller.logger.logged.size
+    assert_last_logged 'test_run'
+  end
+
+  def test_with_message_and_level
+    i_was_run = false
+    benchmark('debug_run', :debug) { i_was_run = true }
+    assert i_was_run
+    assert 1, controller.logger.logged.size
+    assert_last_logged 'debug_run', :debug
+  end
+
+  private
+    def assert_last_logged(message = 'Benchmarking', level = :info)
+      last = controller.logger.logged.last
+      assert 2, last.size
+      assert_equal level, last.first
+      assert 1, last[1].size
+      assert last[1][0] =~ /^#{message} \(.*\)$/
+    end
+end