Skip to content

Commit 56c35f3

Browse files
committed
Add MessageLogger so we can look at logs later
1 parent e3cbb42 commit 56c35f3

File tree

2 files changed

+92
-0
lines changed

2 files changed

+92
-0
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
module GithubHook
2+
class MessageLogger
3+
attr_reader :messages, :wrapped_logger
4+
5+
def initialize(wrapped_logger = nil)
6+
@messages = []
7+
@wrapped_logger = wrapped_logger
8+
end
9+
10+
def debug(message = yield)
11+
add_message(:debug, message)
12+
end
13+
14+
def error(message = yield)
15+
add_message(:error, message)
16+
end
17+
18+
def fatal(message = yield)
19+
add_message(:fatal, message)
20+
end
21+
22+
def info(message = yield)
23+
add_message(:info, message)
24+
end
25+
26+
def warn(message = yield)
27+
add_message(:warn, message)
28+
end
29+
30+
private
31+
32+
def add_message(level, message)
33+
if wrapped_logger
34+
wrapped_logger.send(level, message)
35+
end
36+
37+
@messages << {
38+
:level => level.to_s,
39+
:message => message
40+
}
41+
end
42+
end
43+
end
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# require 'test_helper'
2+
require "test/unit"
3+
require_relative "../../../app/services/github_hook/message_logger"
4+
5+
class MessageLoggerTest < Test::Unit::TestCase
6+
setup do
7+
@logger = GithubHook::MessageLogger.new
8+
end
9+
10+
def test_adds_messages_to_an_array
11+
logger.info "Testing"
12+
assert_equal [
13+
{:level => "info", :message => "Testing"}
14+
], logger.messages
15+
end
16+
17+
def test_supports_standard_log_levels
18+
levels = ["fatal", "error", "warn", "info", "debug"]
19+
levels.each do |level|
20+
logger.public_send(level, level)
21+
end
22+
assert_equal levels, logger.messages.map { |m| m[:level] }
23+
end
24+
25+
def test_supports_blocks
26+
logger.debug { "This is my message" }
27+
assert_equal [
28+
{:level => "debug", :message => "This is my message"}
29+
], logger.messages
30+
end
31+
32+
def test_logs_to_a_wrapped_logger_as_well
33+
wrapped_logger = GithubHook::MessageLogger.new
34+
logger = GithubHook::MessageLogger.new(wrapped_logger)
35+
logger.debug "This goes everywhere"
36+
assert_equal [
37+
:level => "debug", :message => "This goes everywhere"
38+
], logger.messages
39+
assert_equal [
40+
:level => "debug", :message => "This goes everywhere"
41+
], wrapped_logger.messages
42+
end
43+
44+
private
45+
46+
def logger
47+
@logger ||= GithubHook::MessageLogger.new
48+
end
49+
end

0 commit comments

Comments
 (0)