Lots going on
[lyrix.git] / vendor / rails / actionpack / test / template / benchmark_helper_test.rb
blob85f08bc6a030451392c818b55c5f99a7a9ded83d
1 require "#{File.dirname(__FILE__)}/../abstract_unit"
2 require 'action_view/helpers/benchmark_helper'
4 class BenchmarkHelperTest < Test::Unit::TestCase
5   include ActionView::Helpers::BenchmarkHelper
7   class MockLogger
8     attr_reader :logged
10     def initialize
11       @logged = []
12     end
14     def method_missing(method, *args)
15       @logged << [method, args]
16     end
17   end
19   def setup
20     @logger = MockLogger.new
21   end
23   def test_without_logger_or_block
24     @logger = nil
25     assert_nothing_raised { benchmark }
26   end
28   def test_without_block
29     assert_raise(LocalJumpError) { benchmark }
30     assert @logger.logged.empty?
31   end
33   def test_without_logger
34     @logger = nil
35     i_was_run = false
36     benchmark { i_was_run = true }
37     assert !i_was_run
38   end
40   def test_defaults
41     i_was_run = false
42     benchmark { i_was_run = true }
43     assert i_was_run
44     assert 1, @logger.logged.size
45     assert_last_logged
46   end
48   def test_with_message
49     i_was_run = false
50     benchmark('test_run') { i_was_run = true }
51     assert i_was_run
52     assert 1, @logger.logged.size
53     assert_last_logged 'test_run'
54   end
56   def test_with_message_and_level
57     i_was_run = false
58     benchmark('debug_run', :debug) { i_was_run = true }
59     assert i_was_run
60     assert 1, @logger.logged.size
61     assert_last_logged 'debug_run', :debug
62   end
64   private
65     def assert_last_logged(message = 'Benchmarking', level = :info)
66       last = @logger.logged.last
67       assert 2, last.size
68       assert_equal level, last.first
69       assert 1, last[1].size
70       assert last[1][0] =~ /^#{message} \(.*\)$/
71     end
72 end