aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/test/broadcast_logger_test.rb
blob: 6d4e3b74f70c85e8532e28033de990d8f4efb366 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
require 'abstract_unit'

module ActiveSupport
  class BroadcastLoggerTest < TestCase
    attr_reader :logger, :log1, :log2
    def setup
      @log1 = FakeLogger.new
      @log2 = FakeLogger.new
      @log1.extend Logger.broadcast @log2
      @logger = @log1
    end

    def test_debug
      logger.debug "foo"
      assert_equal 'foo', log1.adds.first[2]
      assert_equal 'foo', log2.adds.first[2]
    end

    def test_close
      logger.close
      assert log1.closed, 'should be closed'
      assert log2.closed, 'should be closed'
    end

    def test_chevrons
      logger << "foo"
      assert_equal %w{ foo }, log1.chevrons
      assert_equal %w{ foo }, log2.chevrons
    end

    def test_level
      assert_nil logger.level
      logger.level = 10
      assert_equal 10, log1.level
      assert_equal 10, log2.level
    end

    def test_progname
      assert_nil logger.progname
      logger.progname = 10
      assert_equal 10, log1.progname
      assert_equal 10, log2.progname
    end

    def test_formatter
      assert_nil logger.formatter
      logger.formatter = 10
      assert_equal 10, log1.formatter
      assert_equal 10, log2.formatter
    end

    class FakeLogger
      attr_reader :adds, :closed, :chevrons
      attr_accessor :level, :progname, :formatter

      def initialize
        @adds      = []
        @closed    = false
        @chevrons  = []
        @level     = nil
        @progname  = nil
        @formatter = nil
      end

      def debug msg, &block
        add(:omg, nil, msg, &block)
      end

      def << x
        @chevrons << x
      end

      def add(*args)
        @adds << args
      end

      def close
        @closed = true
      end
    end
  end
end